{"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":"0x60c06040523480156200001157600080fd5b50604051620033c8380380620033c8833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516132e9620000df6000396000818161037a01528181611a470152611b7901526000818161052901526118a801526132e96000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014ff58f962c083308950481a7d5ae50e5b88cb74d4055f79ebcb8b279b74033e64736f6c634300080c0033","sourceMap":"960:31883:118:-:0;;;1350:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2269:51:119;;;;;2330:31;;;960:31883:118;;14:153:169;-1:-1:-1;;;;;111:31:169;;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:169;537:25;571:55;:::i;:::-;645:7;635:17;;;172:486;;;;;:::o;:::-;960:31883:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612803565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e36600461281e565b610597565b604051610217929190612848565b61025461024f36600461287f565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a3660046128fa565b610602565b005b61029461028f3660046129bb565b610860565b604051610217929190612a5a565b6102b56102b0366004612a7f565b610a78565b6040516102179190612aab565b61020d6102d0366004612803565b60ff1660009081526003602052604090205490565b61020d6102f3366004612a7f565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612a7f565b610b17565b61020d670de0b6b3a764000081565b61027f610345366004612bb4565b610b30565b61035d6103583660046129bb565b610e78565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc366004612c70565b610f17565b6040516102179190612cc2565b61039c6103fc36600461281e565b611157565b61041461040f366004612d00565b61118f565b6040516102179190612d33565b61043461042f36600461281e565b611227565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f36600461281e565b6112a1565b61027f610482366004612d7f565b611330565b61027f610495366004612da9565b611351565b6102546104a8366004612803565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004612e75565b6113c3565b6102546104e4366004612ec2565b6113df565b6102546104f7366004612803565b61145d565b61050f61050a366004612efe565b6114b0565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004612f3a565b6114c5565b61041461056c366004612a7f565b61155a565b61025461057f366004612efe565b61163f565b61027f610592366004612f7c565b6116a0565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b6000826105ec816117cb565b60006105f88585611847565b5095945050505050565b61060a611a45565b84610614816117cb565b838061068f576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084015b60405180910390fd5b8281146107045760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610686565b60ff87166000908152600360205260408120905b828110156108555785858281811061073257610732612fd9565b90506020020160208101906107479190612fef565b8289898481811061075a5761075a612fd9565b905060200201358154811061077157610771612fd9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106107da576107da612fd9565b90506020020135815481106107f1576107f1612fd9565b6000918252602090912001546001600160a01b031688888581811061081857610818612fd9565b905060200201602081019061082d9190612fef565b60405161083b929190612848565b60405180910390a28061084d81613020565b915050610718565b505050505050505050565b60608061086b611b6e565b6000836001600160401b0381111561088557610885612b23565b6040519080825280602002602001820160405280156108ae578160200160208202803683370190505b5090506000846001600160401b038111156108cb576108cb612b23565b6040519080825280602002602001820160405280156108f4578160200160208202803683370190505b50905060005b85811015610a6a57600087878381811061091657610916612fd9565b919091013560f81c915061092b9050816117cb565b600080610938838d611847565b91509150806109d55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610686565b60006109e28c8585611c21565b9050828786815181106109f7576109f7612fd9565b60200260200101906001600160601b031690816001600160601b031681525050610a218482611ea1565b868681518110610a3357610a33612fd9565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610a6290613020565b9150506108fa565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610b0a576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610ab1565b5050505090505b92915050565b600080610b24848461155a565b60400151949350505050565b610b38611a45565b81610b42816117cb565b815180610bb75760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610686565b60ff841660009081526003602090815260408083206004909252822090915b83811015610e6f578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610c1657610c16612fd9565b602002602001015181548110610c2e57610c2e612fd9565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610c8c57610c8c612fd9565b602002602001015181548110610ca457610ca4612fd9565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610ce49060019061303b565b81548110610cf457610cf4612fd9565b9060005260206000200183878381518110610d1157610d11612fd9565b602002602001015181548110610d2957610d29612fd9565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610d7c57610d7c613052565b60008281526020812082016000199081019190915501905581548290610da49060019061303b565b81548110610db457610db4612fd9565b9060005260206000200160009054906101000a90046001600160a01b031682878381518110610de557610de5612fd9565b602002602001015181548110610dfd57610dfd612fd9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081805480610e3b57610e3b613052565b600082815260209020810160001990810180546001600160a01b031916905501905580610e6781613020565b915050610bd6565b50505050505050565b6000610e82611b6e565b6000805b838110156105f8576000858583818110610ea257610ea2612fd9565b919091013560f81c9150610eb79050816117cb565b600080610ec4838b611847565b9150915080610ee65760009150600160ff84161b6001600160c01b0386161794505b6000610ef38a8585611c21565b9050610eff8482611ea1565b50505050508080610f0f90613020565b915050610e86565b60606000826001600160401b03811115610f3357610f33612b23565b604051908082528060200260200182016040528015610f5c578160200160208202803683370190505b50905060005b8381101561114c576000858583818110610f7e57610f7e612fd9565b919091013560f81c9150610f939050816117cb565b60ff81166000908152600160205260408120805463ffffffff8a169290610fbc57610fbc612fd9565b60009182526020909120015463ffffffff1611156110685760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610686565b60ff8116600090815260016020526040812054905b818110156111365760ff8316600090815260016020819052604090912063ffffffff8b16916110ac848661303b565b6110b6919061303b565b815481106110c6576110c6612fd9565b60009182526020909120015463ffffffff16116111245760016110e9828461303b565b6110f3919061303b565b85858151811061110557611105612fd9565b602002602001019063ffffffff16908163ffffffff1681525050611136565b8061112e81613020565b91505061107d565b505050808061114490613020565b915050610f62565b5090505b9392505050565b6004602052816000526040600020818154811061117357600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106111d4576111d4612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff8316600090815260036020526040902080548390811061125f5761125f612fd9565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260019052919091208054839081106112de576112de612fd9565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b611338611a45565b81611342816117cb565b61134c838361201b565b505050565b611359611b6e565b60005b818110156113bd57600083838381811061137857611378612fd9565b919091013560f81c915061138d9050816117cb565b600061139b86836000611c21565b90506113a78282611ea1565b50505080806113b590613020565b91505061135c565b50505050565b6113cb611a45565b816113d5816117cb565b61134c8383612084565b60ff8316600090815260016020526040812080548291908490811061140657611406612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610b2481856124c7565b60ff8116600090815260016020819052604082208054909161147e9161303b565b8154811061148e5761148e612fd9565b600091825260209091200154600160401b90046001600160601b031692915050565b60006114bd848484612641565b949350505050565b600082815260026020908152604080832060ff8816845290915281208054829190849081106114f6576114f6612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b9093049290921690820152905061154d81866124c7565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff871683528152848220548551938401865282845290830182905293820152909190816115b3579150610b119050565b600085815260026020908152604080832060ff8816845290915290206115da60018461303b565b815481106115ea576115ea612fd9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610b11915050565b600083815260026020908152604080832060ff861684529091528120611666858585612641565b63ffffffff168154811061167c5761167c612fd9565b600091825260209091200154600160401b90046001600160601b0316949350505050565b6116a8611b6e565b60ff8316600090815260016020526040902054156117265760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610686565b6117308382612084565b61173a838361201b565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81166000908152600160205260409020546118445760405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608401610686565b50565b6000806000806118668660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926390041347926118db928c9201613068565b600060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261192091908101906130c7565b905060005b83811015611a115760ff8916600090815260036020526040902080548290811061195157611951612fd9565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b031690820152835190945083908390811061199f5761199f612fd9565b602002602001015111156119ff57670de0b6b3a764000083602001516001600160601b03168383815181106119d6576119d6612fd9565b60200260200101516119e89190613157565b6119f29190613176565b6119fc9086613198565b94505b80611a0981613020565b915050611925565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac791906131c3565b6001600160a01b0316336001600160a01b031614611b6c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a401610686565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611b6c5760405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a401610686565b600083815260026020908152604080832060ff86168452909152812054819080611ce557600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611e47565b600086815260026020908152604080832060ff891684529091528120611d0c60018461303b565b81548110611d1c57611d1c612fd9565b600091825260209091200180546001600160601b03600160401b909104811694509091508516831415611d555760009350505050611150565b80544363ffffffff90811691161415611d8f578054600160401b600160a01b031916600160401b6001600160601b03871602178155611e45565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a2611e9782856127a7565b9695505050505050565b60ff821660009081526001602081905260408220805491839190611ec5908461303b565b81548110611ed557611ed5612fd9565b9060005260206000200190508360001415611f045754600160401b90046001600160601b03169150610b119050565b8054600090611f2390600160401b90046001600160601b0316866127bf565b82549091504363ffffffff90811691161415611f60578154600160401b600160a01b031916600160401b6001600160601b03831602178255612012565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116120e95760405162461bcd60e51b8152602060048201526038602482015260008051602061329483398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610686565b805160ff83166000908152600360209081526040909120549061210c83836131e0565b111561217c5760405162461bcd60e51b8152602060048201526045602482015260008051602061329483398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610686565b60005b828110156124c05760005b61219482846131e0565b811015612275578482815181106121ad576121ad612fd9565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106121ec576121ec612fd9565b6000918252602090912001546001600160a01b031614156122635760405162461bcd60e51b815260206004820152603d602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610686565b8061226d81613020565b91505061218a565b50600084828151811061228a5761228a612fd9565b6020026020010151602001516001600160601b03161161230f5760405162461bcd60e51b8152602060048201526046602482015260008051602061329483398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610686565b60ff85166000908152600360205260409020845185908390811061233557612335612fd9565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061239a5761239a612fd9565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061241157612411612fd9565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061246e5761246e612fd9565b60200260200101516000015186848151811061248c5761248c612fd9565b6020026020010151602001516040516124a6929190612848565b60405180910390a2806124b881613020565b91505061217f565b5050505050565b816000015163ffffffff168163ffffffff16101561256c5760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610686565b602082015163ffffffff1615806125925750816020015163ffffffff168163ffffffff16105b61263d5760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610686565b5050565b600083815260026020908152604080832060ff86168452909152812054805b80156126e257600086815260026020908152604080832060ff89168452909152902063ffffffff85169061269560018461303b565b815481106126a5576126a5612fd9565b60009182526020909120015463ffffffff16116126d0576126c760018261303b565b92505050611150565b806126da816131f8565b915050612660565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610686565b60006111506001600160601b0380851690841661320f565b6000808212156127e3576127d28261324e565b6127dc908461326b565b9050610b11565b6127dc8284613198565b803560ff811681146127fe57600080fd5b919050565b60006020828403121561281557600080fd5b611150826127ed565b6000806040838503121561283157600080fd5b61283a836127ed565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b038116811461184457600080fd5b6000806040838503121561289257600080fd5b61289b836127ed565b915060208301356128ab8161286a565b809150509250929050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208260051b8501011115611a3e57600080fd5b60008060008060006060868803121561291257600080fd5b61291b866127ed565b945060208601356001600160401b038082111561293757600080fd5b61294389838a016128b6565b9096509450604088013591508082111561295c57600080fd5b50612969888289016128b6565b969995985093965092949392505050565b60008083601f84011261298c57600080fd5b5081356001600160401b038111156129a357600080fd5b602083019150836020828501011115611a3e57600080fd5b600080600080606085870312156129d157600080fd5b84356129dc8161286a565b93506020850135925060408501356001600160401b038111156129fe57600080fd5b612a0a8782880161297a565b95989497509550505050565b600081518084526020808501945080840160005b83811015612a4f5781516001600160601b031687529582019590820190600101612a2a565b509495945050505050565b604081526000612a6d6040830185612a16565b82810360208401526120128185612a16565b60008060408385031215612a9257600080fd5b82359150612aa2602084016127ed565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757612b0483855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612ac7565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612b5b57612b5b612b23565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b8957612b89612b23565b604052919050565b60006001600160401b03821115612baa57612baa612b23565b5060051b60200190565b60008060408385031215612bc757600080fd5b612bd0836127ed565b91506020808401356001600160401b03811115612bec57600080fd5b8401601f81018613612bfd57600080fd5b8035612c10612c0b82612b91565b612b61565b81815260059190911b82018301908381019088831115612c2f57600080fd5b928401925b82841015612c4d57833582529284019290840190612c34565b80955050505050509250929050565b803563ffffffff811681146127fe57600080fd5b600080600060408486031215612c8557600080fd5b612c8e84612c5c565b925060208401356001600160401b03811115612ca957600080fd5b612cb58682870161297a565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612b1757835163ffffffff1683529284019291840191600101612cde565b600080600060608486031215612d1557600080fd5b612d1e846127ed565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610b11565b80356001600160601b03811681146127fe57600080fd5b60008060408385031215612d9257600080fd5b612d9b836127ed565b9150612aa260208401612d68565b600080600060408486031215612dbe57600080fd5b8335925060208401356001600160401b03811115612ca957600080fd5b600082601f830112612dec57600080fd5b81356020612dfc612c0b83612b91565b82815260069290921b84018101918181019086841115612e1b57600080fd5b8286015b84811015612e6a5760408189031215612e385760008081fd5b612e40612b39565b8135612e4b8161286a565b8152612e58828601612d68565b81860152835291830191604001612e1f565b509695505050505050565b60008060408385031215612e8857600080fd5b612e91836127ed565b915060208301356001600160401b03811115612eac57600080fd5b612eb885828601612ddb565b9150509250929050565b600080600060608486031215612ed757600080fd5b612ee0846127ed565b9250612eee60208501612c5c565b9150604084013590509250925092565b600080600060608486031215612f1357600080fd5b83359250612f23602085016127ed565b9150612f3160408501612c5c565b90509250925092565b60008060008060808587031215612f5057600080fd5b612f59856127ed565b9350612f6760208601612c5c565b93969395505050506040820135916060013590565b600080600060608486031215612f9157600080fd5b612f9a846127ed565b9250612fa860208501612d68565b915060408401356001600160401b03811115612fc357600080fd5b612fcf86828701612ddb565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300157600080fd5b61115082612d68565b634e487b7160e01b600052601160045260246000fd5b60006000198214156130345761303461300a565b5060010190565b60008282101561304d5761304d61300a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b818110156130b957855485168352600195860195928401920161309b565b509098975050505050505050565b600060208083850312156130da57600080fd5b82516001600160401b038111156130f057600080fd5b8301601f8101851361310157600080fd5b805161310f612c0b82612b91565b81815260059190911b8201830190838101908783111561312e57600080fd5b928401925b8284101561314c57835182529284019290840190613133565b979650505050505050565b60008160001904831182151516156131715761317161300a565b500290565b60008261319357634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156131ba576131ba61300a565b01949350505050565b6000602082840312156131d557600080fd5b81516111508161286a565b600082198211156131f3576131f361300a565b500190565b6000816132075761320761300a565b506000190190565b60008083128015600160ff1b85018412161561322d5761322d61300a565b6001600160ff1b03840183138116156132485761324861300a565b50500390565b6000600160ff1b8214156132645761326461300a565b5060000390565b60006001600160601b038381169083168181101561328b5761328b61300a565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122014ff58f962c083308950481a7d5ae50e5b88cb74d4055f79ebcb8b279b74033e64736f6c634300080c0033","sourceMap":"960:31883:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28835:151;;;;;;:::i;:::-;28940:32;;28914:7;28940:32;;;:18;:32;;;;;:39;;28835:151;;;;508:25:169;;;496:2;481:18;28835:151:118;;;;;;;;2016:56:119;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;22838:268:118:-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1747:39:169;;;1729:58;;1717:2;1702:18;22838:268:118;1585:208:169;11506:891:118;;;;;;:::i;:::-;;:::i;:::-;;2588:1489;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;24450:203::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23210:139::-;;;;;;:::i;:::-;23307:28;;23281:7;23307:28;;;:14;:28;;;;;:35;;23210:139;24008:202;;;;;;:::i;:::-;24124:7;24150:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;;;:53;;24008:202;24871:242;;;;;;:::i;:::-;;:::i;748:48:119:-;;792:4;748:48;;10027:1151:118;;;;;;:::i;:::-;;:::i;6203:1812::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8184:32:169;;;8166:51;;8154:2;8139:18;6203:1812:118;8020:203:169;1270:44:119;;;;;;;;-1:-1:-1;;;;;8392:32:169;;;8374:51;;8362:2;8347:18;1270:44:119;8228:203:169;884:55:119;;937:2;884:55;;;;;8608:4:169;8596:17;;;8578:36;;8566:2;8551:18;884:55:119;8436:184:169;31182:1005:118;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2078:56:119:-;;;;;;:::i;:::-;;:::i;26319:236:118:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23471:196::-;;;;;;:::i;:::-;;:::i;:::-;;;;10979:13:169;;-1:-1:-1;;;;;10975:39:169;10957:58;;11075:4;11063:17;;;11057:24;-1:-1:-1;;;;;11053:57:169;11031:20;;;11024:87;;;;10930:18;23471:196:118;10745:372:169;29704:199:118;;;;;;:::i;:::-;;:::i;8697:231::-;;;;;;:::i;:::-;;:::i;4848:919::-;;;;;;:::i;:::-;;:::i;1490:53:119:-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1490:53:119;;;9457:236:118;;;;;;:::i;:::-;;:::i;30440:368::-;;;;;;:::i;:::-;;:::i;29193:188::-;;;;;;:::i;:::-;;:::i;27149:270::-;;;;;;:::i;:::-;;:::i;:::-;;;14385:10:169;14373:23;;;14355:42;;14343:2;14328:18;27149:270:118;14211:192:169;1138:46:119;;;;;28086:413:118;;;;;;:::i;:::-;;:::i;25364:517::-;;;;;;:::i;:::-;;:::i;26670:355::-;;;;;;:::i;:::-;;:::i;8095:596::-;;;;;;:::i;:::-;;:::i;2016:56:119:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2016:56:119;;;-1:-1:-1;;;;2016:56:119;;-1:-1:-1;;;;;2016:56:119;;-1:-1:-1;2016:56:119;:::o;22838:268:118:-;22990:6;22967:12;1294:32;1313:12;1294:18;:32::i;:::-;23009:12:::1;23027:50;23054:12;23068:8;23027:26;:50::i;:::-;-1:-1:-1::0;23008:69:118;22838:268;-1:-1:-1;;;;;22838:268:118:o;11506:891::-;1186:32;:30;:32::i;:::-;11705:12:::1;1294:32;1313:12;1294:18;:32::i;:::-;11749:15:::0;11789:13;11781:90:::2;;;::::0;;-1:-1:-1;;;11781:90:118;;15783:2:169;11781:90:118::2;::::0;::::2;15765:21:169::0;15802:18;;;15795:30;;;;15861:34;15841:18;;;15834:62;15932:34;15912:18;;;15905:62;15984:19;;11781:90:118::2;;;;;;;;;11889:34:::0;;::::2;11881:104;;;::::0;-1:-1:-1;;;11881:104:118;;16216:2:169;11881:104:118::2;::::0;::::2;16198:21:169::0;16255:2;16235:18;;;16228:30;16294:34;16274:18;;;16267:62;16365:27;16345:18;;;16338:55;16410:19;;11881:104:118::2;16014:421:169::0;11881:104:118::2;12039:28;::::0;::::2;11996:40;12039:28:::0;;;:14:::2;:28;::::0;;;;;12078:313:::2;12102:9;12098:1;:13;12078:313;;;12240:14;;12255:1;12240:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12191:15;12207;;12223:1;12207:18;;;;;;;:::i;:::-;;;;;;;12191:35;;;;;;;;:::i;:::-;;;;;;;;:46;;;:66;;;;;-1:-1:-1::0;;;;;12191:66:118::2;;;;;-1:-1:-1::0;;;;;12191:66:118::2;;;;;;12302:12;12276:104;;;12316:15;12332;;12348:1;12332:18;;;;;;;:::i;:::-;;;;;;;12316:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;:44:::0;-1:-1:-1;;;;;12316:44:118::2;12362:14:::0;;12377:1;12362:17;;::::2;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12276:104;;;;;;;:::i;:::-;;;;;;;;12113:3:::0;::::2;::::0;::::2;:::i;:::-;;;;12078:313;;;;11719:678;;1228:1:::1;11506:891:::0;;;;;:::o;2588:1489::-;2760:15;2777;1093:27;:25;:27::i;:::-;2805:29:::1;2850:13:::0;-1:-1:-1;;;;;2837:34:118;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;2837:34:118::1;-1:-1:-1::0;2805:66:118;-1:-1:-1;2881:27:118::1;2924:13:::0;-1:-1:-1;;;;;2911:34:118;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;2911:34:118::1;;2881:64;;2960:9;2955:1070;2975:24:::0;;::::1;2955:1070;;;3045:18;3072:13;;3086:1;3072:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;::::0;-1:-1:-1;3103:32:118::1;::::0;-1:-1:-1;3072:16:118;3103:18:::1;:32::i;:::-;3288:19;3309:20:::0;3333:50:::1;3360:12;3374:8;3333:26;:50::i;:::-;3287:96;;;;3422:15;3397:165;;;::::0;-1:-1:-1;;;3397:165:118;;17564:2:169;3397:165:118::1;::::0;::::1;17546:21:169::0;17603:2;17583:18;;;17576:30;17642:34;17622:18;;;17615:62;17713:34;17693:18;;;17686:62;17785:29;17764:19;;;17757:58;17832:19;;3397:165:118::1;17362:495:169::0;3397:165:118::1;3620:17;3640:167;3697:10;3740:12;3780;3640:26;:167::i;:::-;3620:187;;3922:12;3903:13;3917:1;3903:16;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1::0;;;;;3903:31:118::1;;;-1:-1:-1::0;;;;;3903:31:118::1;;;::::0;::::1;3965:49;3989:12;4003:10;3965:23;:49::i;:::-;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;:66;-1:-1:-1::0;;;;;3948:66:118::1;;;-1:-1:-1::0;;;;;3948:66:118::1;;;::::0;::::1;3006:1019;;;;3001:3;;;;;:::i;:::-;;;;2955:1070;;;-1:-1:-1::0;4043:13:118;;;;-1:-1:-1;2588:1489:118;-1:-1:-1;;;;;2588:1489:118:o;24450:203::-;24600:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;24593:53;;;;;;;;;;;;;;;;;24561:20;;24593:53;;24600:46;;24593:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24593:53:118;;;;;;;-1:-1:-1;;;24593:53:118;;-1:-1:-1;;;;;24593:53:118;;;;;;;;;;;;;;;;;;;;;;24450:203;;;;;:::o;24871:242::-;24959:6;24977:38;25018:46;25039:10;25051:12;25018:20;:46::i;:::-;25081:25;;;;24871:242;-1:-1:-1;;;;24871:242:118:o;10027:1151::-;1186:32;:30;:32::i;:::-;10178:12:::1;1294:32;1313:12;1294:18;:32::i;:::-;10227:22:::0;;10267:18;10259:92:::2;;;::::0;-1:-1:-1;;;10259:92:118;;18064:2:169;10259:92:118::2;::::0;::::2;18046:21:169::0;18103:2;18083:18;;;18076:30;18142:34;18122:18;;;18115:62;18213:31;18193:18;;;18186:59;18262:19;;10259:92:118::2;17862:425:169::0;10259:92:118::2;10405:28;::::0;::::2;10362:40;10405:28:::0;;;:14:::2;:28;::::0;;;;;;;10486:19:::2;:33:::0;;;;;10405:28;;10530:642:::2;10554:14;10550:1;:18;10530:642;;;10620:12;10594:85;;;10634:15;10650;10666:1;10650:18;;;;;;;;:::i;:::-;;;;;;;10634:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;::::2;:44:::0;10594:85:::2;::::0;-1:-1:-1;;;;;10634:44:118;;::::2;8374:51:169::0;;8347:18;10594:85:118::2;;;;;;;10724:12;10698:88;;;10738:15;10754;10770:1;10754:18;;;;;;;;:::i;:::-;;;;;;;10738:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;;;::::2;:44:::0;10698:88:::2;::::0;;-1:-1:-1;;;;;10738:44:118;;::::2;18492:51:169::0;;18559:18;;;18552:34;;;;18465:18;10698:88:118::2;;;;;;;10949:22:::0;;10933:15;;10949:26:::2;::::0;10974:1:::2;::::0;10949:26:::2;:::i;:::-;10933:43;;;;;;;;:::i;:::-;;;;;;;;10895:15;10911;10927:1;10911:18;;;;;;;;:::i;:::-;;;;;;;10895:35;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;:81;;:35;::::2;:81:::0;;-1:-1:-1;;;;;;10895:81:118::2;-1:-1:-1::0;;;;;10895:81:118;;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;;;;;;10895:81:118;;;::::2;;;;::::0;;10990:21;;:15;;:21;::::2;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;10990:21:118;;;;;;;;;;11089:27;;11068:20;;11089:31:::2;::::0;10990:21:::2;::::0;11089:31:::2;:::i;:::-;11068:53;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11068:53:118::2;11025:20;11046:15;11062:1;11046:18;;;;;;;;:::i;:::-;;;;;;;11025:40;;;;;;;;:::i;:::-;;;;;;;;;:96;;;;;-1:-1:-1::0;;;;;11025:96:118::2;;;;;-1:-1:-1::0;;;;;11025:96:118::2;;;;;;11135:20;:26;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;;-1:-1:-1;;11135:26:118;;;;;-1:-1:-1;;;;;;11135:26:118::2;::::0;;;;;10570:3;::::2;::::0;::::2;:::i;:::-;;;;10530:642;;;;10192:986;;;1228:1:::1;10027:1151:::0;;:::o;6203:1812::-;6374:7;1093:27;:25;:27::i;:::-;6393:23:::1;::::0;6797:1179:::1;6817:24:::0;;::::1;6797:1179;;;6862:18;6889:13;;6903:1;6889:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;::::0;-1:-1:-1;6920:32:118::1;::::0;-1:-1:-1;6889:16:118;6920:18:::1;:32::i;:::-;7132:18;7152:20:::0;7176:50:::1;7203:12;7217:8;7176:26;:50::i;:::-;7131:95;;;;7362:15;7357:151;;7411:1;::::0;-1:-1:-1;7805:1:130;:8;;;;-1:-1:-1;;;;;7456:22:118;::::1;7795:19:130::0;7430:63:118::1;;7357:151;7657:17;7677:165;7734:10;7776:12;7816:11;7677:26;:165::i;:::-;7657:185;;7916:49;7940:12;7954:10;7916:23;:49::i;:::-;;6848:1128;;;;6843:3;;;;;:::i;:::-;;;;6797:1179;;31182:1005:::0;31320:15;31347:23;31386:13;-1:-1:-1;;;;;31373:34:118;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31373:34:118;;31347:60;;31422:9;31417:740;31437:24;;;31417:740;;;31482:18;31509:13;;31523:1;31509:16;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;31540:32:118;;-1:-1:-1;31509:16:118;31540:18;:32::i;:::-;31611;;;;;;;:18;:32;;;;;:35;;:68;;;;:32;:35;;;;:::i;:::-;;;;;;;;;;:53;;;:68;;31586:218;;;;-1:-1:-1;;;31586:218:118;;19061:2:169;31586:218:118;;;19043:21:169;19100:2;19080:18;;;19073:30;19139:34;19119:18;;;19112:62;19210:34;19190:18;;;19183:62;19282:29;19261:19;;;19254:58;19329:19;;31586:218:118;18859:495:169;31586:218:118;31835:32;;;31818:14;31835:32;;;:18;:32;;;;;:39;;31888:259;31912:6;31908:1;:10;31888:259;;;31947:32;;;;;;;:18;:32;;;;;;;;:81;;;;31980:10;31989:1;31980:6;:10;:::i;:::-;:14;;;;:::i;:::-;31947:48;;;;;;;;:::i;:::-;;;;;;;;;;:66;;;:81;31943:190;;32085:1;32072:10;32081:1;32072:6;:10;:::i;:::-;:14;;;;:::i;:::-;32052:7;32060:1;32052:10;;;;;;;;:::i;:::-;;;;;;:35;;;;;;;;;;;32109:5;;31943:190;31920:3;;;;:::i;:::-;;;;31888:259;;;;31468:689;;31463:3;;;;;:::i;:::-;;;;31417:740;;;-1:-1:-1;32173:7:118;-1:-1:-1;31182:1005:118;;;;;;:::o;2078:56:119:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2078:56:119;;-1:-1:-1;2078:56:119;;-1:-1:-1;2078:56:119:o;26319:236:118:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;26495:32:118;;;:20;:32;;;;;:46;;;;;;;;;;;:53;;26542:5;;26495:53;;;;;;:::i;:::-;;;;;;;;;;26488:60;;;;;;;;26495:53;;;;26488:60;;;;;;;-1:-1:-1;;;26488:60:118;;;;;;;;;;-1:-1:-1;;;26488:60:118;;;-1:-1:-1;;;;;26488:60:118;;;;;;;;;26319:236;-1:-1:-1;;;;26319:236:118:o;23471:196::-;-1:-1:-1;;;;;;;;;;;;;;;;;23625:28:118;;;;;;;:14;:28;;;;;:35;;23654:5;;23625:35;;;;;;:::i;:::-;;;;;;;;;;23618:42;;;;;;;;;23625:35;;23618:42;-1:-1:-1;;;;;23618:42:118;;;;-1:-1:-1;;;23618:42:118;;-1:-1:-1;;;;;23618:42:118;;;;;;;;;23471:196;-1:-1:-1;;;23471:196:118:o;29704:199::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;29857:32:118;;;;;:18;:32;;;;;;:39;;29890:5;;29857:39;;;;;;:::i;:::-;;;;;;;;;;29850:46;;;;;;;;29857:39;;;;29850:46;;;;;;;-1:-1:-1;;;29850:46:118;;;;;;;;;;-1:-1:-1;;;29850:46:118;;;-1:-1:-1;;;;;29850:46:118;;;;;;;;;29704:199;-1:-1:-1;;;29704:199:118:o;8697:231::-;1186:32;:30;:32::i;:::-;8844:12:::1;1294:32;1313:12;1294:18;:32::i;:::-;8868:53:::2;8894:12;8908;8868:25;:53::i;:::-;1228:1:::1;8697:231:::0;;:::o;4848:919::-;1093:27;:25;:27::i;:::-;5171:9:::1;5166:595;5186:24:::0;;::::1;5166:595;;;5231:18;5258:13;;5272:1;5258:16;;;;;;;:::i;:::-;::::0;;;::::1;;;;::::0;-1:-1:-1;5289:32:118::1;::::0;-1:-1:-1;5258:16:118;5289:18:::1;:32::i;:::-;5426:17;5446:157;5503:10;5546:12;5587:1;5446:26;:157::i;:::-;5426:177;;5701:49;5725:12;5739:10;5701:23;:49::i;:::-;;5217:544;;5212:3;;;;;:::i;:::-;;;;5166:595;;;;4848:919:::0;;;:::o;9457:236::-;1186:32;:30;:32::i;:::-;9613:12:::1;1294:32;1313:12;1294:18;:32::i;:::-;9637:49:::2;9656:12;9670:15;9637:18;:49::i;30440:368::-:0;30649:32;;;30593:6;30649:32;;;:18;:32;;;;;:39;;30593:6;;30649:32;30682:5;;30649:39;;;;;;:::i;:::-;;;;;;;;;;30611:77;;;;;;;;30649:39;;;;30611:77;;;;;;;-1:-1:-1;;;30611:77:118;;;;;;;;;;-1:-1:-1;;;;;;;;30611:77:118;;;;;;;;;;;;-1:-1:-1;30698:64:118;30611:77;30750:11;30698:33;:64::i;29193:188::-;29291:32;;;29266:6;29291:32;;;:18;:32;;;;;;;29324:39;;29291:32;;29324:43;;;:::i;:::-;29291:77;;;;;;;;:::i;:::-;;;;;;;;;;:83;-1:-1:-1;;;29291:83:118;;-1:-1:-1;;;;;29291:83:118;;;-1:-1:-1;;29193:188:118:o;27149:270::-;27304:6;27329:83;27374:10;27386:12;27400:11;27329:44;:83::i;:::-;27322:90;27149:270;-1:-1:-1;;;;27149:270:118:o;28086:413::-;28261:6;28320:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;28261:6;;28320:46;28367:5;;28320:53;;;;;;:::i;:::-;;;;;;;;;;28279:94;;;;;;;;28320:53;;;;28279:94;;;;;;;-1:-1:-1;;;28279:94:118;;;;;;;;;;-1:-1:-1;;;;;;;;28279:94:118;;;;;;;;;;;;-1:-1:-1;28383:67:118;28279:94;28438:11;28383:33;:67::i;:::-;28467:25;;;;28086:413;-1:-1:-1;;;;;28086:413:118:o;25364:517::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;25531:32:118;;;:20;:32;;;;;:46;;;;;;;;;;:53;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;25531:53:118;;25642:233;;25687:19;-1:-1:-1;25680:26:118;;-1:-1:-1;25680:26:118;25642:233;25759:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;25806:17;25822:1;25806:13;:17;:::i;:::-;25759:65;;;;;;;;:::i;:::-;;;;;;;;;;25737:87;;;;;;;;25759:65;;;;25737:87;;;;;;;-1:-1:-1;;;25737:87:118;;;;;;;;;;-1:-1:-1;;;;;;;;25737:87:118;;;;;;;;;;;;-1:-1:-1;25838:26:118;;-1:-1:-1;;25838:26:118;26670:355;26814:6;26851:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;26915:83;26872:10;26884:12;26986:11;26915:44;:83::i;:::-;26851:161;;;;;;;;;;:::i;:::-;;;;;;;;;;:167;-1:-1:-1;;;26851:167:118;;-1:-1:-1;;;;;26851:167:118;;26670:355;-1:-1:-1;;;;26670:355:118:o;8095:596::-;1093:27;:25;:27::i;:::-;22389:32;;;22366:4;22389:32;;;:18;:32;;;;;:39;:44;8282:94:::1;;;::::0;-1:-1:-1;;;8282:94:118;;19561:2:169;8282:94:118::1;::::0;::::1;19543:21:169::0;19600:2;19580:18;;;19573:30;19639:34;19619:18;;;19612:62;-1:-1:-1;;;19690:18:169;;;19683:51;19751:19;;8282:94:118::1;19359:417:169::0;8282:94:118::1;8386:49;8405:12;8419:15;8386:18;:49::i;:::-;8445:53;8471:12;8485;8445:25;:53::i;:::-;-1:-1:-1::0;;8509:32:118::1;;;::::0;;;:18:::1;:32;::::0;;;;;;;8547:136;;::::1;::::0;::::1;::::0;;::::1;8599:12;8547:136:::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;8509:175;;;;::::1;::::0;;;;;;;;;;;;;;::::1;::::0;;;;;;-1:-1:-1;;;;;8509:175:118::1;-1:-1:-1::0;;;8509:175:118::1;-1:-1:-1::0;;;;;;;;8509:175:118;;::::1;-1:-1:-1::0;;;8509:175:118::1;-1:-1:-1::0;;8509:175:118;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;8095:596::o;32673:168::-;22389:32;;;22366:4;22389:32;;;:18;:32;;;;;:39;32745:89;;;;-1:-1:-1;;;32745:89:118;;19983:2:169;32745:89:118;;;19965:21:169;20022:2;20002:18;;;19995:30;20061:34;20041:18;;;20034:62;-1:-1:-1;;;20112:18:169;;;20105:47;20169:19;;32745:89:118;19781:413:169;32745:89:118;32673:168;:::o;21177:1051::-;21282:6;21290:4;21306:13;21329:20;21352:34;21373:12;23307:28;;23281:7;23307:28;;;:14;:28;;;;;:35;;23210:139;21352:34;-1:-1:-1;;;;;;;;;;;;;;;;;21329:57:118;;-1:-1:-1;21523:33:118;;;21450:31;21523:33;;;:19;:33;;;;;;;;21484:73;;-1:-1:-1;;;21484:73:118;;-1:-1:-1;;;;;21484:10:118;:28;;;;:73;;21513:8;;21484:73;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21484:73:118;;;;;;;;;;;;:::i;:::-;21450:107;;21572:9;21567:444;21591:12;21587:1;:16;21567:444;;;21721:28;;;;;;;:14;:28;;;;;:31;;21750:1;;21721:31;;;;;;:::i;:::-;;;;;;;;;21697:55;;;;;;;;;21721:31;;21697:55;-1:-1:-1;;;;;21697:55:118;;;;-1:-1:-1;;;21697:55:118;;-1:-1:-1;;;;;21697:55:118;;;;;21855:17;;21697:55;;-1:-1:-1;21855:17:118;;21870:1;;21855:17;;;;;;:::i;:::-;;;;;;;:21;21851:150;;;792:4:119;21933:21:118;:32;;;-1:-1:-1;;;;;21913:52:118;:14;21928:1;21913:17;;;;;;;;:::i;:::-;;;;;;;:52;;;;:::i;:::-;:72;;;;:::i;:::-;21896:90;;;;:::i;:::-;;;21851:150;21605:3;;;;:::i;:::-;;;;21567:444;;;-1:-1:-1;;;22144:35:118;;;22111:20;22144:35;;;;;;;;;;;22134:6;;-1:-1:-1;;;;;;;22144:35:118;;;22134:45;;;;;;-1:-1:-1;21177:1051:118;;;;;;:::o;32432:235::-;32541:19;-1:-1:-1;;;;;32520:47:118;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32506:63:118;:10;-1:-1:-1;;;;;32506:63:118;;32498:162;;;;-1:-1:-1;;;32498:162:118;;22992:2:169;32498:162:118;;;22974:21:169;23031:2;23011:18;;;23004:30;23070:34;23050:18;;;23043:62;23141:34;23121:18;;;23114:62;-1:-1:-1;;;23192:19:169;;;23185:53;23255:19;;32498:162:118;22790:490:169;32498:162:118;32432:235::o;32193:233::-;32275:10;-1:-1:-1;;;;;32297:19:118;32275:42;;32254:165;;;;-1:-1:-1;;;32254:165:118;;23487:2:169;32254:165:118;;;23469:21:169;23526:2;23506:18;;;23499:30;23565:34;23545:18;;;23538:62;23636:34;23616:18;;;23609:62;-1:-1:-1;;;23687:19:169;;;23680:43;23740:19;;32254:165:118;23285:480:169;13864:1857:118;14005:6;14074:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;14005:6;;14142:18;14138:1393;;14237:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;14289:159;;;;;;;;14345:12;14289:159;;;;;;;;;;-1:-1:-1;;;;;14289:159:118;;;;;;;;;14237:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14237:212:118;-1:-1:-1;;;;;;;;14237:212:118;;;-1:-1:-1;;;14237:212:118;-1:-1:-1;;14237:212:118;;;;;;;;;;;;;;;;;;;14138:1393;;;14555:30;14588:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;14635:15;14649:1;14635:13;:15;:::i;:::-;14588:63;;;;;;;;:::i;:::-;;;;;;;;;;14678:16;;-1:-1:-1;;;;;;;;14678:16:118;;;;;;-1:-1:-1;14588:63:118;;-1:-1:-1;14777:21:118;;;;14773:68;;;14825:1;14818:8;;;;;;;14773:68;15067:28;;15106:12;15067:52;;;;:28;;:52;15063:458;;;15139:27;;-1:-1:-1;;;;;;;;15139:27:118;-1:-1:-1;;;;;;;;15139:27:118;;;;;;15063:458;;;15205:55;;-1:-1:-1;;15205:55:118;-1:-1:-1;;;15247:12:118;15205:55;;;;;;;;;;;;;-1:-1:-1;15278:32:118;;;:20;:32;;;;;;;;:46;;;;;;;;;;15330:175;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15330:175:118;;;;;;;;;15278:228;;-1:-1:-1;15278:228:118;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15278:228:118;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;15278:228:118;-1:-1:-1;;;15278:228:118;;;;;;;;;;;15063:458;14466:1065;14138:1393;15591:55;;;23968:4:169;23956:17;;23938:36;;-1:-1:-1;;;;;24010:39:169;;24005:2;23990:18;;23983:67;15611:10:118;;15591:55;;23911:18:169;15591:55:118;;;;;;;15663:51;15687:9;15703:8;15663:15;:51::i;:::-;15656:58;13864:1857;-1:-1:-1;;;;;;13864:1857:118:o;15865:1272::-;16043:32;;;15955:6;16043:32;;;:18;:32;;;;;;;:39;;;15955:6;;16043:32;16163:17;;16043:39;16163:17;:::i;:::-;16130:51;;;;;;;;:::i;:::-;;;;;;;;16092:89;;16243:10;16257:1;16243:15;16239:74;;;16281:21;-1:-1:-1;;;16281:21:118;;-1:-1:-1;;;;;16281:21:118;;-1:-1:-1;16274:28:118;;-1:-1:-1;16274:28:118;16239:74;16446:21;;16416:15;;16434:46;;-1:-1:-1;;;16446:21:118;;-1:-1:-1;;;;;16446:21:118;16469:10;16434:11;:46::i;:::-;16686:33;;16416:64;;-1:-1:-1;16730:12:118;16686:57;;;;:33;;:57;16682:423;;;16759:32;;-1:-1:-1;;;;;;;;16759:32:118;-1:-1:-1;;;;;;;;16759:32:118;;;;;;16682:423;;;16822:60;;;16869:12;16822:60;;-1:-1:-1;;;16822:60:118;;;-1:-1:-1;;16822:60:118;;;;;;;;;16896:32;;;16822:37;16896:32;;;-1:-1:-1;16896:32:118;;;;;;;;16934:159;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16934:159:118;;;;;;;;;16896:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16896:198:118;-1:-1:-1;;;;;;;;16896:198:118;;;;;;-1:-1:-1;;16896:198:118;;;;;;;;;;;;;;;;;;;;;;16682:423;17122:8;15865:1272;-1:-1:-1;;;;;15865:1272:118:o;13456:223::-;13551:35;;;:21;:35;;;;;;;;;;;;:50;;-1:-1:-1;;13551:50:118;-1:-1:-1;;;;;13551:50:118;;;;;;;;13616:56;;1729:58:169;;;13616:56:118;;1702:18:169;13616:56:118;;;;;;;13456:223;;:::o;17680:1628::-;17843:1;17818:15;:22;:26;17810:95;;;;-1:-1:-1;;;17810:95:118;;24263:2:169;17810:95:118;;;24245:21:169;24302:2;24282:18;;;24275:30;-1:-1:-1;;;;;;;;;;;24321:18:169;;;24314:62;24412:26;24392:18;;;24385:54;24456:19;;17810:95:118;24061:420:169;17810:95:118;17940:22;;18000:28;;;17915:22;18000:28;;;:14;:28;;;;;;;;:35;;18066:34;17940:22;18000:35;18066:34;:::i;:::-;:66;;18045:182;;;;-1:-1:-1;;;18045:182:118;;24821:2:169;18045:182:118;;;24803:21:169;24860:2;24840:18;;;24833:30;-1:-1:-1;;;;;;;;;;;24879:18:169;;;24872:62;24970:34;24950:18;;;24943:62;-1:-1:-1;;;25021:19:169;;;25014:36;25067:19;;18045:182:118;24619:473:169;18045:182:118;18242:9;18237:1065;18261:14;18257:1;:18;18237:1065;;;18420:9;18415:290;18440:21;18460:1;18440:17;:21;:::i;:::-;18435:1;:27;18415:290;;;18560:15;18576:1;18560:18;;;;;;;;:::i;:::-;;;;;;;:27;;;-1:-1:-1;;;;;18516:71:118;:14;:28;18531:12;18516:28;;;;;;;;;;;;;;;18545:1;18516:31;;;;;;;;:::i;:::-;;;;;;;;;;:40;-1:-1:-1;;;;;18516:40:118;:71;;18487:203;;;;-1:-1:-1;;;18487:203:118;;25299:2:169;18487:203:118;;;25281:21:169;25338:2;25318:18;;;25311:30;-1:-1:-1;;;;;;;;;;;25357:18:169;;;25350:62;25448:31;25428:18;;;25421:59;25497:19;;18487:203:118;25097:425:169;18487:203:118;18464:3;;;;:::i;:::-;;;;18415:290;;;;18775:1;18743:15;18759:1;18743:18;;;;;;;;:::i;:::-;;;;;;;:29;;;-1:-1:-1;;;;;18743:33:118;;18718:162;;;;-1:-1:-1;;;18718:162:118;;25729:2:169;18718:162:118;;;25711:21:169;25768:2;25748:18;;;25741:30;-1:-1:-1;;;;;;;;;;;25787:18:169;;;25780:62;25878:34;25858:18;;;25851:62;-1:-1:-1;;;25929:19:169;;;25922:37;25976:19;;18718:162:118;25527:474:169;18718:162:118;18894:28;;;;;;;:14;:28;;;;;18928:18;;:15;;18944:1;;18928:18;;;;;;:::i;:::-;;;;;;;;;;;;18894:53;;;;;;;-1:-1:-1;18894:53:118;;;;;;;;;;;;-1:-1:-1;;;;;18894:53:118;-1:-1:-1;;;18894:53:118;-1:-1:-1;;;;;18894:53:118;;;;;;;;;;18961:33;;;;;:19;:33;;;;;19000:18;;:15;;19016:1;;19000:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;18961:67;;;;;;;-1:-1:-1;18961:67:118;;;;;;;;;;-1:-1:-1;;;;;;18961:67:118;-1:-1:-1;;;;;18961:67:118;;;;;;;;;19083:18;;19047:64;;;;;;19083:18;;19099:1;;19083:18;;;;;;:::i;:::-;;;;;;;;;;;;:27;19047:64;;-1:-1:-1;;;;;8392:32:169;;;8374:51;;8347:18;19047:64:118;;;;;;;19173:12;19130:161;;;19203:15;19219:1;19203:18;;;;;;;;:::i;:::-;;;;;;;:27;;;19248:15;19264:1;19248:18;;;;;;;;:::i;:::-;;;;;;;:29;;;19130:161;;;;;;;:::i;:::-;;;;;;;;18277:3;;;;:::i;:::-;;;;18237:1065;;;;17800:1508;;17680:1628;;:::o;19962:830::-;20392:11;:29;;;20377:44;;:11;:44;;;;20356:177;;;;-1:-1:-1;;;20356:177:118;;26208:2:169;20356:177:118;;;26190:21:169;26247:2;26227:18;;;26220:30;26286:34;26266:18;;;26259:62;26357:34;26337:18;;;26330:62;-1:-1:-1;;;26408:19:169;;;26401:53;26471:19;;20356:177:118;26006:490:169;20356:177:118;20564:33;;;;:38;;;;:89;;;20620:11;:33;;;20606:47;;:11;:47;;;20564:89;20543:242;;;;-1:-1:-1;;;20543:242:118;;26703:2:169;20543:242:118;;;26685:21:169;26742:3;26722:18;;;26715:31;26782:34;26762:18;;;26755:62;26853:34;26833:18;;;26826:62;26925:34;26904:19;;;26897:63;-1:-1:-1;;;26976:19:169;;;26969:41;27027:19;;20543:242:118;26501:551:169;20543:242:118;19962:830;;:::o;12621:829::-;12788:6;12823:32;;;:20;:32;;;;;;;;:46;;;;;;;;;;:53;;12995:206;13020:5;;12995:206;;13050:32;;;;:20;:32;;;;;;;;:46;;;;;;;;;;:86;;;;13097:5;13101:1;13097;:5;:::i;:::-;13050:53;;;;;;;;:::i;:::-;;;;;;;;;;:71;;;:86;13046:145;;13170:5;13174:1;13170;:5;:::i;:::-;13156:20;;;;;;13046:145;13027:3;;;;:::i;:::-;;;;12995:206;;;-1:-1:-1;13282:161:118;;-1:-1:-1;;;13282:161:118;;27400:2:169;13282:161:118;;;27382:21:169;27439:3;27419:18;;;27412:31;27479:34;27459:18;;;27452:62;27550:34;27530:18;;;27523:62;27622:34;27601:19;;;27594:63;27694:34;27673:19;;;27666:63;-1:-1:-1;;;27745:19:169;;;27738:32;27787:19;;13282:161:118;27198:614:169;19402:149:118;19475:6;19500:44;-1:-1:-1;;;;;19530:13:118;;;;19507:12;;19500:44;:::i;19631:242::-;19703:6;19733:1;19725:5;:9;19721:146;;;19780:6;19781:5;19780:6;:::i;:::-;19757:31;;:5;:31;:::i;:::-;19750:38;;;;19721:146;19826:30;19849:5;19826;:30;:::i;14:156:169:-;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:169:o;799:323::-;-1:-1:-1;;;;;1007:32:169;;;;989:51;;-1:-1:-1;;;;;1076:39:169;1071:2;1056:18;;1049:67;977:2;962:18;;799:323::o;1127:131::-;-1:-1:-1;;;;;1202:31:169;;1192:42;;1182:70;;1248:1;1245;1238:12;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:169;;-1:-1:-1;;;;;1998:30:169;;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:169;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:169;-1:-1:-1;2796:2:169;2781:18;;2768:32;;-1:-1:-1;2812:16:169;;;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:169;;-1:-1:-1;2971:8:169;;2854:98;2170:842;-1:-1:-1;;;2170:842:169: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:169;;-1:-1:-1;;;;;3205:30:169;;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:169;3695:18;;3682:32;;-1:-1:-1;3765:2:169;3750:18;;3737:32;-1:-1:-1;;;;;3781:30:169;;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:169;-1:-1:-1;;;;3369:612:169: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:169;4289:59;;4368:12;;;;4403:15;;;;4262:1;4255:9;4226:202;;;-1:-1:-1;4444:3:169;;3986:467;-1:-1:-1;;;;;3986:467:169: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:169;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:169;;5470:717;-1:-1:-1;;;;;;5470:717:169: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:169;;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:169;6687:40;;-1:-1:-1;;;;;6742:34:169;;6778:22;;;6739:62;6736:88;;;6804:18;;:::i;:::-;6840:2;6833:22;6586:275;;-1:-1:-1;6586:275:169:o;6866:183::-;6926:4;-1:-1:-1;;;;;6951:6:169;6948:30;6945:56;;;6981:18;;:::i;:::-;-1:-1:-1;7026:1:169;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:169;7360:30;7357:50;;;7403:1;7400;7393:12;7357:50;7426:22;;7479:4;7471:13;;7467:27;-1:-1:-1;7457:55:169;;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:169;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:169;;-1:-1:-1;;;;8793:481:169: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:169;10450:18;;;10437:32;;10157:318;-1:-1:-1;;;10157:318:169: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:169;5386:14;;;5379:80;10674:2;10659:18;;10686:48;5177:288;11122:179;11189:20;;-1:-1:-1;;;;;11238:38:169;;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:169;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:169;12047:1035;-1:-1:-1;;;;;;12047:1035:169: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:169;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:169;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:169;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;16440:127::-;16501:10;16496:3;16492:20;16489:1;16482:31;16532:4;16529:1;16522:15;16556:4;16553:1;16546:15;16572:184;16630:6;16683:2;16671:9;16662:7;16658:23;16654:32;16651:52;;;16699:1;16696;16689:12;16651:52;16722:28;16740:9;16722:28;:::i;17090:127::-;17151:10;17146:3;17142:20;17139:1;17132:31;17182:4;17179:1;17172:15;17206:4;17203:1;17196:15;17222:135;17261:3;-1:-1:-1;;17282:17:169;;17279:43;;;17302:18;;:::i;:::-;-1:-1:-1;17349:1:169;17338:13;;17222:135::o;18597:125::-;18637:4;18665:1;18662;18659:8;18656:34;;;18670:18;;:::i;:::-;-1:-1:-1;18707:9:169;;18597:125::o;18727:127::-;18788:10;18783:3;18779:20;18776:1;18769:31;18819:4;18816:1;18809:15;18843:4;18840:1;18833:15;20199:800;20384:4;20432:2;20421:9;20417:18;20471:1;20467;20462:3;20458:11;20454:19;20512:2;20504:6;20500:15;20489:9;20482:34;20535:2;20573;20568;20557:9;20553:18;20546:30;20596:6;20631;20625:13;20662:6;20654;20647:22;20700:2;20689:9;20685:18;20678:25;;20722:6;20719:1;20712:17;20765:2;20762:1;20752:16;20738:30;;20786:1;20796:177;20810:6;20807:1;20804:13;20796:177;;;20875:13;;20871:22;;20859:35;;20961:1;20949:14;;;;20914:12;;;;20825:9;20796:177;;;-1:-1:-1;20990:3:169;;20199:800;-1:-1:-1;;;;;;;;20199:800:169:o;21004:881::-;21099:6;21130:2;21173;21161:9;21152:7;21148:23;21144:32;21141:52;;;21189:1;21186;21179:12;21141:52;21222:9;21216:16;-1:-1:-1;;;;;21247:6:169;21244:30;21241:50;;;21287:1;21284;21277:12;21241:50;21310:22;;21363:4;21355:13;;21351:27;-1:-1:-1;21341:55:169;;21392:1;21389;21382:12;21341:55;21421:2;21415:9;21444:60;21460:43;21500:2;21460:43;:::i;21444:60::-;21538:15;;;21620:1;21616:10;;;;21608:19;;21604:28;;;21569:12;;;;21644:19;;;21641:39;;;21676:1;21673;21666:12;21641:39;21700:11;;;;21720:135;21736:6;21731:3;21728:15;21720:135;;;21802:10;;21790:23;;21753:12;;;;21833;;;;21720:135;;;21874:5;21004:881;-1:-1:-1;;;;;;;21004:881:169:o;21890:168::-;21930:7;21996:1;21992;21988:6;21984:14;21981:1;21978:21;21973:1;21966:9;21959:17;21955:45;21952:71;;;22003:18;;:::i;:::-;-1:-1:-1;22043:9:169;;21890:168::o;22063:217::-;22103:1;22129;22119:132;;22173:10;22168:3;22164:20;22161:1;22154:31;22208:4;22205:1;22198:15;22236:4;22233:1;22226:15;22119:132;-1:-1:-1;22265:9:169;;22063:217::o;22285:244::-;22324:3;-1:-1:-1;;;;;22405:2:169;22402:1;22398:10;22435:2;22432:1;22428:10;22466:3;22462:2;22458:12;22453:3;22450:21;22447:47;;;22474:18;;:::i;:::-;22510:13;;22285:244;-1:-1:-1;;;;22285:244:169:o;22534:251::-;22604:6;22657:2;22645:9;22636:7;22632:23;22628:32;22625:52;;;22673:1;22670;22663:12;22625:52;22705:9;22699:16;22724:31;22749:5;22724:31;:::i;24486:128::-;24526:3;24557:1;24553:6;24550:1;24547:13;24544:39;;;24563:18;;:::i;:::-;-1:-1:-1;24599:9:169;;24486:128::o;27057:136::-;27096:3;27124:5;27114:39;;27133:18;;:::i;:::-;-1:-1:-1;;;27169:18:169;;27057:136::o;27817:267::-;27856:4;27885:9;;;27910:10;;-1:-1:-1;;;27929:19:169;;27922:27;;27906:44;27903:70;;;27953:18;;:::i;:::-;-1:-1:-1;;;;;28000:27:169;;27993:35;;27985:44;;27982:70;;;28032:18;;:::i;:::-;-1:-1:-1;;28069:9:169;;27817:267::o;28089:136::-;28124:3;-1:-1:-1;;;28145:22:169;;28142:48;;;28170:18;;:::i;:::-;-1:-1:-1;28210:1:169;28206:13;;28089:136::o;28230:237::-;28269:4;-1:-1:-1;;;;;28374:10:169;;;;28344;;28396:12;;;28393:38;;;28411:18;;:::i;:::-;28448:13;;28230:237;-1:-1:-1;;;28230:237:169:o","linkReferences":{},"immutableReferences":{"39509":[{"start":1321,"length":32},{"start":6312,"length":32}],"39512":[{"start":890,"length":32},{"start":6727,"length":32},{"start":7033,"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\":{\"lib/eigenlayer-middleware/src/StakeRegistry.sol\":\"StakeRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@credible-squaring/=src/\",\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/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\":\"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009\",\"dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P\"]},\"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\":\"0x2de63b752c3b2b4605992e47e0eaf4199465991046cdf0501e1892258ef44b11\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e1e52d268bb4ee377302aa185680b9ed1271368db89ac4b7e3a7e6a92e27f3b5\",\"dweb:/ipfs/QmZqX4QYjBC5yaoXT4YcPPZMiBagsbfveRzp1TQwwH95q8\"]},\"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\":\"0x7655919fae553e75ff196b31c9244079ff222e34ff43f36c41429ee826cfad9b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5d35a784a9511b351826cb70b00d92c3d374474f256b01af05cd1acb1ce6c10\",\"dweb:/ipfs/QmZog3BrpLa213wj5qxVYMQv7jdrkf5AAufLCVaMZsL7Gs\"]},\"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\":\"0x160fea76cd2e64e4e4bb66f4d793ff4a6ddb7cb785a30a0615e9f4956aa12c8b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://03f16b6f03051893671ba0d1445fb45bc6105f05ee3ca3002fd400ac63c8fd20\",\"dweb:/ipfs/QmRbQ6k4kJYjfDTv5Z7bSfy5ewjjgHUVEhsWPWsyz57sUa\"]},\"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\":\"0x098850d09b65bb7dbad5ea0513eacb77f2701e135d9727b3627e13f303b2ff41\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3519f5a415b99d196f3cecef3f48ea116f2f3a2b381efcc96a5d7eff6934c2f3\",\"dweb:/ipfs/QmbCcFWgmFjXeZrvfEFQ17AgEueW9wS17HhvjkxMi5x3H8\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x6e82a559dc583bf4b15867654e82f3aca9a862589209abac1c4356142a3b2211\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a1a4819b95c7da710e11efb279bd4b596139dc12c96c45a366d8e1893018eb1\",\"dweb:/ipfs/QmZBHPLKoYepZmA7AL9ECJFkbBhujSNvvc8pJmNC9MnRni\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/src/StakeRegistry.sol\":{\"keccak256\":\"0xe8e6b6262c6b6429067d48d2c81d7c76a229931613021d551e34f19c97bcb379\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9a774318fd803dad097fe26533ea71711564100939372293e849c75820968eb6\",\"dweb:/ipfs/Qmeb3k5XxuZyyZLvqayoP5GLvpCi97TNK7yvTAemXxo86z\"]},\"lib/eigenlayer-middleware/src/StakeRegistryStorage.sol\":{\"keccak256\":\"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732\",\"dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/eigenlayer-middleware/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":["@credible-squaring/=src/","@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-middleware/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":"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1","urls":["bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009","dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P"],"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":"0x2de63b752c3b2b4605992e47e0eaf4199465991046cdf0501e1892258ef44b11","urls":["bzz-raw://e1e52d268bb4ee377302aa185680b9ed1271368db89ac4b7e3a7e6a92e27f3b5","dweb:/ipfs/QmZqX4QYjBC5yaoXT4YcPPZMiBagsbfveRzp1TQwwH95q8"],"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":"0x7655919fae553e75ff196b31c9244079ff222e34ff43f36c41429ee826cfad9b","urls":["bzz-raw://d5d35a784a9511b351826cb70b00d92c3d374474f256b01af05cd1acb1ce6c10","dweb:/ipfs/QmZog3BrpLa213wj5qxVYMQv7jdrkf5AAufLCVaMZsL7Gs"],"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":"0x160fea76cd2e64e4e4bb66f4d793ff4a6ddb7cb785a30a0615e9f4956aa12c8b","urls":["bzz-raw://03f16b6f03051893671ba0d1445fb45bc6105f05ee3ca3002fd400ac63c8fd20","dweb:/ipfs/QmRbQ6k4kJYjfDTv5Z7bSfy5ewjjgHUVEhsWPWsyz57sUa"],"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":"0x098850d09b65bb7dbad5ea0513eacb77f2701e135d9727b3627e13f303b2ff41","urls":["bzz-raw://3519f5a415b99d196f3cecef3f48ea116f2f3a2b381efcc96a5d7eff6934c2f3","dweb:/ipfs/QmbCcFWgmFjXeZrvfEFQ17AgEueW9wS17HhvjkxMi5x3H8"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x6e82a559dc583bf4b15867654e82f3aca9a862589209abac1c4356142a3b2211","urls":["bzz-raw://8a1a4819b95c7da710e11efb279bd4b596139dc12c96c45a366d8e1893018eb1","dweb:/ipfs/QmZBHPLKoYepZmA7AL9ECJFkbBhujSNvvc8pJmNC9MnRni"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/src/StakeRegistry.sol":{"keccak256":"0xe8e6b6262c6b6429067d48d2c81d7c76a229931613021d551e34f19c97bcb379","urls":["bzz-raw://9a774318fd803dad097fe26533ea71711564100939372293e849c75820968eb6","dweb:/ipfs/Qmeb3k5XxuZyyZLvqayoP5GLvpCi97TNK7yvTAemXxo86z"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/StakeRegistryStorage.sol":{"keccak256":"0xd0675a2edd88adf10f0e7f6f17f8274b3f660cf891bdd781defb1f229d0144d1","urls":["bzz-raw://8d044348b69a2e71016b196a9011436bfe5c3b48e3942cce4706c0795cab8732","dweb:/ipfs/Qmb1Khrwj57BMmQ71NdMUdXrnTNw9Fnc7k79svkT6HtJ5s"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"}},"version":1},"id":118}