{"abi":[{"type":"constructor","inputs":[{"name":"_registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_WEIGHING_FUNCTION_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"WEIGHTING_DIVISOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addStrategies","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"_strategyParams","type":"tuple[]","internalType":"struct IStakeRegistry.StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getCurrentStake","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTotalStake","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getLatestStakeUpdate","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeAtBlockNumber","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getStakeAtBlockNumberAndIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getStakeHistory","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IStakeRegistry.StakeUpdate[]","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeHistoryLength","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeUpdateAtIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"getStakeUpdateIndexAtBlockNumber","inputs":[{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeAtBlockNumberFromIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeHistoryLength","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeIndicesAtBlockNumber","inputs":[{"name":"blockNumber","type":"uint32","internalType":"uint32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeUpdateAtIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StakeUpdate","components":[{"name":"updateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"nextUpdateBlockNumber","type":"uint32","internalType":"uint32"},{"name":"stake","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"initializeQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"minimumStake","type":"uint96","internalType":"uint96"},{"name":"_strategyParams","type":"tuple[]","internalType":"struct IStakeRegistry.StrategyParams[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"minimumStakeForQuorum","inputs":[{"name":"","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"modifyStrategyParams","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"strategyIndices","type":"uint256[]","internalType":"uint256[]"},{"name":"newMultipliers","type":"uint96[]","internalType":"uint96[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint96[]","internalType":"uint96[]"},{"name":"","type":"uint96[]","internalType":"uint96[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeStrategies","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"indicesToRemove","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinimumStakeForQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"minimumStake","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"strategiesPerQuorum","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"strategyParams","inputs":[{"name":"","type":"uint8","internalType":"uint8"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"function","name":"strategyParamsByIndex","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IStakeRegistry.StrategyParams","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]}],"stateMutability":"view"},{"type":"function","name":"strategyParamsLength","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateOperatorStake","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorId","type":"bytes32","internalType":"bytes32"},{"name":"quorumNumbers","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint192","internalType":"uint192"}],"stateMutability":"nonpayable"},{"type":"function","name":"weightOfOperatorForQuorum","inputs":[{"name":"quorumNumber","type":"uint8","internalType":"uint8"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint96","internalType":"uint96"}],"stateMutability":"view"},{"type":"event","name":"MinimumStakeForQuorumUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"minimumStake","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"event","name":"OperatorStakeUpdate","inputs":[{"name":"operatorId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"quorumNumber","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"stake","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"event","name":"QuorumCreated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"StrategyAddedToQuorum","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false},{"type":"event","name":"StrategyMultiplierUpdated","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"},{"name":"multiplier","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StrategyRemovedFromQuorum","inputs":[{"name":"quorumNumber","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"strategy","type":"address","indexed":false,"internalType":"contract IStrategy"}],"anonymous":false}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b506040516200395838038062003958833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a05161384f620001096000396000818161037a015281816106320152818161096f01528181610ce6015281816111110152818161170301528181611805015281816119290152611ce70152600081816105290152611ea8015261384f6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220e72609fbf7eeabba140d8b0834e2f062dd1d70f05840d79caf271b058dad8ae664736f6c634300080c0033","sourceMap":"960:31820:105:-:0;;;1675:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2269:51:106;;;;;2330:31;;;960:31820:105;;14:153:178;-1:-1:-1;;;;;111:31:178;;101:42;;91:70;;157:1;154;147:12;91:70;14:153;:::o;172:486::-;308:6;316;369:2;357:9;348:7;344:23;340:32;337:52;;;385:1;382;375:12;337:52;417:9;411:16;436:53;483:5;436:53;:::i;:::-;558:2;543:18;;537:25;508:5;;-1:-1:-1;571:55:178;537:25;571:55;:::i;:::-;645:7;635:17;;;172:486;;;;;:::o;:::-;960:31820:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612c27565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612c42565b610597565b604051610217929190612c6c565b61025461024f366004612ca6565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612d21565b610630565b005b61029461028f366004612de2565b610961565b604051610217929190612e81565b6102b56102b0366004612ea6565b610c2c565b6040516102179190612ed2565b61020d6102d0366004612c27565b60ff1660009081526003602052604090205490565b61020d6102f3366004612ea6565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612ea6565b610ccb565b61020d670de0b6b3a764000081565b61027f610345366004612fdb565b610ce4565b61035d610358366004612de2565b611104565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004613097565b61125e565b60405161021791906130e9565b61039c6103fc366004612c42565b611528565b61041461040f366004613127565b611560565b604051610217919061315a565b61043461042f366004612c42565b6115f8565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612c42565b611672565b61027f6104823660046131a6565b611701565b61027f6104953660046131d0565b6117fa565b6102546104a8366004612c27565b6000602081905290815260409020546001600160601b031681565b61027f6104d136600461329c565b611927565b6102546104e43660046132e9565b611a1b565b6102546104f7366004612c27565b611a99565b61050f61050a366004613325565b611aec565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613361565b611b01565b61041461056c366004612ea6565b611b96565b61025461057f366004613325565b611c7b565b61027f6105923660046133a3565b611cdc565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b815260040161061190613400565b60405180910390fd5b60006106268585611e47565b5095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190613451565b6001600160a01b0316336001600160a01b0316146106e25760405162461bcd60e51b81526004016106119061346e565b846106fe8160ff16600090815260016020526040902054151590565b61071a5760405162461bcd60e51b815260040161061190613400565b8380610790576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108055760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561095657858582818110610833576108336134ea565b90506020020160208101906108489190613500565b8289898481811061085b5761085b6134ea565b9050602002013581548110610872576108726134ea565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108db576108db6134ea565b90506020020135815481106108f2576108f26134ea565b6000918252602090912001546001600160a01b0316888885818110610919576109196134ea565b905060200201602081019061092e9190613500565b60405161093c929190612c6c565b60405180910390a28061094e81613531565b915050610819565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ac5760405162461bcd60e51b81526004016106119061354c565b6000836001600160401b038111156109c6576109c6612f4a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b5090506000846001600160401b03811115610a0c57610a0c612f4a565b604051908082528060200260200182016040528015610a35578160200160208202803683370190505b50905060005b85811015610c1e576000878783818110610a5757610a576134ea565b919091013560f81c60008181526001602052604090205490925015159050610adf5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610aec838d611e47565b9150915080610b895760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b968c8585612045565b905082878681518110610bab57610bab6134ea565b60200260200101906001600160601b031690816001600160601b031681525050610bd584826122c5565b868681518110610be757610be76134ea565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610c1690613531565b915050610a3b565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610cbe576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c65565b5050505090505b92915050565b600080610cd88484611b96565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190613451565b6001600160a01b0316336001600160a01b031614610d965760405162461bcd60e51b81526004016106119061346e565b81610db28160ff16600090815260016020526040902054151590565b610dce5760405162461bcd60e51b815260040161061190613400565b815180610e435760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110fb578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610ea257610ea26134ea565b602002602001015181548110610eba57610eba6134ea565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f1857610f186134ea565b602002602001015181548110610f3057610f306134ea565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f70906001906135be565b81548110610f8057610f806134ea565b9060005260206000200183878381518110610f9d57610f9d6134ea565b602002602001015181548110610fb557610fb56134ea565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080611008576110086135d5565b60008281526020812082016000199081019190915501905581548290611030906001906135be565b81548110611040576110406134ea565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110611071576110716134ea565b602002602001015181548110611089576110896134ea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110c7576110c76135d5565b600082815260209020810160001990810180546001600160a01b0319169055019055806110f381613531565b915050610e62565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114e5760405162461bcd60e51b81526004016106119061354c565b6000805b8381101561062657600085858381811061116e5761116e6134ea565b919091013560f81c600081815260016020526040902054909250151590506111fe5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b60008061120b838b611e47565b915091508061122d5760009150600160ff84161b6001600160c01b0386161794505b600061123a8a8585612045565b905061124684826122c5565b5050505050808061125690613531565b915050611152565b60606000826001600160401b0381111561127a5761127a612f4a565b6040519080825280602002602001820160405280156112a3578160200160208202803683370190505b50905060005b8381101561151d5760008585838181106112c5576112c56134ea565b919091013560f81c600081815260016020526040902054909250151590506113645760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061138d5761138d6134ea565b60009182526020909120015463ffffffff1611156114395760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156115075760ff8316600090815260016020819052604090912063ffffffff8b169161147d84866135be565b61148791906135be565b81548110611497576114976134ea565b60009182526020909120015463ffffffff16116114f55760016114ba82846135be565b6114c491906135be565b8585815181106114d6576114d66134ea565b602002602001019063ffffffff16908163ffffffff1681525050611507565b806114ff81613531565b91505061144e565b505050808061151590613531565b9150506112a9565b5090505b9392505050565b6004602052816000526040600020818154811061154457600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115a5576115a56134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805483908110611630576116306134ea565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106116af576116af6134ea565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613451565b6001600160a01b0316336001600160a01b0316146117b35760405162461bcd60e51b81526004016106119061346e565b816117cf8160ff16600090815260016020526040902054151590565b6117eb5760405162461bcd60e51b815260040161061190613400565b6117f5838361243f565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118425760405162461bcd60e51b81526004016106119061354c565b60005b81811015611921576000838383818110611861576118616134ea565b919091013560f81c600081815260016020526040902054909250151590506118f15760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118ff86836000612045565b905061190b82826122c5565b505050808061191990613531565b915050611845565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613451565b6001600160a01b0316336001600160a01b0316146119d95760405162461bcd60e51b81526004016106119061346e565b816119f58160ff16600090815260016020526040902054151590565b611a115760405162461bcd60e51b815260040161061190613400565b6117f583836124a8565b60ff83166000908152600160205260408120805482919084908110611a4257611a426134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cd881856128eb565b60ff81166000908152600160208190526040822080549091611aba916135be565b81548110611aca57611aca6134ea565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611af9848484612a65565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611b3257611b326134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b8981866128eb565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff87168352815284822054855193840186528284529083018290529382015290919081611bef579150610cc59050565b600085815260026020908152604080832060ff881684529091529020611c166001846135be565b81548110611c2657611c266134ea565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cc5915050565b600083815260026020908152604080832060ff861684529091528120611ca2858585612a65565b63ffffffff1681548110611cb857611cb86134ea565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d245760405162461bcd60e51b81526004016106119061354c565b60ff831660009081526001602052604090205415611da25760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611dac83826124a8565b611db6838361243f565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611edb928c92016135eb565b600060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f20919081019061364a565b905060005b838110156120115760ff89166000908152600360205260409020805482908110611f5157611f516134ea565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f9f57611f9f6134ea565b60200260200101511115611fff57670de0b6b3a764000083602001516001600160601b0316838381518110611fd657611fd66134ea565b6020026020010151611fe891906136da565b611ff291906136f9565b611ffc908661371b565b94505b8061200981613531565b915050611f25565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061210957600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff199096169190921617939093171691909117905561226b565b600086815260026020908152604080832060ff8916845290915281206121306001846135be565b81548110612140576121406134ea565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156121795760009350505050611521565b80544363ffffffff908116911614156121b3578054600160401b600160a01b031916600160401b6001600160601b03871602178155612269565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122bb8285612bcb565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122e990846135be565b815481106122f9576122f96134ea565b90600052602060002001905083600014156123285754600160401b90046001600160601b03169150610cc59050565b805460009061234790600160401b90046001600160601b031686612be3565b82549091504363ffffffff90811691161415612384578154600160401b600160a01b031916600160401b6001600160601b03831602178255612436565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b600081511161250d5760405162461bcd60e51b815260206004820152603860248201526000805160206137fa83398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906125308383613746565b11156125a05760405162461bcd60e51b815260206004820152604560248201526000805160206137fa83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128e45760005b6125b88284613746565b811015612699578482815181106125d1576125d16134ea565b6020026020010151600001516001600160a01b0316600360008860ff1660ff1681526020019081526020016000208281548110612610576126106134ea565b6000918252602090912001546001600160a01b031614156126875760405162461bcd60e51b815260206004820152603d60248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b8061269181613531565b9150506125ae565b5060008482815181106126ae576126ae6134ea565b6020026020010151602001516001600160601b0316116127335760405162461bcd60e51b815260206004820152604660248201526000805160206137fa83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff851660009081526003602052604090208451859083908110612759576127596134ea565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127be576127be6134ea565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f540490869084908110612835576128356134ea565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75858381518110612892576128926134ea565b6020026020010151600001518684815181106128b0576128b06134ea565b6020026020010151602001516040516128ca929190612c6c565b60405180910390a2806128dc81613531565b9150506125a3565b5050505050565b816000015163ffffffff168163ffffffff1610156129905760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129b65750816020015163ffffffff168163ffffffff16105b612a615760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612b0657600086815260026020908152604080832060ff89168452909152902063ffffffff851690612ab96001846135be565b81548110612ac957612ac96134ea565b60009182526020909120015463ffffffff1611612af457612aeb6001826135be565b92505050611521565b80612afe8161375e565b915050612a84565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006115216001600160601b03808516908416613775565b600080821215612c0757612bf6826137b4565b612c0090846137d1565b9050610cc5565b612c00828461371b565b803560ff81168114612c2257600080fd5b919050565b600060208284031215612c3957600080fd5b61152182612c11565b60008060408385031215612c5557600080fd5b612c5e83612c11565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612ca357600080fd5b50565b60008060408385031215612cb957600080fd5b612cc283612c11565b91506020830135612cd281612c8e565b809150509250929050565b60008083601f840112612cef57600080fd5b5081356001600160401b03811115612d0657600080fd5b6020830191508360208260051b850101111561203e57600080fd5b600080600080600060608688031215612d3957600080fd5b612d4286612c11565b945060208601356001600160401b0380821115612d5e57600080fd5b612d6a89838a01612cdd565b90965094506040880135915080821115612d8357600080fd5b50612d9088828901612cdd565b969995985093965092949392505050565b60008083601f840112612db357600080fd5b5081356001600160401b03811115612dca57600080fd5b60208301915083602082850101111561203e57600080fd5b60008060008060608587031215612df857600080fd5b8435612e0381612c8e565b93506020850135925060408501356001600160401b03811115612e2557600080fd5b612e3187828801612da1565b95989497509550505050565b600081518084526020808501945080840160005b83811015612e765781516001600160601b031687529582019590820190600101612e51565b509495945050505050565b604081526000612e946040830185612e3d565b82810360208401526124368185612e3d565b60008060408385031215612eb957600080fd5b82359150612ec960208401612c11565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57612f2b83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612eee565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f8257612f82612f4a565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612fb057612fb0612f4a565b604052919050565b60006001600160401b03821115612fd157612fd1612f4a565b5060051b60200190565b60008060408385031215612fee57600080fd5b612ff783612c11565b91506020808401356001600160401b0381111561301357600080fd5b8401601f8101861361302457600080fd5b803561303761303282612fb8565b612f88565b81815260059190911b8201830190838101908883111561305657600080fd5b928401925b828410156130745783358252928401929084019061305b565b80955050505050509250929050565b803563ffffffff81168114612c2257600080fd5b6000806000604084860312156130ac57600080fd5b6130b584613083565b925060208401356001600160401b038111156130d057600080fd5b6130dc86828701612da1565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612f3e57835163ffffffff1683529284019291840191600101613105565b60008060006060848603121561313c57600080fd5b61314584612c11565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cc5565b80356001600160601b0381168114612c2257600080fd5b600080604083850312156131b957600080fd5b6131c283612c11565b9150612ec96020840161318f565b6000806000604084860312156131e557600080fd5b8335925060208401356001600160401b038111156130d057600080fd5b600082601f83011261321357600080fd5b8135602061322361303283612fb8565b82815260069290921b8401810191818101908684111561324257600080fd5b8286015b84811015613291576040818903121561325f5760008081fd5b613267612f60565b813561327281612c8e565b815261327f82860161318f565b81860152835291830191604001613246565b509695505050505050565b600080604083850312156132af57600080fd5b6132b883612c11565b915060208301356001600160401b038111156132d357600080fd5b6132df85828601613202565b9150509250929050565b6000806000606084860312156132fe57600080fd5b61330784612c11565b925061331560208501613083565b9150604084013590509250925092565b60008060006060848603121561333a57600080fd5b8335925061334a60208501612c11565b915061335860408501613083565b90509250925092565b6000806000806080858703121561337757600080fd5b61338085612c11565b935061338e60208601613083565b93969395505050506040820135916060013590565b6000806000606084860312156133b857600080fd5b6133c184612c11565b92506133cf6020850161318f565b915060408401356001600160401b038111156133ea57600080fd5b6133f686828701613202565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561346357600080fd5b815161152181612c8e565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561351257600080fd5b6115218261318f565b634e487b7160e01b600052601160045260246000fd5b60006000198214156135455761354561351b565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135d0576135d061351b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561363c57855485168352600195860195928401920161361e565b509098975050505050505050565b6000602080838503121561365d57600080fd5b82516001600160401b0381111561367357600080fd5b8301601f8101851361368457600080fd5b805161369261303282612fb8565b81815260059190911b820183019083810190878311156136b157600080fd5b928401925b828410156136cf578351825292840192908401906136b6565b979650505050505050565b60008160001904831182151516156136f4576136f461351b565b500290565b60008261371657634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b0380831681851680830382111561373d5761373d61351b565b01949350505050565b600082198211156137595761375961351b565b500190565b60008161376d5761376d61351b565b506000190190565b60008083128015600160ff1b8501841216156137935761379361351b565b6001600160ff1b03840183138116156137ae576137ae61351b565b50500390565b6000600160ff1b8214156137ca576137ca61351b565b5060000390565b60006001600160601b03838116908316818110156137f1576137f161351b565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220e72609fbf7eeabba140d8b0834e2f062dd1d70f05840d79caf271b058dad8ae664736f6c634300080c0033","sourceMap":"960:31820:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29348:151;;;;;;:::i;:::-;29453:32;;29427:7;29453:32;;;:18;:32;;;;;:39;;29348:151;;;;508:25:178;;;496:2;481:18;29348:151:105;;;;;;;;2016:56:106;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;23351:268:105:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1747:39:178;;;1729:58;;1717:2;1702:18;23351:268:105;1585:208:178;12019:891:105;;;;;;:::i;:::-;;:::i;:::-;;2913:1550;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;24963:203::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23723:139::-;;;;;;:::i;:::-;23820:28;;23794:7;23820:28;;;:14;:28;;;;;:35;;23723:139;24521:202;;;;;;:::i;:::-;24637:7;24663:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;;;:53;;24521:202;25384:242;;;;;;:::i;:::-;;:::i;748:48:106:-;;792:4;748:48;;10540:1151:105;;;;;;:::i;:::-;;:::i;6652:1876::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8184:32:178;;;8166:51;;8154:2;8139:18;6652:1876:105;8020:203:178;1270:44:106;;;;;;;;-1:-1:-1;;;;;8392:32:178;;;8374:51;;8362:2;8347:18;1270:44:106;8228:203:178;884:55:106;;937:2;884:55;;;;;8608:4:178;8596:17;;;8578:36;;8566:2;8551:18;884:55:106;8436:184:178;31695:1083:105;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2078:56:106:-;;;;;;:::i;:::-;;:::i;26832:236:105:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23984:196::-;;;;;;:::i;:::-;;:::i;:::-;;;;10979:13:178;;-1:-1:-1;;;;;10975:39:178;10957:58;;11075:4;11063:17;;;11057:24;-1:-1:-1;;;;;11053:57:178;11031:20;;;11024:87;;;;10930:18;23984:196:105;10745:372:178;30217:199:105;;;;;;:::i;:::-;;:::i;9210:231::-;;;;;;:::i;:::-;;:::i;5234:982::-;;;;;;:::i;:::-;;:::i;1490:53:106:-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1490:53:106;;;9970:236:105;;;;;;:::i;:::-;;:::i;30953:368::-;;;;;;:::i;:::-;;:::i;29706:188::-;;;;;;:::i;:::-;;:::i;27662:270::-;;;;;;:::i;:::-;;:::i;:::-;;;14385:10:178;14373:23;;;14355:42;;14343:2;14328:18;27662:270:105;14211:192:178;1138:46:106;;;;;28599:413:105;;;;;;:::i;:::-;;:::i;25877:517::-;;;;;;:::i;:::-;;:::i;27183:355::-;;;;;;:::i;:::-;;:::i;8608:596::-;;;;;;:::i;:::-;;:::i;2016:56:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2016:56:106;;;-1:-1:-1;;;;2016:56:106;;-1:-1:-1;;;;;2016:56:106;;-1:-1:-1;2016:56:106;:::o;23351:268:105:-;22902:32;;;23503:6;22902:32;;;:18;:32;;;;;:39;23480:12;;1562:89;;;;-1:-1:-1;;;1562:89:105;;;;;;;:::i;:::-;;;;;;;;;23522:12:::1;23540:50;23567:12;23581:8;23540:26;:50::i;:::-;-1:-1:-1::0;23521:69:105;23351:268;-1:-1:-1;;;;;23351:268:105:o;12019:891::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;12218:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;12262:15:::0;12302:13;12294:90:::2;;;::::0;;-1:-1:-1;;;12294:90:105;;16952:2:178;12294:90:105::2;::::0;::::2;16934:21:178::0;16971:18;;;16964:30;;;;17030:34;17010:18;;;17003:62;17101:34;17081:18;;;17074:62;17153:19;;12294:90:105::2;16750:428:178::0;12294:90:105::2;12402:34:::0;;::::2;12394:104;;;::::0;-1:-1:-1;;;12394:104:105;;17385:2:178;12394:104:105::2;::::0;::::2;17367:21:178::0;17424:2;17404:18;;;17397:30;17463:34;17443:18;;;17436:62;17534:27;17514:18;;;17507:55;17579:19;;12394:104:105::2;17183:421:178::0;12394:104:105::2;12552:28;::::0;::::2;12509:40;12552:28:::0;;;:14:::2;:28;::::0;;;;;12591:313:::2;12615:9;12611:1;:13;12591:313;;;12753:14;;12768:1;12753:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12704:15;12720;;12736:1;12720:18;;;;;;;:::i;:::-;;;;;;;12704:35;;;;;;;;:::i;:::-;;;;;;;;:46;;;:66;;;;;-1:-1:-1::0;;;;;12704:66:105::2;;;;;-1:-1:-1::0;;;;;12704:66:105::2;;;;;;12815:12;12789:104;;;12829:15;12845;;12861:1;12845:18;;;;;;;:::i;:::-;;;;;;;12829:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;:44:::0;-1:-1:-1;;;;;12829:44:105::2;12875:14:::0;;12890:1;12875:17;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12789:104;;;;;;;:::i;:::-;;;;;;;;12626:3:::0;::::2;::::0;::::2;:::i;:::-;;;;12591:313;;;;12232:678;;1496:1:::1;12019:891:::0;;;;;:::o;2913:1550::-;3085:15;;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;3130:29:::1;3175:13:::0;-1:-1:-1;;;;;3162:34:105;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3162:34:105::1;-1:-1:-1::0;3130:66:105;-1:-1:-1;3206:27:105::1;3249:13:::0;-1:-1:-1;;;;;3236:34:105;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3236:34:105::1;;3206:64;;3285:9;3280:1131;3300:24:::0;;::::1;3280:1131;;;3370:18;3397:13;;3411:1;3397:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;3397:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;3428:93:105::1;;;::::0;-1:-1:-1;;;3428:93:105;;19218:2:178;3428:93:105::1;::::0;::::1;19200:21:178::0;19257:2;19237:18;;;19230:30;19296:34;19276:18;;;19269:62;-1:-1:-1;;;19347:18:178;;;19340:51;19408:19;;3428:93:105::1;19016:417:178::0;3428:93:105::1;3674:19;3695:20:::0;3719:50:::1;3746:12;3760:8;3719:26;:50::i;:::-;3673:96;;;;3808:15;3783:165;;;::::0;-1:-1:-1;;;3783:165:105;;19640:2:178;3783:165:105::1;::::0;::::1;19622:21:178::0;19679:2;19659:18;;;19652:30;19718:34;19698:18;;;19691:62;19789:34;19769:18;;;19762:62;19861:29;19840:19;;;19833:58;19908:19;;3783:165:105::1;19438:495:178::0;3783:165:105::1;4006:17;4026:167;4083:10;4126:12;4166;4026:26;:167::i;:::-;4006:187;;4308:12;4289:13;4303:1;4289:16;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1::0;;;;;4289:31:105::1;;;-1:-1:-1::0;;;;;4289:31:105::1;;;::::0;::::1;4351:49;4375:12;4389:10;4351:23;:49::i;:::-;4334:11;4346:1;4334:14;;;;;;;;:::i;:::-;;;;;;:66;-1:-1:-1::0;;;;;4334:66:105::1;;;-1:-1:-1::0;;;;;4334:66:105::1;;;::::0;::::1;3331:1080;;;;3326:3;;;;;:::i;:::-;;;;3280:1131;;;-1:-1:-1::0;4429:13:105;;;;-1:-1:-1;2913:1550:105;-1:-1:-1;;;;;2913:1550:105:o;24963:203::-;25113:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;25106:53;;;;;;;;;;;;;;;;;25074:20;;25106:53;;25113:46;;25106:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25106:53:105;;;;;;;-1:-1:-1;;;25106:53:105;;-1:-1:-1;;;;;25106:53:105;;;;;;;;;;;;;;;;;;;;;;24963:203;;;;;:::o;25384:242::-;25472:6;25490:38;25531:46;25552:10;25564:12;25531:20;:46::i;:::-;25594:25;;;;25384:242;-1:-1:-1;;;;25384:242:105:o;10540:1151::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;10691:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;10740:22:::0;;10780:18;10772:92:::2;;;::::0;-1:-1:-1;;;10772:92:105;;20140:2:178;10772:92:105::2;::::0;::::2;20122:21:178::0;20179:2;20159:18;;;20152:30;20218:34;20198:18;;;20191:62;20289:31;20269:18;;;20262:59;20338:19;;10772:92:105::2;19938:425:178::0;10772:92:105::2;10918:28;::::0;::::2;10875:40;10918:28:::0;;;:14:::2;:28;::::0;;;;;;;10999:19:::2;:33:::0;;;;;10918:28;;11043:642:::2;11067:14;11063:1;:18;11043:642;;;11133:12;11107:85;;;11147:15;11163;11179:1;11163:18;;;;;;;;:::i;:::-;;;;;;;11147:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;::::2;:44:::0;11107:85:::2;::::0;-1:-1:-1;;;;;11147:44:105;;::::2;8374:51:178::0;;8347:18;11107:85:105::2;;;;;;;11237:12;11211:88;;;11251:15;11267;11283:1;11267:18;;;;;;;;:::i;:::-;;;;;;;11251:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;;;::::2;:44:::0;11211:88:::2;::::0;;-1:-1:-1;;;;;11251:44:105;;::::2;20568:51:178::0;;20635:18;;;20628:34;;;;20541:18;11211:88:105::2;;;;;;;11462:22:::0;;11446:15;;11462:26:::2;::::0;11487:1:::2;::::0;11462:26:::2;:::i;:::-;11446:43;;;;;;;;:::i;:::-;;;;;;;;11408:15;11424;11440:1;11424:18;;;;;;;;:::i;:::-;;;;;;;11408:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;:81;;:35;::::2;:81:::0;;-1:-1:-1;;;;;;11408:81:105::2;-1:-1:-1::0;;;;;11408:81:105;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;;;;;;11408:81:105;;;::::2;;;;::::0;;11503:21;;:15;;:21;::::2;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;11503:21:105;;;;;;;;;;11602:27;;11581:20;;11602:31:::2;::::0;11503:21:::2;::::0;11602:31:::2;:::i;:::-;11581:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11581:53:105::2;11538:20;11559:15;11575:1;11559:18;;;;;;;;:::i;:::-;;;;;;;11538:40;;;;;;;;:::i;:::-;;;;;;;;;:96;;;;;-1:-1:-1::0;;;;;11538:96:105::2;;;;;-1:-1:-1::0;;;;;11538:96:105::2;;;;;;11648:20;:26;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;11648:26:105;;;;;-1:-1:-1;;;;;;11648:26:105::2;::::0;;;;;11083:3;::::2;::::0;::::2;:::i;:::-;;;;11043:642;;;;10705:986;;;1496:1:::1;10540:1151:::0;;:::o;6652:1876::-;6823:7;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;6842:23:::1;::::0;7246:1243:::1;7266:24:::0;;::::1;7246:1243;;;7311:18;7338:13;;7352:1;7338:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;7338:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;7369:96:105::1;;;::::0;-1:-1:-1;;;7369:96:105;;21137:2:178;7369:96:105::1;::::0;::::1;21119:21:178::0;21176:2;21156:18;;;21149:30;21215:34;21195:18;;;21188:62;21286:26;21266:18;;;21259:54;21330:19;;7369:96:105::1;20935:420:178::0;7369:96:105::1;7645:18;7665:20:::0;7689:50:::1;7716:12;7730:8;7689:26;:50::i;:::-;7644:95;;;;7875:15;7870:151;;7924:1;::::0;-1:-1:-1;7805:1:117;:8;;;;-1:-1:-1;;;;;7969:22:105;::::1;7795:19:117::0;7943:63:105::1;;7870:151;8170:17;8190:165;8247:10;8289:12;8329:11;8190:26;:165::i;:::-;8170:185;;8429:49;8453:12;8467:10;8429:23;:49::i;:::-;;7297:1192;;;;7292:3;;;;;:::i;:::-;;;;7246:1243;;31695:1083:::0;31833:15;31860:23;31899:13;-1:-1:-1;;;;;31886:34:105;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31886:34:105;;31860:60;;31935:9;31930:818;31950:24;;;31930:818;;;31995:18;32022:13;;32036:1;32022:16;;;;;;;:::i;:::-;;;;;;;;22879:4;22902:32;;;:18;:32;;;;;:39;32022:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;32053:110:105;;;;-1:-1:-1;;;32053:110:105;;21562:2:178;32053:110:105;;;21544:21:178;21601:2;21581:18;;;21574:30;21640:34;21620:18;;;21613:62;21711:34;21691:18;;;21684:62;-1:-1:-1;;;21762:19:178;;;21755:37;21809:19;;32053:110:105;21360:474:178;32053:110:105;32202:32;;;;;;;:18;:32;;;;;:35;;:68;;;;:32;:35;;;;:::i;:::-;;;;;;;;;;:53;;;:68;;32177:218;;;;-1:-1:-1;;;32177:218:105;;22041:2:178;32177:218:105;;;22023:21:178;22080:2;22060:18;;;22053:30;22119:34;22099:18;;;22092:62;22190:34;22170:18;;;22163:62;22262:29;22241:19;;;22234:58;22309:19;;32177:218:105;21839:495:178;32177:218:105;32426:32;;;32409:14;32426:32;;;:18;:32;;;;;:39;;32479:259;32503:6;32499:1;:10;32479:259;;;32538:32;;;;;;;:18;:32;;;;;;;;:81;;;;32571:10;32580:1;32571:6;:10;:::i;:::-;:14;;;;:::i;:::-;32538:48;;;;;;;;:::i;:::-;;;;;;;;;;:66;;;:81;32534:190;;32676:1;32663:10;32672:1;32663:6;:10;:::i;:::-;:14;;;;:::i;:::-;32643:7;32651:1;32643:10;;;;;;;;:::i;:::-;;;;;;:35;;;;;;;;;;;32700:5;;32534:190;32511:3;;;;:::i;:::-;;;;32479:259;;;;31981:767;;31976:3;;;;;:::i;:::-;;;;31930:818;;;-1:-1:-1;32764:7:105;-1:-1:-1;31695:1083:105;;;;;;:::o;2078:56:106:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2078:56:106;;-1:-1:-1;2078:56:106;;-1:-1:-1;2078:56:106:o;26832:236:105:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;27008:32:105;;;:20;:32;;;;;:46;;;;;;;;;;;:53;;27055:5;;27008:53;;;;;;:::i;:::-;;;;;;;;;;27001:60;;;;;;;;27008:53;;;;27001:60;;;;;;;-1:-1:-1;;;27001:60:105;;;;;;;;;;-1:-1:-1;;;27001:60:105;;;-1:-1:-1;;;;;27001:60:105;;;;;;;;;26832:236;-1:-1:-1;;;;26832:236:105:o;23984:196::-;-1:-1:-1;;;;;;;;;;;;;;;;;24138:28:105;;;;;;;:14;:28;;;;;:35;;24167:5;;24138:35;;;;;;:::i;:::-;;;;;;;;;;24131:42;;;;;;;;;24138:35;;24131:42;-1:-1:-1;;;;;24131:42:105;;;;-1:-1:-1;;;24131:42:105;;-1:-1:-1;;;;;24131:42:105;;;;;;;;;23984:196;-1:-1:-1;;;23984:196:105:o;30217:199::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;30370:32:105;;;;;:18;:32;;;;;;:39;;30403:5;;30370:39;;;;;;:::i;:::-;;;;;;;;;;30363:46;;;;;;;;30370:39;;;;30363:46;;;;;;;-1:-1:-1;;;30363:46:105;;;;;;;;;;-1:-1:-1;;;30363:46:105;;;-1:-1:-1;;;;;30363:46:105;;;;;;;;;30217:199;-1:-1:-1;;;30217:199:105:o;9210:231::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;9357:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;9381:53:::2;9407:12;9421;9381:25;:53::i;:::-;1496:1:::1;9210:231:::0;;:::o;5234:982::-;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;5557:9:::1;5552:658;5572:24:::0;;::::1;5552:658;;;5617:18;5644:13;;5658:1;5644:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;22879:4:::0;22902:32;;;:18;:32;;;;;:39;5644:16;;-1:-1:-1;22902:44:105;;;-1:-1:-1;5675:95:105::1;;;::::0;-1:-1:-1;;;5675:95:105;;22541:2:178;5675:95:105::1;::::0;::::1;22523:21:178::0;22580:2;22560:18;;;22553:30;22619:34;22599:18;;;22592:62;22690:25;22670:18;;;22663:53;22733:19;;5675:95:105::1;22339:419:178::0;5675:95:105::1;5875:17;5895:157;5952:10;5995:12;6036:1;5895:26;:157::i;:::-;5875:177;;6150:49;6174:12;6188:10;6150:23;:49::i;:::-;;5603:607;;5598:3;;;;;:::i;:::-;;;;5552:658;;;;5234:982:::0;;;:::o;9970:236::-;1367:19;-1:-1:-1;;;;;1346:47:105;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1332:63:105;:10;-1:-1:-1;;;;;1332:63:105;;1324:162;;;;-1:-1:-1;;;1324:162:105;;;;;;;:::i;:::-;10126:12:::1;1570:27;1584:12;22902:32:::0;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;;;22813:140;1570:27:::1;1562:89;;;;-1:-1:-1::0;;;1562:89:105::1;;;;;;;:::i;:::-;10150:49:::2;10169:12;10183:15;10150:18;:49::i;30953:368::-:0;31162:32;;;31106:6;31162:32;;;:18;:32;;;;;:39;;31106:6;;31162:32;31195:5;;31162:39;;;;;;:::i;:::-;;;;;;;;;;31124:77;;;;;;;;31162:39;;;;31124:77;;;;;;;-1:-1:-1;;;31124:77:105;;;;;;;;;;-1:-1:-1;;;;;;;;31124:77:105;;;;;;;;;;;;-1:-1:-1;31211:64:105;31124:77;31263:11;31211:33;:64::i;29706:188::-;29804:32;;;29779:6;29804:32;;;:18;:32;;;;;;;29837:39;;29804:32;;29837:43;;;:::i;:::-;29804:77;;;;;;;;:::i;:::-;;;;;;;;;;:83;-1:-1:-1;;;29804:83:105;;-1:-1:-1;;;;;29804:83:105;;;-1:-1:-1;;29706:188:105:o;27662:270::-;27817:6;27842:83;27887:10;27899:12;27913:11;27842:44;:83::i;:::-;27835:90;27662:270;-1:-1:-1;;;;27662:270:105:o;28599:413::-;28774:6;28833:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;28774:6;;28833:46;28880:5;;28833:53;;;;;;:::i;:::-;;;;;;;;;;28792:94;;;;;;;;28833:53;;;;28792:94;;;;;;;-1:-1:-1;;;28792:94:105;;;;;;;;;;-1:-1:-1;;;;;;;;28792:94:105;;;;;;;;;;;;-1:-1:-1;28896:67:105;28792:94;28951:11;28896:33;:67::i;:::-;28980:25;;;;28599:413;-1:-1:-1;;;;;28599:413:105:o;25877:517::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;26044:32:105;;;:20;:32;;;;;:46;;;;;;;;;;:53;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;26044:53:105;;26155:233;;26200:19;-1:-1:-1;26193:26:105;;-1:-1:-1;26193:26:105;26155:233;26272:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;26319:17;26335:1;26319:13;:17;:::i;:::-;26272:65;;;;;;;;:::i;:::-;;;;;;;;;;26250:87;;;;;;;;26272:65;;;;26250:87;;;;;;;-1:-1:-1;;;26250:87:105;;;;;;;;;;-1:-1:-1;;;;;;;;26250:87:105;;;;;;;;;;;;-1:-1:-1;26351:26:105;;-1:-1:-1;;26351:26:105;27183:355;27327:6;27364:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;27428:83;27385:10;27397:12;27499:11;27428:44;:83::i;:::-;27364:161;;;;;;;;;;:::i;:::-;;;;;;;;;;:167;-1:-1:-1;;;27364:167:105;;-1:-1:-1;;;;;27364:167:105;;27183:355;-1:-1:-1;;;;27183:355:105:o;8608:596::-;1114:10;-1:-1:-1;;;;;1136:19:105;1114:42;;1093:165;;;;-1:-1:-1;;;1093:165:105;;;;;;;:::i;:::-;22902:32;;;22879:4;22902:32;;;:18;:32;;;;;:39;:44;8795:94:::1;;;::::0;-1:-1:-1;;;8795:94:105;;22965:2:178;8795:94:105::1;::::0;::::1;22947:21:178::0;23004:2;22984:18;;;22977:30;23043:34;23023:18;;;23016:62;-1:-1:-1;;;23094:18:178;;;23087:51;23155:19;;8795:94:105::1;22763:417:178::0;8795:94:105::1;8899:49;8918:12;8932:15;8899:18;:49::i;:::-;8958:53;8984:12;8998;8958:25;:53::i;:::-;-1:-1:-1::0;;9022:32:105::1;;;::::0;;;:18:::1;:32;::::0;;;;;;;9060:136;;::::1;::::0;::::1;::::0;;::::1;9112:12;9060:136:::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;9022:175;;;;::::1;::::0;;;;;;;;;;;;;;::::1;::::0;;;;;;-1:-1:-1;;;;;9022:175:105::1;-1:-1:-1::0;;;9022:175:105::1;-1:-1:-1::0;;;;;;;;9022:175:105;;::::1;-1:-1:-1::0;;;9022:175:105::1;-1:-1:-1::0;;9022:175:105;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;8608:596::o;21690:1051::-;21795:6;21803:4;21819:13;21842:20;21865:34;21886:12;23820:28;;23794:7;23820:28;;;:14;:28;;;;;:35;;23723:139;21865:34;-1:-1:-1;;;;;;;;;;;;;;;;;21842:57:105;;-1:-1:-1;22036:33:105;;;21963:31;22036:33;;;:19;:33;;;;;;;;21997:73;;-1:-1:-1;;;21997:73:105;;-1:-1:-1;;;;;21997:10:105;:28;;;;:73;;22026:8;;21997:73;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21997:73:105;;;;;;;;;;;;:::i;:::-;21963:107;;22085:9;22080:444;22104:12;22100:1;:16;22080:444;;;22234:28;;;;;;;:14;:28;;;;;:31;;22263:1;;22234:31;;;;;;:::i;:::-;;;;;;;;;22210:55;;;;;;;;;22234:31;;22210:55;-1:-1:-1;;;;;22210:55:105;;;;-1:-1:-1;;;22210:55:105;;-1:-1:-1;;;;;22210:55:105;;;;;22368:17;;22210:55;;-1:-1:-1;22368:17:105;;22383:1;;22368:17;;;;;;:::i;:::-;;;;;;;:21;22364:150;;;792:4:106;22446:21:105;:32;;;-1:-1:-1;;;;;22426:52:105;:14;22441:1;22426:17;;;;;;;;:::i;:::-;;;;;;;:52;;;;:::i;:::-;:72;;;;:::i;:::-;22409:90;;;;:::i;:::-;;;22364:150;22118:3;;;;:::i;:::-;;;;22080:444;;;-1:-1:-1;;;22657:35:105;;;22624:20;22657:35;;;;;;;;;;;22647:6;;-1:-1:-1;;;;;;;22657:35:105;;;22647:45;;;;;;-1:-1:-1;21690:1051:105;;;;;;:::o;14377:1857::-;14518:6;14587:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;14518:6;;14655:18;14651:1393;;14750:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;14802:159;;;;;;;;14858:12;14802:159;;;;;;;;;;-1:-1:-1;;;;;14802:159:105;;;;;;;;;14750:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14750:212:105;-1:-1:-1;;;;;;;;14750:212:105;;;-1:-1:-1;;;14750:212:105;-1:-1:-1;;14750:212:105;;;;;;;;;;;;;;;;;;;14651:1393;;;15068:30;15101:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;15148:15;15162:1;15148:13;:15;:::i;:::-;15101:63;;;;;;;;:::i;:::-;;;;;;;;;;15191:16;;-1:-1:-1;;;;;;;;15191:16:105;;;;;;-1:-1:-1;15101:63:105;;-1:-1:-1;15290:21:105;;;;15286:68;;;15338:1;15331:8;;;;;;;15286:68;15580:28;;15619:12;15580:52;;;;:28;;:52;15576:458;;;15652:27;;-1:-1:-1;;;;;;;;15652:27:105;-1:-1:-1;;;;;;;;15652:27:105;;;;;;15576:458;;;15718:55;;-1:-1:-1;;15718:55:105;-1:-1:-1;;;15760:12:105;15718:55;;;;;;;;;;;;;-1:-1:-1;15791:32:105;;;:20;:32;;;;;;;;:46;;;;;;;;;;15843:175;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15843:175:105;;;;;;;;;15791:228;;-1:-1:-1;15791:228:105;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15791:228:105;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;15791:228:105;-1:-1:-1;;;15791:228:105;;;;;;;;;;;15576:458;14979:1065;14651:1393;16104:55;;;25718:4:178;25706:17;;25688:36;;-1:-1:-1;;;;;25760:39:178;;25755:2;25740:18;;25733:67;16124:10:105;;16104:55;;25661:18:178;16104:55:105;;;;;;;16176:51;16200:9;16216:8;16176:15;:51::i;:::-;16169:58;14377:1857;-1:-1:-1;;;;;;14377:1857:105:o;16378:1272::-;16556:32;;;16468:6;16556:32;;;:18;:32;;;;;;;:39;;;16468:6;;16556:32;16676:17;;16556:39;16676:17;:::i;:::-;16643:51;;;;;;;;:::i;:::-;;;;;;;;16605:89;;16756:10;16770:1;16756:15;16752:74;;;16794:21;-1:-1:-1;;;16794:21:105;;-1:-1:-1;;;;;16794:21:105;;-1:-1:-1;16787:28:105;;-1:-1:-1;16787:28:105;16752:74;16959:21;;16929:15;;16947:46;;-1:-1:-1;;;16959:21:105;;-1:-1:-1;;;;;16959:21:105;16982:10;16947:11;:46::i;:::-;17199:33;;16929:64;;-1:-1:-1;17243:12:105;17199:57;;;;:33;;:57;17195:423;;;17272:32;;-1:-1:-1;;;;;;;;17272:32:105;-1:-1:-1;;;;;;;;17272:32:105;;;;;;17195:423;;;17335:60;;;17382:12;17335:60;;-1:-1:-1;;;17335:60:105;;;-1:-1:-1;;17335:60:105;;;;;;;;;17409:32;;;17335:37;17409:32;;;-1:-1:-1;17409:32:105;;;;;;;;17447:159;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17447:159:105;;;;;;;;;17409:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17409:198:105;-1:-1:-1;;;;;;;;17409:198:105;;;;;;-1:-1:-1;;17409:198:105;;;;;;;;;;;;;;;;;;;;;;17195:423;17635:8;16378:1272;-1:-1:-1;;;;;16378:1272:105:o;13969:223::-;14064:35;;;:21;:35;;;;;;;;;;;;:50;;-1:-1:-1;;14064:50:105;-1:-1:-1;;;;;14064:50:105;;;;;;;;14129:56;;1729:58:178;;;14129:56:105;;1702:18:178;14129:56:105;;;;;;;13969:223;;:::o;18193:1628::-;18356:1;18331:15;:22;:26;18323:95;;;;-1:-1:-1;;;18323:95:105;;26013:2:178;18323:95:105;;;25995:21:178;26052:2;26032:18;;;26025:30;-1:-1:-1;;;;;;;;;;;26071:18:178;;;26064:62;26162:26;26142:18;;;26135:54;26206:19;;18323:95:105;25811:420:178;18323:95:105;18453:22;;18513:28;;;18428:22;18513:28;;;:14;:28;;;;;;;;:35;;18579:34;18453:22;18513:35;18579:34;:::i;:::-;:66;;18558:182;;;;-1:-1:-1;;;18558:182:105;;26571:2:178;18558:182:105;;;26553:21:178;26610:2;26590:18;;;26583:30;-1:-1:-1;;;;;;;;;;;26629:18:178;;;26622:62;26720:34;26700:18;;;26693:62;-1:-1:-1;;;26771:19:178;;;26764:36;26817:19;;18558:182:105;26369:473:178;18558:182:105;18755:9;18750:1065;18774:14;18770:1;:18;18750:1065;;;18933:9;18928:290;18953:21;18973:1;18953:17;:21;:::i;:::-;18948:1;:27;18928:290;;;19073:15;19089:1;19073:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;19029:71:105;:14;:28;19044:12;19029:28;;;;;;;;;;;;;;;19058:1;19029:31;;;;;;;;:::i;:::-;;;;;;;;;;:40;-1:-1:-1;;;;;19029:40:105;:71;;19000:203;;;;-1:-1:-1;;;19000:203:105;;27049:2:178;19000:203:105;;;27031:21:178;27088:2;27068:18;;;27061:30;-1:-1:-1;;;;;;;;;;;27107:18:178;;;27100:62;27198:31;27178:18;;;27171:59;27247:19;;19000:203:105;26847:425:178;19000:203:105;18977:3;;;;:::i;:::-;;;;18928:290;;;;19288:1;19256:15;19272:1;19256:18;;;;;;;;:::i;:::-;;;;;;;:29;;;-1:-1:-1;;;;;19256:33:105;;19231:162;;;;-1:-1:-1;;;19231:162:105;;27479:2:178;19231:162:105;;;27461:21:178;27518:2;27498:18;;;27491:30;-1:-1:-1;;;;;;;;;;;27537:18:178;;;27530:62;27628:34;27608:18;;;27601:62;-1:-1:-1;;;27679:19:178;;;27672:37;27726:19;;19231:162:105;27277:474:178;19231:162:105;19407:28;;;;;;;:14;:28;;;;;19441:18;;:15;;19457:1;;19441:18;;;;;;:::i;:::-;;;;;;;;;;;;19407:53;;;;;;;-1:-1:-1;19407:53:105;;;;;;;;;;;;-1:-1:-1;;;;;19407:53:105;-1:-1:-1;;;19407:53:105;-1:-1:-1;;;;;19407:53:105;;;;;;;;;;19474:33;;;;;:19;:33;;;;;19513:18;;:15;;19529:1;;19513:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;19474:67;;;;;;;-1:-1:-1;19474:67:105;;;;;;;;;;-1:-1:-1;;;;;;19474:67:105;-1:-1:-1;;;;;19474:67:105;;;;;;;;;19596:18;;19560:64;;;;;;19596:18;;19612:1;;19596:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;19560:64;;-1:-1:-1;;;;;8392:32:178;;;8374:51;;8347:18;19560:64:105;;;;;;;19686:12;19643:161;;;19716:15;19732:1;19716:18;;;;;;;;:::i;:::-;;;;;;;:27;;;19761:15;19777:1;19761:18;;;;;;;;:::i;:::-;;;;;;;:29;;;19643:161;;;;;;;:::i;:::-;;;;;;;;18790:3;;;;:::i;:::-;;;;18750:1065;;;;18313:1508;;18193:1628;;:::o;20475:830::-;20905:11;:29;;;20890:44;;:11;:44;;;;20869:177;;;;-1:-1:-1;;;20869:177:105;;27958:2:178;20869:177:105;;;27940:21:178;27997:2;27977:18;;;27970:30;28036:34;28016:18;;;28009:62;28107:34;28087:18;;;28080:62;-1:-1:-1;;;28158:19:178;;;28151:53;28221:19;;20869:177:105;27756:490:178;20869:177:105;21077:33;;;;:38;;;;:89;;;21133:11;:33;;;21119:47;;:11;:47;;;21077:89;21056:242;;;;-1:-1:-1;;;21056:242:105;;28453:2:178;21056:242:105;;;28435:21:178;28492:3;28472:18;;;28465:31;28532:34;28512:18;;;28505:62;28603:34;28583:18;;;28576:62;28675:34;28654:19;;;28647:63;-1:-1:-1;;;28726:19:178;;;28719:41;28777:19;;21056:242:105;28251:551:178;21056:242:105;20475:830;;:::o;13134:829::-;13301:6;13336:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;13508:206;13533:5;;13508:206;;13563:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;:86;;;;13610:5;13614:1;13610;:5;:::i;:::-;13563:53;;;;;;;;:::i;:::-;;;;;;;;;;:71;;;:86;13559:145;;13683:5;13687:1;13683;:5;:::i;:::-;13669:20;;;;;;13559:145;13540:3;;;;:::i;:::-;;;;13508:206;;;-1:-1:-1;13795:161:105;;-1:-1:-1;;;13795:161:105;;29150:2:178;13795:161:105;;;29132:21:178;29189:3;29169:18;;;29162:31;29229:34;29209:18;;;29202:62;29300:34;29280:18;;;29273:62;29372:34;29351:19;;;29344:63;29444:34;29423:19;;;29416:63;-1:-1:-1;;;29495:19:178;;;29488:32;29537:19;;13795:161:105;28948:614:178;19915:149:105;19988:6;20013:44;-1:-1:-1;;;;;20043:13:105;;;;20020:12;;20013:44;:::i;20144:242::-;20216:6;20246:1;20238:5;:9;20234:146;;;20293:6;20294:5;20293:6;:::i;:::-;20270:31;;:5;:31;:::i;:::-;20263:38;;;;20234:146;20339:30;20362:5;20339;:30;:::i;14:156:178:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:182::-;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;324:27;341:9;324:27;:::i;544:250::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:52;;;687:1;684;677:12;639:52;710:27;727:9;710:27;:::i;:::-;700:37;784:2;769:18;;;;756:32;;-1:-1:-1;;;544:250:178:o;799:323::-;-1:-1:-1;;;;;1007:32:178;;;;989:51;;-1:-1:-1;;;;;1076:39:178;1071:2;1056:18;;1049:67;977:2;962:18;;799:323::o;1127:131::-;-1:-1:-1;;;;;1202:31:178;;1192:42;;1182:70;;1248:1;1245;1238:12;1182:70;1127:131;:::o;1263:317::-;1329:6;1337;1390:2;1378:9;1369:7;1365:23;1361:32;1358:52;;;1406:1;1403;1396:12;1358:52;1429:27;1446:9;1429:27;:::i;:::-;1419:37;;1506:2;1495:9;1491:18;1478:32;1519:31;1544:5;1519:31;:::i;:::-;1569:5;1559:15;;;1263:317;;;;;:::o;1798:367::-;1861:8;1871:6;1925:3;1918:4;1910:6;1906:17;1902:27;1892:55;;1943:1;1940;1933:12;1892:55;-1:-1:-1;1966:20:178;;-1:-1:-1;;;;;1998:30:178;;1995:50;;;2041:1;2038;2031:12;1995:50;2078:4;2070:6;2066:17;2054:29;;2138:3;2131:4;2121:6;2118:1;2114:14;2106:6;2102:27;2098:38;2095:47;2092:67;;;2155:1;2152;2145:12;2170:842;2298:6;2306;2314;2322;2330;2383:2;2371:9;2362:7;2358:23;2354:32;2351:52;;;2399:1;2396;2389:12;2351:52;2422:27;2439:9;2422:27;:::i;:::-;2412:37;;2500:2;2489:9;2485:18;2472:32;-1:-1:-1;;;;;2564:2:178;2556:6;2553:14;2550:34;;;2580:1;2577;2570:12;2550:34;2619:70;2681:7;2672:6;2661:9;2657:22;2619:70;:::i;:::-;2708:8;;-1:-1:-1;2593:96:178;-1:-1:-1;2796:2:178;2781:18;;2768:32;;-1:-1:-1;2812:16:178;;;2809:36;;;2841:1;2838;2831:12;2809:36;;2880:72;2944:7;2933:8;2922:9;2918:24;2880:72;:::i;:::-;2170:842;;;;-1:-1:-1;2170:842:178;;-1:-1:-1;2971:8:178;;2854:98;2170:842;-1:-1:-1;;;2170:842:178:o;3017:347::-;3068:8;3078:6;3132:3;3125:4;3117:6;3113:17;3109:27;3099:55;;3150:1;3147;3140:12;3099:55;-1:-1:-1;3173:20:178;;-1:-1:-1;;;;;3205:30:178;;3202:50;;;3248:1;3245;3238:12;3202:50;3285:4;3277:6;3273:17;3261:29;;3337:3;3330:4;3321:6;3313;3309:19;3305:30;3302:39;3299:59;;;3354:1;3351;3344:12;3369:612;3457:6;3465;3473;3481;3534:2;3522:9;3513:7;3509:23;3505:32;3502:52;;;3550:1;3547;3540:12;3502:52;3589:9;3576:23;3608:31;3633:5;3608:31;:::i;:::-;3658:5;-1:-1:-1;3710:2:178;3695:18;;3682:32;;-1:-1:-1;3765:2:178;3750:18;;3737:32;-1:-1:-1;;;;;3781:30:178;;3778:50;;;3824:1;3821;3814:12;3778:50;3863:58;3913:7;3904:6;3893:9;3889:22;3863:58;:::i;:::-;3369:612;;;;-1:-1:-1;3940:8:178;-1:-1:-1;;;;3369:612:178:o;3986:467::-;4038:3;4076:5;4070:12;4103:6;4098:3;4091:19;4129:4;4158:2;4153:3;4149:12;4142:19;;4195:2;4188:5;4184:14;4216:1;4226:202;4240:6;4237:1;4234:13;4226:202;;;4305:13;;-1:-1:-1;;;;;4301:46:178;4289:59;;4368:12;;;;4403:15;;;;4262:1;4255:9;4226:202;;;-1:-1:-1;4444:3:178;;3986:467;-1:-1:-1;;;;;3986:467:178:o;4458:459::-;4711:2;4700:9;4693:21;4674:4;4737:55;4788:2;4777:9;4773:18;4765:6;4737:55;:::i;:::-;4840:9;4832:6;4828:22;4823:2;4812:9;4808:18;4801:50;4868:43;4904:6;4896;4868:43;:::i;4922:250::-;4988:6;4996;5049:2;5037:9;5028:7;5024:23;5020:32;5017:52;;;5065:1;5062;5055:12;5017:52;5101:9;5088:23;5078:33;;5130:36;5162:2;5151:9;5147:18;5130:36;:::i;:::-;5120:46;;4922:250;;;;;:::o;5470:717::-;5701:2;5753:21;;;5823:13;;5726:18;;;5845:22;;;5672:4;;5701:2;5924:15;;;;5898:2;5883:18;;;5672:4;5967:194;5981:6;5978:1;5975:13;5967:194;;;6030:49;6075:3;6066:6;6060:13;5252:10;5301:2;5293:5;5287:12;5283:21;5278:3;5271:34;5366:2;5358:4;5351:5;5347:16;5341:23;5337:32;5330:4;5325:3;5321:14;5314:56;;-1:-1:-1;;;;;5423:4:178;5416:5;5412:16;5406:23;5402:56;5395:4;5390:3;5386:14;5379:80;5177:288;;;6030:49;6136:15;;;;6108:4;6099:14;;;;;6003:1;5996:9;5967:194;;;-1:-1:-1;6178:3:178;;5470:717;-1:-1:-1;;;;;;5470:717:178:o;6192:127::-;6253:10;6248:3;6244:20;6241:1;6234:31;6284:4;6281:1;6274:15;6308:4;6305:1;6298:15;6324:257;6396:4;6390:11;;;6428:17;;-1:-1:-1;;;;;6460:34:178;;6496:22;;;6457:62;6454:88;;;6522:18;;:::i;:::-;6558:4;6551:24;6324:257;:::o;6586:275::-;6657:2;6651:9;6722:2;6703:13;;-1:-1:-1;;6699:27:178;6687:40;;-1:-1:-1;;;;;6742:34:178;;6778:22;;;6739:62;6736:88;;;6804:18;;:::i;:::-;6840:2;6833:22;6586:275;;-1:-1:-1;6586:275:178:o;6866:183::-;6926:4;-1:-1:-1;;;;;6951:6:178;6948:30;6945:56;;;6981:18;;:::i;:::-;-1:-1:-1;7026:1:178;7022:14;7038:4;7018:25;;6866:183::o;7054:961::-;7145:6;7153;7206:2;7194:9;7185:7;7181:23;7177:32;7174:52;;;7222:1;7219;7212:12;7174:52;7245:27;7262:9;7245:27;:::i;:::-;7235:37;;7291:2;7344;7333:9;7329:18;7316:32;-1:-1:-1;;;;;7363:6:178;7360:30;7357:50;;;7403:1;7400;7393:12;7357:50;7426:22;;7479:4;7471:13;;7467:27;-1:-1:-1;7457:55:178;;7508:1;7505;7498:12;7457:55;7544:2;7531:16;7567:60;7583:43;7623:2;7583:43;:::i;:::-;7567:60;:::i;:::-;7661:15;;;7743:1;7739:10;;;;7731:19;;7727:28;;;7692:12;;;;7767:19;;;7764:39;;;7799:1;7796;7789:12;7764:39;7823:11;;;;7843:142;7859:6;7854:3;7851:15;7843:142;;;7925:17;;7913:30;;7876:12;;;;7963;;;;7843:142;;;8004:5;7994:15;;;;;;;7054:961;;;;;:::o;8625:163::-;8692:20;;8752:10;8741:22;;8731:33;;8721:61;;8778:1;8775;8768:12;8793:481;8871:6;8879;8887;8940:2;8928:9;8919:7;8915:23;8911:32;8908:52;;;8956:1;8953;8946:12;8908:52;8979:28;8997:9;8979:28;:::i;:::-;8969:38;;9058:2;9047:9;9043:18;9030:32;-1:-1:-1;;;;;9077:6:178;9074:30;9071:50;;;9117:1;9114;9107:12;9071:50;9156:58;9206:7;9197:6;9186:9;9182:22;9156:58;:::i;:::-;8793:481;;9233:8;;-1:-1:-1;9130:84:178;;-1:-1:-1;;;;8793:481:178:o;9279:647::-;9448:2;9500:21;;;9570:13;;9473:18;;;9592:22;;;9419:4;;9448:2;9671:15;;;;9645:2;9630:18;;;9419:4;9714:186;9728:6;9725:1;9722:13;9714:186;;;9793:13;;9808:10;9789:30;9777:43;;9875:15;;;;9840:12;;;;9750:1;9743:9;9714:186;;10157:318;10232:6;10240;10248;10301:2;10289:9;10280:7;10276:23;10272:32;10269:52;;;10317:1;10314;10307:12;10269:52;10340:27;10357:9;10340:27;:::i;:::-;10330:37;10414:2;10399:18;;10386:32;;-1:-1:-1;10465:2:178;10450:18;;;10437:32;;10157:318;-1:-1:-1;;;10157:318:178:o;10480:260::-;5287:12;;5252:10;5283:21;;;5271:34;;5358:4;5347:16;;;5341:23;5337:32;;;5321:14;;;5314:56;5423:4;5412:16;;;5406:23;-1:-1:-1;;;;;5402:56:178;5386:14;;;5379:80;10674:2;10659:18;;10686:48;5177:288;11122:179;11189:20;;-1:-1:-1;;;;;11238:38:178;;11228:49;;11218:77;;11291:1;11288;11281:12;11306:254;11371:6;11379;11432:2;11420:9;11411:7;11407:23;11403:32;11400:52;;;11448:1;11445;11438:12;11400:52;11471:27;11488:9;11471:27;:::i;:::-;11461:37;;11517;11550:2;11539:9;11535:18;11517:37;:::i;11565:477::-;11644:6;11652;11660;11713:2;11701:9;11692:7;11688:23;11684:32;11681:52;;;11729:1;11726;11719:12;11681:52;11765:9;11752:23;11742:33;;11826:2;11815:9;11811:18;11798:32;-1:-1:-1;;;;;11845:6:178;11842:30;11839:50;;;11885:1;11882;11875:12;12047:1035;12115:5;12168:3;12161:4;12153:6;12149:17;12145:27;12135:55;;12186:1;12183;12176:12;12135:55;12222:6;12209:20;12248:4;12272:60;12288:43;12328:2;12288:43;:::i;12272:60::-;12366:15;;;12452:1;12448:10;;;;12436:23;;12432:32;;;12397:12;;;;12476:15;;;12473:35;;;12504:1;12501;12494:12;12473:35;12540:2;12532:6;12528:15;12552:501;12568:6;12563:3;12560:15;12552:501;;;12646:4;12640:3;12635;12631:13;12627:24;12624:114;;;12692:1;12721:2;12717;12710:14;12624:114;12764:22;;:::i;:::-;12827:3;12814:17;12844:33;12869:7;12844:33;:::i;:::-;12890:22;;12948:31;12966:12;;;12948:31;:::i;:::-;12932:14;;;12925:55;12993:18;;13031:12;;;;12594:4;12585:14;12552:501;;;-1:-1:-1;13071:5:178;12047:1035;-1:-1:-1;;;;;;12047:1035:178:o;13087:465::-;13211:6;13219;13272:2;13260:9;13251:7;13247:23;13243:32;13240:52;;;13288:1;13285;13278:12;13240:52;13311:27;13328:9;13311:27;:::i;:::-;13301:37;;13389:2;13378:9;13374:18;13361:32;-1:-1:-1;;;;;13408:6:178;13405:30;13402:50;;;13448:1;13445;13438:12;13402:50;13471:75;13538:7;13529:6;13518:9;13514:22;13471:75;:::i;:::-;13461:85;;;13087:465;;;;;:::o;13557:322::-;13631:6;13639;13647;13700:2;13688:9;13679:7;13675:23;13671:32;13668:52;;;13716:1;13713;13706:12;13668:52;13739:27;13756:9;13739:27;:::i;:::-;13729:37;;13785;13818:2;13807:9;13803:18;13785:37;:::i;:::-;13775:47;;13869:2;13858:9;13854:18;13841:32;13831:42;;13557:322;;;;;:::o;13884:::-;13958:6;13966;13974;14027:2;14015:9;14006:7;14002:23;13998:32;13995:52;;;14043:1;14040;14033:12;13995:52;14079:9;14066:23;14056:33;;14108:36;14140:2;14129:9;14125:18;14108:36;:::i;:::-;14098:46;;14163:37;14196:2;14185:9;14181:18;14163:37;:::i;:::-;14153:47;;13884:322;;;;;:::o;14643:391::-;14726:6;14734;14742;14750;14803:3;14791:9;14782:7;14778:23;14774:33;14771:53;;;14820:1;14817;14810:12;14771:53;14843:27;14860:9;14843:27;:::i;:::-;14833:37;;14889;14922:2;14911:9;14907:18;14889:37;:::i;:::-;14643:391;;14879:47;;-1:-1:-1;;;;14973:2:178;14958:18;;14945:32;;15024:2;15009:18;14996:32;;14643:391::o;15039:537::-;15171:6;15179;15187;15240:2;15228:9;15219:7;15215:23;15211:32;15208:52;;;15256:1;15253;15246:12;15208:52;15279:27;15296:9;15279:27;:::i;:::-;15269:37;;15325;15358:2;15347:9;15343:18;15325:37;:::i;:::-;15315:47;;15413:2;15402:9;15398:18;15385:32;-1:-1:-1;;;;;15432:6:178;15429:30;15426:50;;;15472:1;15469;15462:12;15426:50;15495:75;15562:7;15553:6;15542:9;15538:22;15495:75;:::i;:::-;15485:85;;;15039:537;;;;;:::o;15581:413::-;15783:2;15765:21;;;15822:2;15802:18;;;15795:30;15861:34;15856:2;15841:18;;15834:62;-1:-1:-1;;;15927:2:178;15912:18;;15905:47;15984:3;15969:19;;15581:413::o;15999:251::-;16069:6;16122:2;16110:9;16101:7;16097:23;16093:32;16090:52;;;16138:1;16135;16128:12;16090:52;16170:9;16164:16;16189:31;16214:5;16189:31;:::i;16255:490::-;16457:2;16439:21;;;16496:2;16476:18;;;16469:30;16535:34;16530:2;16515:18;;16508:62;16606:34;16601:2;16586:18;;16579:62;-1:-1:-1;;;16672:3:178;16657:19;;16650:53;16735:3;16720:19;;16255:490::o;17609:127::-;17670:10;17665:3;17661:20;17658:1;17651:31;17701:4;17698:1;17691:15;17725:4;17722:1;17715:15;17741:184;17799:6;17852:2;17840:9;17831:7;17827:23;17823:32;17820:52;;;17868:1;17865;17858:12;17820:52;17891:28;17909:9;17891:28;:::i;18259:127::-;18320:10;18315:3;18311:20;18308:1;18301:31;18351:4;18348:1;18341:15;18375:4;18372:1;18365:15;18391:135;18430:3;-1:-1:-1;;18451:17:178;;18448:43;;;18471:18;;:::i;:::-;-1:-1:-1;18518:1:178;18507:13;;18391:135::o;18531:480::-;18733:2;18715:21;;;18772:2;18752:18;;;18745:30;18811:34;18806:2;18791:18;;18784:62;18882:34;18877:2;18862:18;;18855:62;-1:-1:-1;;;18948:3:178;18933:19;;18926:43;19001:3;18986:19;;18531:480::o;20673:125::-;20713:4;20741:1;20738;20735:8;20732:34;;;20746:18;;:::i;:::-;-1:-1:-1;20783:9:178;;20673:125::o;20803:127::-;20864:10;20859:3;20855:20;20852:1;20845:31;20895:4;20892:1;20885:15;20919:4;20916:1;20909:15;23185:800;23370:4;23418:2;23407:9;23403:18;23457:1;23453;23448:3;23444:11;23440:19;23498:2;23490:6;23486:15;23475:9;23468:34;23521:2;23559;23554;23543:9;23539:18;23532:30;23582:6;23617;23611:13;23648:6;23640;23633:22;23686:2;23675:9;23671:18;23664:25;;23708:6;23705:1;23698:17;23751:2;23748:1;23738:16;23724:30;;23772:1;23782:177;23796:6;23793:1;23790:13;23782:177;;;23861:13;;23857:22;;23845:35;;23947:1;23935:14;;;;23900:12;;;;23811:9;23782:177;;;-1:-1:-1;23976:3:178;;23185:800;-1:-1:-1;;;;;;;;23185:800:178:o;23990:881::-;24085:6;24116:2;24159;24147:9;24138:7;24134:23;24130:32;24127:52;;;24175:1;24172;24165:12;24127:52;24208:9;24202:16;-1:-1:-1;;;;;24233:6:178;24230:30;24227:50;;;24273:1;24270;24263:12;24227:50;24296:22;;24349:4;24341:13;;24337:27;-1:-1:-1;24327:55:178;;24378:1;24375;24368:12;24327:55;24407:2;24401:9;24430:60;24446:43;24486:2;24446:43;:::i;24430:60::-;24524:15;;;24606:1;24602:10;;;;24594:19;;24590:28;;;24555:12;;;;24630:19;;;24627:39;;;24662:1;24659;24652:12;24627:39;24686:11;;;;24706:135;24722:6;24717:3;24714:15;24706:135;;;24788:10;;24776:23;;24739:12;;;;24819;;;;24706:135;;;24860:5;23990:881;-1:-1:-1;;;;;;;23990:881:178:o;24876:168::-;24916:7;24982:1;24978;24974:6;24970:14;24967:1;24964:21;24959:1;24952:9;24945:17;24941:45;24938:71;;;24989:18;;:::i;:::-;-1:-1:-1;25029:9:178;;24876:168::o;25049:217::-;25089:1;25115;25105:132;;25159:10;25154:3;25150:20;25147:1;25140:31;25194:4;25191:1;25184:15;25222:4;25219:1;25212:15;25105:132;-1:-1:-1;25251:9:178;;25049:217::o;25271:244::-;25310:3;-1:-1:-1;;;;;25391:2:178;25388:1;25384:10;25421:2;25418:1;25414:10;25452:3;25448:2;25444:12;25439:3;25436:21;25433:47;;;25460:18;;:::i;:::-;25496:13;;25271:244;-1:-1:-1;;;;25271:244:178:o;26236:128::-;26276:3;26307:1;26303:6;26300:1;26297:13;26294:39;;;26313:18;;:::i;:::-;-1:-1:-1;26349:9:178;;26236:128::o;28807:136::-;28846:3;28874:5;28864:39;;28883:18;;:::i;:::-;-1:-1:-1;;;28919:18:178;;28807:136::o;29567:267::-;29606:4;29635:9;;;29660:10;;-1:-1:-1;;;29679:19:178;;29672:27;;29656:44;29653:70;;;29703:18;;:::i;:::-;-1:-1:-1;;;;;29750:27:178;;29743:35;;29735:44;;29732:70;;;29782:18;;:::i;:::-;-1:-1:-1;;29819:9:178;;29567:267::o;29839:136::-;29874:3;-1:-1:-1;;;29895:22:178;;29892:48;;;29920:18;;:::i;:::-;-1:-1:-1;29960:1:178;29956:13;;29839:136::o;29980:237::-;30019:4;-1:-1:-1;;;;;30124:10:178;;;;30094;;30146:12;;;30143:38;;;30161:18;;:::i;:::-;30198:13;;29980:237;-1:-1:-1;;;29980:237:178:o","linkReferences":{},"immutableReferences":{"70884":[{"start":1321,"length":32},{"start":7848,"length":32}],"70887":[{"start":890,"length":32},{"start":1586,"length":32},{"start":2415,"length":32},{"start":3302,"length":32},{"start":4369,"length":32},{"start":5891,"length":32},{"start":6149,"length":32},{"start":6441,"length":32},{"start":7399,"length":32}]}},"methodIdentifiers":{"MAX_WEIGHING_FUNCTION_LENGTH()":"7c172347","WEIGHTING_DIVISOR()":"5e5a6775","addStrategies(uint8,(address,uint96)[])":"c601527d","delegation()":"df5cf723","deregisterOperator(bytes32,bytes)":"bd29b8cd","getCurrentStake(bytes32,uint8)":"5401ed27","getCurrentTotalStake(uint8)":"d5eccc05","getLatestStakeUpdate(bytes32,uint8)":"f851e198","getStakeAtBlockNumber(bytes32,uint8,uint32)":"fa28c627","getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":"f2be94ae","getStakeHistory(bytes32,uint8)":"2cd95940","getStakeHistoryLength(bytes32,uint8)":"4bd26e09","getStakeUpdateAtIndex(uint8,bytes32,uint256)":"ac6bfb03","getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)":"dd9846b9","getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":"c8294c56","getTotalStakeHistoryLength(uint8)":"0491b41c","getTotalStakeIndicesAtBlockNumber(uint32,bytes)":"81c07502","getTotalStakeUpdateAtIndex(uint8,uint256)":"b6904b78","initializeQuorum(uint8,uint96,(address,uint96)[])":"ff694a77","minimumStakeForQuorum(uint8)":"c46778a5","modifyStrategyParams(uint8,uint256[],uint96[])":"20b66298","registerOperator(address,bytes32,bytes)":"25504777","registryCoordinator()":"6d14a987","removeStrategies(uint8,uint256[])":"5f1f2d77","setMinimumStakeForQuorum(uint8,uint96)":"bc9a40c3","strategiesPerQuorum(uint8,uint256)":"9f3ccf65","strategyParams(uint8,uint256)":"08732461","strategyParamsByIndex(uint8,uint256)":"adc804da","strategyParamsLength(uint8)":"3ca5a5f5","updateOperatorStake(address,bytes32,bytes)":"66acfefe","weightOfOperatorForQuorum(uint8,address)":"1f9b74e0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"_registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"contract IDelegationManager\",\"name\":\"_delegationManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"}],\"name\":\"MinimumStakeForQuorumUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"name\":\"OperatorStakeUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"QuorumCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyAddedToQuorum\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"multiplier\",\"type\":\"uint256\"}],\"name\":\"StrategyMultiplierUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"}],\"name\":\"StrategyRemovedFromQuorum\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_WEIGHING_FUNCTION_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WEIGHTING_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[]\",\"name\":\"_strategyParams\",\"type\":\"tuple[]\"}],\"name\":\"addStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getCurrentStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getCurrentTotalStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getLatestStakeUpdate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getStakeAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getStakeAtBlockNumberAndIndex\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getStakeHistory\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getStakeHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getStakeUpdateAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"}],\"name\":\"getStakeUpdateIndexAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTotalStakeAtBlockNumberFromIndex\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"getTotalStakeHistoryLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"getTotalStakeIndicesAtBlockNumber\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getTotalStakeUpdateAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"updateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"stake\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StakeUpdate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"},{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams[]\",\"name\":\"_strategyParams\",\"type\":\"tuple[]\"}],\"name\":\"initializeQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"minimumStakeForQuorum\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"strategyIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint96[]\",\"name\":\"newMultipliers\",\"type\":\"uint96[]\"}],\"name\":\"modifyStrategyParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[{\"internalType\":\"uint96[]\",\"name\":\"\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"\",\"type\":\"uint96[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"indicesToRemove\",\"type\":\"uint256[]\"}],\"name\":\"removeStrategies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint96\",\"name\":\"minimumStake\",\"type\":\"uint96\"}],\"name\":\"setMinimumStakeForQuorum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"strategiesPerQuorum\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"strategyParams\",\"outputs\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"strategyParamsByIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IStakeRegistry.StrategyParams\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"}],\"name\":\"strategyParamsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"operatorId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"quorumNumbers\",\"type\":\"bytes\"}],\"name\":\"updateOperatorStake\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"quorumNumber\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"weightOfOperatorForQuorum\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"addStrategies(uint8,(address,uint96)[])\":{\"details\":\"Checks to make sure that the *same* strategy cannot be added multiple times (checks against both against existing and new strategies).This function has no check to make sure that the strategies for a single quorum have the same underlying asset. This is a concious choice, since a middleware may want, e.g., a stablecoin quorum that accepts USDC, USDT, DAI, etc. as underlying assets and trades them as \\\"equivalent\\\".\"},\"deregisterOperator(bytes32,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for\",\"params\":{\"operatorId\":\"The id of the operator to deregister.\",\"quorumNumbers\":\"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber.\"}},\"getCurrentStake(bytes32,uint8)\":{\"details\":\"Function returns weight of **0** in the event that the operator has no stake history\"},\"getCurrentTotalStake(uint8)\":{\"details\":\"Will revert if `_totalStakeHistory[quorumNumber]` is empty.\"},\"getLatestStakeUpdate(bytes32,uint8)\":{\"details\":\"Function returns an StakeUpdate struct with **every entry equal to 0** in the event that the operator has no stake history\"},\"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"blockNumber\":\"Block number to make sure the stake is from.\",\"index\":\"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.\",\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getStakeHistory(bytes32,uint8)\":{\"params\":{\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getStakeUpdateAtIndex(uint8,bytes32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"index\":\"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.\",\"operatorId\":\"The id of the operator of interest.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)\":{\"details\":\"Function will revert if `index` is out-of-bounds.\",\"params\":{\"blockNumber\":\"Block number to make sure the stake is from.\",\"index\":\"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"getTotalStakeIndicesAtBlockNumber(uint32,bytes)\":{\"details\":\"Function will revert if there are no indices for the given `blockNumber`\",\"params\":{\"blockNumber\":\"Block number to retrieve the stake indices from.\",\"quorumNumbers\":\"The quorum numbers to get the stake indices for.\"}},\"getTotalStakeUpdateAtIndex(uint8,uint256)\":{\"params\":{\"index\":\"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.\",\"quorumNumber\":\"The quorum number to get the stake for.\"}},\"modifyStrategyParams(uint8,uint256[],uint96[])\":{\"params\":{\"newMultipliers\":\"are the new multipliers for the strategies\",\"quorumNumber\":\"is the quorum number to which the strategies belong\",\"strategyIndices\":\"are the indices of the strategies to change\"}},\"registerOperator(address,bytes32,bytes)\":{\"details\":\"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered\",\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorId\":\"The id of the operator to register.\",\"quorumNumbers\":\"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber.\"},\"returns\":{\"_0\":\"The operator's current stake for each quorum, and the total stake for each quorum\"}},\"removeStrategies(uint8,uint256[])\":{\"details\":\"higher indices should be *first* in the list of @param indicesToRemove, since otherwise the removal of lower index entries will cause a shift in the indices of the other strategies to remove\"},\"updateOperatorStake(address,bytes32,bytes)\":{\"returns\":{\"_0\":\"A bitmap of quorums where the operator no longer meets the minimum stake and should be deregistered.\"}},\"weightOfOperatorForQuorum(uint8,address)\":{\"details\":\"reverts if the quorum does not exist\"}},\"title\":\"A `Registry` that keeps track of stakes of operators for up to 256 quorums. Specifically, it keeps track of 1) The stake of each operator in all the quorums they are a part of for block ranges 2) The total stake of all operators in each quorum for block ranges 3) The minimum stake required to register for each quorum It allows an additional functionality (in addition to registering and deregistering) to update the stake of an operator.\",\"version\":1},\"userdoc\":{\"events\":{\"MinimumStakeForQuorumUpdated(uint8,uint96)\":{\"notice\":\"emitted when the minimum stake for a quorum is updated\"},\"OperatorStakeUpdate(bytes32,uint8,uint96)\":{\"notice\":\"emitted whenever the stake of `operator` is updated\"},\"QuorumCreated(uint8)\":{\"notice\":\"emitted when a new quorum is created\"},\"StrategyAddedToQuorum(uint8,address)\":{\"notice\":\"emitted when `strategy` has been added to the array at `strategyParams[quorumNumber]`\"},\"StrategyMultiplierUpdated(uint8,address,uint256)\":{\"notice\":\"emitted when `strategy` has its `multiplier` updated in the array at `strategyParams[quorumNumber]`\"},\"StrategyRemovedFromQuorum(uint8,address)\":{\"notice\":\"emitted when `strategy` has removed from the array at `strategyParams[quorumNumber]`\"}},\"kind\":\"user\",\"methods\":{\"MAX_WEIGHING_FUNCTION_LENGTH()\":{\"notice\":\"Maximum length of dynamic arrays in the `strategyParams` mapping.\"},\"WEIGHTING_DIVISOR()\":{\"notice\":\"Constant used as a divisor in calculating weights.\"},\"addStrategies(uint8,(address,uint96)[])\":{\"notice\":\"Adds strategies and weights to the quorum\"},\"delegation()\":{\"notice\":\"The address of the Delegation contract for EigenLayer.\"},\"deregisterOperator(bytes32,bytes)\":{\"notice\":\"Deregisters the operator with `operatorId` for the specified `quorumNumbers`.\"},\"getCurrentStake(bytes32,uint8)\":{\"notice\":\"Returns the most recent stake weight for the `operatorId` for quorum `quorumNumber`\"},\"getCurrentTotalStake(uint8)\":{\"notice\":\"Returns the stake weight from the latest entry in `_totalStakeHistory` for quorum `quorumNumber`.\"},\"getLatestStakeUpdate(bytes32,uint8)\":{\"notice\":\"Returns the most recent stake weight for the `operatorId` for a certain quorum\"},\"getStakeAtBlockNumber(bytes32,uint8,uint32)\":{\"notice\":\"Returns the stake of the operator for the provided `quorumNumber` at the given `blockNumber`\"},\"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)\":{\"notice\":\"Returns the stake weight corresponding to `operatorId` for quorum `quorumNumber`, at the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array if it was the operator's stake at `blockNumber`. Reverts otherwise.\"},\"getStakeHistory(bytes32,uint8)\":{\"notice\":\"Returns the entire `operatorStakeHistory[operatorId][quorumNumber]` array.\"},\"getStakeHistoryLength(bytes32,uint8)\":{\"notice\":\"Returns the length of an operator's stake history for the given quorum\"},\"getStakeUpdateAtIndex(uint8,bytes32,uint256)\":{\"notice\":\"Returns the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array.\"},\"getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)\":{\"notice\":\"Returns the indices of the operator stakes for the provided `quorumNumber` at the given `blockNumber`\"},\"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)\":{\"notice\":\"Returns the total stake weight for quorum `quorumNumber`, at the `index`-th entry in the `_totalStakeHistory[quorumNumber]` array if it was the stake at `blockNumber`. Reverts otherwise.\"},\"getTotalStakeHistoryLength(uint8)\":{\"notice\":\"Returns the length of the total stake history for the given quorum\"},\"getTotalStakeIndicesAtBlockNumber(uint32,bytes)\":{\"notice\":\"Returns the indices of the total stakes for the provided `quorumNumbers` at the given `blockNumber`\"},\"getTotalStakeUpdateAtIndex(uint8,uint256)\":{\"notice\":\"Returns the `index`-th entry in the dynamic array of total stake, `_totalStakeHistory` for quorum `quorumNumber`.\"},\"initializeQuorum(uint8,uint96,(address,uint96)[])\":{\"notice\":\"Initialize a new quorum and push its first history update\"},\"minimumStakeForQuorum(uint8)\":{\"notice\":\"In order to register for a quorum i, an operator must have at least `minimumStakeForQuorum[i]` evaluated by this contract's 'VoteWeigher' logic.\"},\"modifyStrategyParams(uint8,uint256[],uint96[])\":{\"notice\":\"Modifies the weights of existing strategies for a specific quorum\"},\"registerOperator(address,bytes32,bytes)\":{\"notice\":\"Registers the `operator` with `operatorId` for the specified `quorumNumbers`.\"},\"registryCoordinator()\":{\"notice\":\"the coordinator contract that this registry is associated with\"},\"removeStrategies(uint8,uint256[])\":{\"notice\":\"Remove strategies and their associated weights from the quorum's considered strategies\"},\"strategyParams(uint8,uint256)\":{\"notice\":\"mapping from quorum number to the list of strategies considered and their corresponding multipliers for that specific quorum\"},\"strategyParamsByIndex(uint8,uint256)\":{\"notice\":\"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`\"},\"strategyParamsLength(uint8)\":{\"notice\":\"Returns the length of the dynamic array stored in `strategyParams[quorumNumber]`.\"},\"updateOperatorStake(address,bytes32,bytes)\":{\"notice\":\"Called by the registry coordinator to update an operator's stake for one or more quorums. If the operator no longer has the minimum stake required for a quorum, they are added to the `quorumsToRemove`, which is returned to the registry coordinator\"},\"weightOfOperatorForQuorum(uint8,address)\":{\"notice\":\"This function computes the total weight of the @param operator in the quorum @param quorumNumber.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/StakeRegistry.sol\":\"StakeRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9\",\"dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141\",\"dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d\",\"dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6\",\"dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4\",\"dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c\",\"dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/StakeRegistry.sol\":{\"keccak256\":\"0xb065491d1a4ab43172487534f297369c2eefe9548d6db0cc41f870566f0d6bff\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://53a87f0a1ff6655ae03cc8859c255d5212ad5284e1a7225cb83092116c188327\",\"dweb:/ipfs/QmeURXtkWV5G89qv6wYbEmwqoubb5YzYPRFQ5qpk1GiuaH\"]},\"src/StakeRegistryStorage.sol\":{\"keccak256\":\"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732\",\"dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s\"]},\"src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IRegistryCoordinator","name":"_registryCoordinator","type":"address"},{"internalType":"contract IDelegationManager","name":"_delegationManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"uint96","name":"minimumStake","type":"uint96","indexed":false}],"type":"event","name":"MinimumStakeForQuorumUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32","indexed":true},{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":false},{"internalType":"uint96","name":"stake","type":"uint96","indexed":false}],"type":"event","name":"OperatorStakeUpdate","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true}],"type":"event","name":"QuorumCreated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyAddedToQuorum","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false},{"internalType":"uint256","name":"multiplier","type":"uint256","indexed":false}],"type":"event","name":"StrategyMultiplierUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8","indexed":true},{"internalType":"contract IStrategy","name":"strategy","type":"address","indexed":false}],"type":"event","name":"StrategyRemovedFromQuorum","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_WEIGHING_FUNCTION_LENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WEIGHTING_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"struct IStakeRegistry.StrategyParams[]","name":"_strategyParams","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"addStrategies"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getCurrentStake","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getCurrentTotalStake","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getLatestStakeUpdate","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getStakeAtBlockNumber","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStakeAtBlockNumberAndIndex","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeHistory","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate[]","name":"","type":"tuple[]","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStakeUpdateAtIndex","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"}],"stateMutability":"view","type":"function","name":"getStakeUpdateIndexAtBlockNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStakeAtBlockNumberFromIndex","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"getTotalStakeHistoryLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint32","name":"blockNumber","type":"uint32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"view","type":"function","name":"getTotalStakeIndicesAtBlockNumber","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStakeUpdateAtIndex","outputs":[{"internalType":"struct IStakeRegistry.StakeUpdate","name":"","type":"tuple","components":[{"internalType":"uint32","name":"updateBlockNumber","type":"uint32"},{"internalType":"uint32","name":"nextUpdateBlockNumber","type":"uint32"},{"internalType":"uint96","name":"stake","type":"uint96"}]}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint96","name":"minimumStake","type":"uint96"},{"internalType":"struct IStakeRegistry.StrategyParams[]","name":"_strategyParams","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}],"stateMutability":"nonpayable","type":"function","name":"initializeQuorum"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"minimumStakeForQuorum","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256[]","name":"strategyIndices","type":"uint256[]"},{"internalType":"uint96[]","name":"newMultipliers","type":"uint96[]"}],"stateMutability":"nonpayable","type":"function","name":"modifyStrategyParams"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator","outputs":[{"internalType":"uint96[]","name":"","type":"uint96[]"},{"internalType":"uint96[]","name":"","type":"uint96[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256[]","name":"indicesToRemove","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"removeStrategies"},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint96","name":"minimumStake","type":"uint96"}],"stateMutability":"nonpayable","type":"function","name":"setMinimumStakeForQuorum"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategiesPerQuorum","outputs":[{"internalType":"contract IStrategy","name":"","type":"address"}]},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategyParams","outputs":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"strategyParamsByIndex","outputs":[{"internalType":"struct IStakeRegistry.StrategyParams","name":"","type":"tuple","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"}],"stateMutability":"view","type":"function","name":"strategyParamsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"operatorId","type":"bytes32"},{"internalType":"bytes","name":"quorumNumbers","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorStake","outputs":[{"internalType":"uint192","name":"","type":"uint192"}]},{"inputs":[{"internalType":"uint8","name":"quorumNumber","type":"uint8"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"weightOfOperatorForQuorum","outputs":[{"internalType":"uint96","name":"","type":"uint96"}]}],"devdoc":{"kind":"dev","methods":{"addStrategies(uint8,(address,uint96)[])":{"details":"Checks to make sure that the *same* strategy cannot be added multiple times (checks against both against existing and new strategies).This function has no check to make sure that the strategies for a single quorum have the same underlying asset. This is a concious choice, since a middleware may want, e.g., a stablecoin quorum that accepts USDC, USDT, DAI, etc. as underlying assets and trades them as \"equivalent\"."},"deregisterOperator(bytes32,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already deregistered 5) `quorumNumbers` is a subset of the quorumNumbers that the operator is registered for","params":{"operatorId":"The id of the operator to deregister.","quorumNumbers":"The quorum numbers the operator is deregistering from, where each byte is an 8 bit integer quorumNumber."}},"getCurrentStake(bytes32,uint8)":{"details":"Function returns weight of **0** in the event that the operator has no stake history"},"getCurrentTotalStake(uint8)":{"details":"Will revert if `_totalStakeHistory[quorumNumber]` is empty."},"getLatestStakeUpdate(bytes32,uint8)":{"details":"Function returns an StakeUpdate struct with **every entry equal to 0** in the event that the operator has no stake history"},"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"blockNumber":"Block number to make sure the stake is from.","index":"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.","operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getStakeHistory(bytes32,uint8)":{"params":{"operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getStakeUpdateAtIndex(uint8,bytes32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"index":"Array index for lookup, within the dynamic array `operatorStakeHistory[operatorId][quorumNumber]`.","operatorId":"The id of the operator of interest.","quorumNumber":"The quorum number to get the stake for."}},"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":{"details":"Function will revert if `index` is out-of-bounds.","params":{"blockNumber":"Block number to make sure the stake is from.","index":"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.","quorumNumber":"The quorum number to get the stake for."}},"getTotalStakeIndicesAtBlockNumber(uint32,bytes)":{"details":"Function will revert if there are no indices for the given `blockNumber`","params":{"blockNumber":"Block number to retrieve the stake indices from.","quorumNumbers":"The quorum numbers to get the stake indices for."}},"getTotalStakeUpdateAtIndex(uint8,uint256)":{"params":{"index":"Array index for lookup, within the dynamic array `_totalStakeHistory[quorumNumber]`.","quorumNumber":"The quorum number to get the stake for."}},"modifyStrategyParams(uint8,uint256[],uint96[])":{"params":{"newMultipliers":"are the new multipliers for the strategies","quorumNumber":"is the quorum number to which the strategies belong","strategyIndices":"are the indices of the strategies to change"}},"registerOperator(address,bytes32,bytes)":{"details":"access restricted to the RegistryCoordinatorPreconditions (these are assumed, not validated in this contract): 1) `quorumNumbers` has no duplicates 2) `quorumNumbers.length` != 0 3) `quorumNumbers` is ordered in ascending order 4) the operator is not already registered","params":{"operator":"The address of the operator to register.","operatorId":"The id of the operator to register.","quorumNumbers":"The quorum numbers the operator is registering for, where each byte is an 8 bit integer quorumNumber."},"returns":{"_0":"The operator's current stake for each quorum, and the total stake for each quorum"}},"removeStrategies(uint8,uint256[])":{"details":"higher indices should be *first* in the list of @param indicesToRemove, since otherwise the removal of lower index entries will cause a shift in the indices of the other strategies to remove"},"updateOperatorStake(address,bytes32,bytes)":{"returns":{"_0":"A bitmap of quorums where the operator no longer meets the minimum stake and should be deregistered."}},"weightOfOperatorForQuorum(uint8,address)":{"details":"reverts if the quorum does not exist"}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_WEIGHING_FUNCTION_LENGTH()":{"notice":"Maximum length of dynamic arrays in the `strategyParams` mapping."},"WEIGHTING_DIVISOR()":{"notice":"Constant used as a divisor in calculating weights."},"addStrategies(uint8,(address,uint96)[])":{"notice":"Adds strategies and weights to the quorum"},"delegation()":{"notice":"The address of the Delegation contract for EigenLayer."},"deregisterOperator(bytes32,bytes)":{"notice":"Deregisters the operator with `operatorId` for the specified `quorumNumbers`."},"getCurrentStake(bytes32,uint8)":{"notice":"Returns the most recent stake weight for the `operatorId` for quorum `quorumNumber`"},"getCurrentTotalStake(uint8)":{"notice":"Returns the stake weight from the latest entry in `_totalStakeHistory` for quorum `quorumNumber`."},"getLatestStakeUpdate(bytes32,uint8)":{"notice":"Returns the most recent stake weight for the `operatorId` for a certain quorum"},"getStakeAtBlockNumber(bytes32,uint8,uint32)":{"notice":"Returns the stake of the operator for the provided `quorumNumber` at the given `blockNumber`"},"getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)":{"notice":"Returns the stake weight corresponding to `operatorId` for quorum `quorumNumber`, at the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array if it was the operator's stake at `blockNumber`. Reverts otherwise."},"getStakeHistory(bytes32,uint8)":{"notice":"Returns the entire `operatorStakeHistory[operatorId][quorumNumber]` array."},"getStakeHistoryLength(bytes32,uint8)":{"notice":"Returns the length of an operator's stake history for the given quorum"},"getStakeUpdateAtIndex(uint8,bytes32,uint256)":{"notice":"Returns the `index`-th entry in the `operatorStakeHistory[operatorId][quorumNumber]` array."},"getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)":{"notice":"Returns the indices of the operator stakes for the provided `quorumNumber` at the given `blockNumber`"},"getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)":{"notice":"Returns the total stake weight for quorum `quorumNumber`, at the `index`-th entry in the `_totalStakeHistory[quorumNumber]` array if it was the stake at `blockNumber`. Reverts otherwise."},"getTotalStakeHistoryLength(uint8)":{"notice":"Returns the length of the total stake history for the given quorum"},"getTotalStakeIndicesAtBlockNumber(uint32,bytes)":{"notice":"Returns the indices of the total stakes for the provided `quorumNumbers` at the given `blockNumber`"},"getTotalStakeUpdateAtIndex(uint8,uint256)":{"notice":"Returns the `index`-th entry in the dynamic array of total stake, `_totalStakeHistory` for quorum `quorumNumber`."},"initializeQuorum(uint8,uint96,(address,uint96)[])":{"notice":"Initialize a new quorum and push its first history update"},"minimumStakeForQuorum(uint8)":{"notice":"In order to register for a quorum i, an operator must have at least `minimumStakeForQuorum[i]` evaluated by this contract's 'VoteWeigher' logic."},"modifyStrategyParams(uint8,uint256[],uint96[])":{"notice":"Modifies the weights of existing strategies for a specific quorum"},"registerOperator(address,bytes32,bytes)":{"notice":"Registers the `operator` with `operatorId` for the specified `quorumNumbers`."},"registryCoordinator()":{"notice":"the coordinator contract that this registry is associated with"},"removeStrategies(uint8,uint256[])":{"notice":"Remove strategies and their associated weights from the quorum's considered strategies"},"strategyParams(uint8,uint256)":{"notice":"mapping from quorum number to the list of strategies considered and their corresponding multipliers for that specific quorum"},"strategyParamsByIndex(uint8,uint256)":{"notice":"Returns the strategy and weight multiplier for the `index`'th strategy in the quorum `quorumNumber`"},"strategyParamsLength(uint8)":{"notice":"Returns the length of the dynamic array stored in `strategyParams[quorumNumber]`."},"updateOperatorStake(address,bytes32,bytes)":{"notice":"Called by the registry coordinator to update an operator's stake for one or more quorums. If the operator no longer has the minimum stake required for a quorum, they are added to the `quorumsToRemove`, which is returned to the registry coordinator"},"weightOfOperatorForQuorum(uint8,address)":{"notice":"This function computes the total weight of the @param operator in the quorum @param quorumNumber."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/StakeRegistry.sol":"StakeRegistry"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x9906828f285cc76bbbe077f908d87c4bffd0a3bff9394f7a4b60a9d9a2672c1e","urls":["bzz-raw://4c0f43e14e50ac322685b5cd301459118e2770bdfb053f8f3ded08ee9fbf5bf9","dweb:/ipfs/QmPQtY6KEUCbrKwweu8BvA7YjnXXxkkuZPyLSRGV5EoPTe"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x1f8e17b0f952042132ca64e202022d83783b7f42ec364cd0cad1950ecb95a13d","urls":["bzz-raw://a2be4c476902f25fb058f779e3d4e5b1182d9dc9fbdec518acbe9544c0d3c141","dweb:/ipfs/QmdgZq6JrCD36Xry2vD8QSeGguGQ9TGWY2CMvKrhR9NQ6u"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x3d9eeecf96bd8d6427445db76b9a73f9861c6c3601001226bed2f7fb81e252e6","urls":["bzz-raw://c836719a65892c5cffdba9de4e009e5f8a4e49aea9c5f46d57b15660c6c2d07d","dweb:/ipfs/QmWuzNq2HdEH1hsRg8Jc95k1DZdNjXFb5ehkz9iLNNSqhT"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0xaeee2ac5cfcc3388b63bef2668fa435c65a4b433b52ce9f5013822c6ec875fa3","urls":["bzz-raw://86eb6d3da5b45f7509995ffa170eaaadffbdd6d43e50f0902d421bb93a7dfda6","dweb:/ipfs/QmWaYcgtnaVpcekSP7LyY6AGrE3hRE3kZE4H4EKhsSysDG"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x1c5895f913e95682b0c371595cb1fa0d9c34ea921a0fbb5c32201b4315e80a56","urls":["bzz-raw://c470e449a3144fbaaa17b44823ba9cba901f063b04355c800bf62cabdd081cd4","dweb:/ipfs/QmSJ8gaAF4WA1aXGmLesnnRo8fDZNEFnqZSGNkJnXLRM9R"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0xcf8422dfa6ccc393de19417570c6239e0fde54de9433ea258cbeb6937ff7f316","urls":["bzz-raw://328e582c05b7311ad4107c46f554f15b5572b89a4ab6d067c73425b7418d946c","dweb:/ipfs/QmdM81GQY5nok5oCTP8Cc6M8s1UC9f6ZbSWybaUxrZNrmY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"src/StakeRegistry.sol":{"keccak256":"0xb065491d1a4ab43172487534f297369c2eefe9548d6db0cc41f870566f0d6bff","urls":["bzz-raw://53a87f0a1ff6655ae03cc8859c255d5212ad5284e1a7225cb83092116c188327","dweb:/ipfs/QmeURXtkWV5G89qv6wYbEmwqoubb5YzYPRFQ5qpk1GiuaH"],"license":"BUSL-1.1"},"src/StakeRegistryStorage.sol":{"keccak256":"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1","urls":["bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732","dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s"],"license":"BUSL-1.1"},"src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":105}