0 txs
43 calls
constructor
constructor(address xPufETH, address l1RewardManager)
functions
authority
viewfunction authority() view returns (address)
getClaimingDelay
viewfunction getClaimingDelay() view returns (uint256)
getEpochRecord
viewfunction getEpochRecord(bytes32 intervalId) view returns (tuple)
getIntervalId
purefunction getIntervalId(uint256 startEpoch, uint256 endEpoch) pure returns (bytes32)
getRewardsClaimer
viewfunction getRewardsClaimer(address account) view returns (address)
isClaimed
viewfunction isClaimed(bytes32 intervalId, address account) view returns (bool)
isClaimingLocked
viewfunction isClaimingLocked(bytes32 intervalId) view returns (bool)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
L1_REWARD_MANAGER
viewfunction L1_REWARD_MANAGER() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
XPUFETH
viewfunction XPUFETH() view returns (address)
claimRewards
nonpayablefunction claimRewards(tuple[] claimOrders)
freezeAndRevertInterval
payablefunction freezeAndRevertInterval(address bridge, uint256 startEpoch, uint256 endEpoch) payable
freezeClaimingForInterval
nonpayablefunction freezeClaimingForInterval(uint256 startEpoch, uint256 endEpoch)
initialize
nonpayablefunction initialize(address accessManager)
revertInterval
payablefunction revertInterval(address bridge, uint256 startEpoch, uint256 endEpoch) payable
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setDelayPeriod
nonpayablefunction setDelayPeriod(uint256 delayPeriod)
updateBridgeData
nonpayablefunction updateBridgeData(address bridge, tuple bridgeData)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
xReceive
nonpayablefunction xReceive(bytes32, uint256 amount, address, address originSender, uint32 originDomainId, bytes callData) returns (bytes)
events
AuthorityUpdated
event AuthorityUpdated(address authority)
BridgeDataUpdated
event BridgeDataUpdated(address indexed bridge, (uint32 destinationDomainId) bridgeData)
Claimed
event Claimed(address indexed account, address indexed recipient, bytes32 indexed intervalId, uint256 amount)
ClaimerSet
event ClaimerSet(address indexed account, address indexed claimer)
ClaimingDelayChanged
event ClaimingDelayChanged(uint256 oldDelay, uint256 newDelay)
ClaimingIntervalFrozen
event ClaimingIntervalFrozen(uint256 startEpoch, uint256 endEpoch)
ClaimingIntervalReverted
event ClaimingIntervalReverted(uint256 startEpoch, uint256 endEpoch, bytes32 indexed intervalId, uint256 pufETHAmount, bytes32 rewardsRoot)
Initialized
event Initialized(uint64 version)
RewardRootAndRatePosted
event RewardRootAndRatePosted(uint256 rewardsAmount, uint256 ethToPufETHRate, uint256 startEpoch, uint256 endEpoch, bytes32 indexed intervalId, bytes32 rewardsRoot)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyClaimed
error AlreadyClaimed(bytes32 intervalId, address account)
BridgeNotAllowlisted
error BridgeNotAllowlisted()
ClaimerNotSet
error ClaimerNotSet(address node)
ClaimingLocked
error ClaimingLocked(bytes32 intervalId, address account, uint256 lockedUntil)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
InvalidClaimingInterval
error InvalidClaimingInterval(bytes32 claimingInterval)
InvalidDelayPeriod
error InvalidDelayPeriod()
InvalidInitialization
error InvalidInitialization()
InvalidProof
error InvalidProof()
NotInitializing
error NotInitializing()
RelockingIntervalIsNotAllowed
error RelockingIntervalIsNotAllowed()
UnableToFreezeInterval
error UnableToFreezeInterval()
UnableToRevertInterval
error UnableToRevertInterval()
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e060405230608052348015610013575f5ffd5b50604051612b77380380612b7783398101604081905261003291610121565b6001600160a01b0380831660a052811660c05261004d610054565b5050610152565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461011c575f5ffd5b919050565b5f5f60408385031215610132575f5ffd5b61013b83610106565b915061014960208401610106565b90509250929050565b60805160a05160c0516129ca6101ad5f395f818161025d01528181611048015261182901525f81816104fc01528181610f0d015281816117a6015261184a01525f818161134a0152818161137301526114b501526129ca5ff3fe608060405260043610610131575f3560e01c80639d0c87ac116100a8578063e0633e591161006d578063e0633e59146103f3578063e53b5bbb146104eb578063e85cb3951461051e578063f5d494991461053d578063fd614f411461055c578063fe2895921461057b575f5ffd5b80639d0c87ac1461035d578063ad3cb1cc14610370578063bf7e214f146103ad578063c4d66de8146103c1578063dd4ea3b8146103e0575f5ffd5b8063665ced01116100f9578063665ced01146101de5780636a66e2851461024c5780637a9e5e4b1461027f5780637b0587b61461029e57806384ef71fb146102bd5780638fb3603714610330575f5ffd5b8063042b368b146101355780633d572107146101565780633d6b1f94146101755780634f1ef286146101b757806352d1902d146101ca575b5f5ffd5b348015610140575f5ffd5b5061015461014f366004612159565b61059a565b005b348015610161575f5ffd5b506101546101703660046121ca565b610649565b348015610180575f5ffd5b507f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc804545b6040519081526020015b60405180910390f35b6101546101c5366004612259565b61065e565b3480156101d5575f5ffd5b506101a461067d565b3480156101e9575f5ffd5b506102346101f83660046122a5565b6001600160a01b039081165f9081527f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc80260205260409020541690565b6040516001600160a01b0390911681526020016101ae565b348015610257575f5ffd5b506102347f000000000000000000000000000000000000000000000000000000000000000081565b34801561028a575f5ffd5b506101546102993660046122a5565b610698565b3480156102a9575f5ffd5b506101a46102b83660046122c0565b61071f565b3480156102c8575f5ffd5b506103206102d73660046122e0565b5f9182527f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc801602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60405190151581526020016101ae565b34801561033b575f5ffd5b5061034461074e565b6040516001600160e01b031990911681526020016101ae565b61015461036b36600461230e565b610784565b34801561037b575f5ffd5b506103a0604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ae919061236e565b3480156103b8575f5ffd5b506102346107a7565b3480156103cc575f5ffd5b506101546103db3660046122a5565b6107c2565b6101546103ee36600461230e565b6108d9565b3480156103fe575f5ffd5b506104de61040d3660046121ca565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101829052905f5160206129755f395f51905f525f9384526020908152604093849020845160e08101865281546001600160681b038082168352600160681b82041693820193909352600160d01b90920465ffffffffffff169482019490945260018401546001600160801b038082166060840152600160801b909104166080820152600284015460a082015260039093015460c08401525090919050565b6040516101ae9190612380565b3480156104f6575f5ffd5b506102347f000000000000000000000000000000000000000000000000000000000000000081565b348015610529575f5ffd5b506101546105383660046123f9565b6108e2565b348015610548575f5ffd5b506103206105573660046121ca565b611031565b348015610567575f5ffd5b506103a0610576366004612468565b61103b565b348015610586575f5ffd5b506101546105953660046122c0565b611180565b6105a6335b5f36611193565b5f5160206129755f395f51905f526001600160a01b0383166105db5760405163e6c4247b60e01b815260040160405180910390fd5b81516001600160a01b0384165f818152600384016020908152604091829020805463ffffffff191663ffffffff95861617905590518551909316835290917fd2adf702daa682efe403a1c916b6581c403c1f373a2444d84814b615d84009cf910160405180910390a2505050565b6106523361059f565b61065b81611289565b50565b61066661133f565b61066f826113e5565b61067982826113ee565b5050565b5f6106866114aa565b505f5160206129555f395f51905f5290565b336106a16107a7565b6001600160a01b0316816001600160a01b0316146106e15760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610716576040516361798f2f60e11b81526001600160a01b03831660048201526024016106d8565b610679826114f3565b604080516020808201859052818301849052825180830384018152606090920190925280519101205b92915050565b5f5160206129355f395f51905f5280545f9190600160a01b900460ff16610775575f61077e565b638fb3603760e01b5b91505090565b61078d3361059f565b6107978282611553565b6107a283838361161a565b505050565b5f5160206129355f395f51905f52546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108065750825b90505f826001600160401b031660011480156108215750303b155b90508115801561082f575080155b1561084d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561087757845460ff60401b1916600160401b1785555b61088086611988565b61088b61a8c0611289565b83156108d157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6107973361059f565b6108eb3361059f565b5f5b818110156107a25761095283838381811061090a5761090a6124e9565b905060200281019061091c91906124fd565b3584848481811061092f5761092f6124e9565b905060200281019061094191906124fd565b6102d79060808101906060016122a5565b156109dc57828282818110610969576109696124e9565b905060200281019061097b91906124fd565b3583838381811061098e5761098e6124e9565b90506020028101906109a091906124fd565b6109b19060808101906060016122a5565b60405163546511c760e11b815260048101929092526001600160a01b031660248201526044016106d8565b5f5160206129755f395f51905f525f7f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc80281868686818110610a1f57610a1f6124e9565b9050602002810190610a3191906124fd565b610a429060808101906060016122a5565b6001600160a01b03908116825260208201929092526040015f2054169050848484818110610a7257610a726124e9565b9050602002810190610a8491906124fd565b610a95906060810190604001612528565b8015610aa857506001600160a01b038116155b15610b0757848484818110610abf57610abf6124e9565b9050602002810190610ad191906124fd565b610ae29060808101906060016122a5565b60405163d96ea71160e01b81526001600160a01b0390911660048201526024016106d8565b5f8281878787818110610b1c57610b1c6124e9565b9050602002810190610b2e91906124fd565b35815260208101919091526040015f206003810154909150610b8a57858585818110610b5c57610b5c6124e9565b9050602002810190610b6e91906124fd565b60405163aa451db960e01b8152903560048201526024016106d8565b610bb7868686818110610b9f57610b9f6124e9565b9050602002810190610bb191906124fd565b35611999565b15610c6857858585818110610bce57610bce6124e9565b9050602002810190610be091906124fd565b35868686818110610bf357610bf36124e9565b9050602002810190610c0591906124fd565b610c169060808101906060016122a5565b60048501548354610c369190600160d01b900465ffffffffffff16612557565b6040516318b8694d60e11b815260048101939093526001600160a01b03909116602483015260448201526064016106d8565b5f868686818110610c7b57610c7b6124e9565b9050602002810190610c8d91906124fd565b610c9e9060808101906060016122a5565b878787818110610cb057610cb06124e9565b9050602002810190610cc291906124fd565b610cd3906060810190604001612528565b888888818110610ce557610ce56124e9565b9050602002810190610cf791906124fd565b604080516001600160a01b03909416602085810191909152921515908401520135606082015260800160408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610d95878787818110610d6a57610d6a6124e9565b9050602002810190610d7c91906124fd565b610d8a90608081019061256a565b8460030154846119ee565b610db2576040516309bde33960e01b815260040160405180910390fd5b6001846001015f898989818110610dcb57610dcb6124e9565b9050602002810190610ddd91906124fd565b5f013581526020019081526020015f205f898989818110610e0057610e006124e9565b9050602002810190610e1291906124fd565b610e239060808101906060016122a5565b6001600160a01b0316815260208101919091526040015f908120805460ff1916921515929092179091556002830154670de0b6b3a764000090898989818110610e6e57610e6e6124e9565b9050602002810190610e8091906124fd565b60200135610e8e91906125b6565b610e9891906125cd565b90506001600160a01b03841615610eaf5783610ee4565b878787818110610ec157610ec16124e9565b9050602002810190610ed391906124fd565b610ee49060808101906060016122a5565b60405163a9059cbb60e01b81526001600160a01b038083166004830152602482018490529195507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015610f55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7991906125ec565b50878787818110610f8c57610f8c6124e9565b9050602002810190610f9e91906124fd565b356001600160a01b038516898989818110610fbb57610fbb6124e9565b9050602002810190610fcd91906124fd565b610fde9060808101906060016122a5565b6001600160a01b03167f9780ca5401356db2895e17979114ec3dfd012f98c5e620049726a235a2a5d7118460405161101891815260200190565b60405180910390a45050600190930192506108ed915050565b5f61074882611999565b60606110463361059f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614611097576040516282b42960e81b815260040160405180910390fd5b335f9081527f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc80360205260409020545f5160206129755f395f51905f529063ffffffff8581169116146110fb576040516282b42960e81b815260040160405180910390fd5b5f83806020019051810190611110919061263d565b90505f81516001811115611126576111266126d3565b0361113e57611139888260200151611a05565b611165565b600181516001811115611153576111536126d3565b03611165576111658160200151611c73565b505060408051602081019091525f8152979650505050505050565b6111893361059f565b6106798282611553565b5f5160206129355f395f51905f525f806111cb6111ae6107a7565b87306111bd60045f8a8c6126e7565b6111c69161270e565b611d0a565b91509150816108d15763ffffffff81161561126657825460ff60a01b1916600160a01b1783556111f96107a7565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161122893929190612746565b5f604051808303815f87803b15801561123f575f5ffd5b505af1158015611251573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506108d19050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016106d8565b6154608110156112ac57604051631241c84160e01b815260040160405180910390fd5b61a8c08111156112cf57604051631241c84160e01b815260040160405180910390fd5b7f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc80454604080519182526020820183905280515f5160206129755f395f51905f52927f8d9eb9d8b1f4e7a31440033689665fd76a6684d42ef6352d28560a1185bc77c392908290030190a160040155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113b95f5160206129555f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113e35760405163703e46dd60e11b815260040160405180910390fd5b565b61065b3361059f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611448575060408051601f3d908101601f1916820190925261144591810190612785565b60015b61147057604051634c9c8ce360e01b81526001600160a01b03831660048201526024016106d8565b5f5160206129555f395f51905f5281146114a057604051632a87526960e21b8152600481018290526024016106d8565b6107a28383611e12565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113e35760405163703e46dd60e11b815260040160405180910390fd5b5f5160206129355f395f51905f5280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f5160206129755f395f51905f525f61156c848461071f565b905061157781611999565b611594576040516384d5070960e01b815260040160405180910390fd5b5f818152602083905260409020600301546115c2576040516384d5070960e01b815260040160405180910390fd5b5f818152602083815260409182902080546001600160d01b0316905581518681529081018590527fe1023e89c3dddcd89d1aba0f57f5a06522660c50dc9cefe016e878c10dcf0b08910160405180910390a150505050565b6001600160a01b0383165f9081527f7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc8036020908152604080832081519283019091525463ffffffff168082525f5160206129755f395f51905f52920361169257604051630388c67160e31b815260040160405180910390fd5b5f61169d858561071f565b5f8181526020858152604091829020825160e08101845281546001600160681b038082168352600160681b82041693820193909352600160d01b90920465ffffffffffff1692820183905260018101546001600160801b038082166060850152600160801b909104166080830152600281015460a08301526003015460c082015291925015801590611732575060c081015115155b15611750576040516388597b1d60e01b815260040160405180910390fd5b60c0810151611772576040516388597b1d60e01b815260040160405180910390fd5b606081015160405163095ea7b360e01b81526001600160a01b0389811660048301526001600160801b0390921660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af11580156117ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181291906125ec565b50866001600160a01b0316638aac16ba34855f01517f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000003387606001515f896040516020016118819190612380565b6040516020818303038152906040526040518963ffffffff1660e01b81526004016118b2979695949392919061279c565b60206040518083038185885af11580156118ce573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118f39190612785565b505f82815260208590526040808220828155600181018390556002810183905560030191909155606082015160c0830151915184927fff470a9757943c40b7964b8e6781f998b5c33b607d754b00fee013eb6a042ef292611977928b928b929193845260208401929092526001600160801b03166040830152606082015260800190565b60405180910390a250505050505050565b611990611e67565b61065b81611eb0565b5f8181525f5160206129755f395f51905f5260208190526040822054600160d01b900465ffffffffffff168083036119d5575060019392505050565b60048201546119e49082612557565b4210949350505050565b5f826119fb868685611ec1565b1495945050505050565b5f81806020019051810190611a1a91906127fe565b9050670de0b6b3a76400008160200151825f0151611a3891906125b6565b611a4291906125cd565b8314611a615760405163162908e360e11b815260040160405180910390fd5b5f5f5160206129755f395f51905f5290505f611a858360400151846060015161071f565b90506040518060e0016040528084604001516001600160681b0316815260200184606001516001600160681b031681526020014265ffffffffffff168152602001866001600160801b03168152602001845f01516001600160801b03168152602001846020015181526020018460800151815250825f015f8381526020019081526020015f205f820151815f015f6101000a8154816001600160681b0302191690836001600160681b031602179055506020820151815f01600d6101000a8154816001600160681b0302191690836001600160681b031602179055506040820151815f01601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506060820151816001015f6101000a8154816001600160801b0302191690836001600160801b0316021790555060808201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060a0820151816002015560c08201518160030155905050807f1b0aa36a209ecea6a0caf675fed1dd9964802bd0e6d02397e0f23f2d930a4038845f01518560200151866040015187606001518860800151604051611c64959493929190948552602085019390935260408401919091526060830152608082015260a00190565b60405180910390a25050505050565b5f81806020019051810190611c8891906128b0565b90505f5f5160206129755f395f51905f526020838101805185516001600160a01b039081165f90815260028601909452604080852080546001600160a01b031916938316939093179092559151865191519495508216939116917f4925eafc82d0c4d67889898eeed64b18488ab19811e61620f387026dec126a2891a3505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251611d7891906128f1565b5f60405180830381855afa9150503d805f8114611db0576040519150601f19603f3d011682016040523d82523d5f602084013e611db5565b606091505b50915091508115611e07576040815110611de75780806020019051810190611ddd9190612907565b9094509250611e07565b6020815110611e075780806020019051810190611e0491906125ec565b93505b505094509492505050565b611e1b82611f04565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611e5f576107a28282611f67565b610679611fd9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166113e357604051631afcd79f60e31b815260040160405180910390fd5b611eb8611e67565b61065b816114f3565b5f81815b84811015611ef957611eef82878784818110611ee357611ee36124e9565b90506020020135611ff8565b9150600101611ec5565b5090505b9392505050565b806001600160a01b03163b5f03611f3957604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106d8565b5f5160206129555f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611f8391906128f1565b5f60405180830381855af49150503d805f8114611fbb576040519150601f19603f3d011682016040523d82523d5f602084013e611fc0565b606091505b5091509150611fd0858383612021565b95945050505050565b34156113e35760405163b398979f60e01b815260040160405180910390fd5b5f818310612012575f828152602084905260409020611efd565b505f9182526020526040902090565b606082612036576120318261207d565b611efd565b815115801561204d57506001600160a01b0384163b155b1561207657604051639996b31560e01b81526001600160a01b03851660048201526024016106d8565b5080611efd565b80511561208d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461065b575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156120f0576120f06120ba565b60405290565b60405160c081016001600160401b03811182821017156120f0576120f06120ba565b604051601f8201601f191681016001600160401b0381118282101715612140576121406120ba565b604052919050565b63ffffffff8116811461065b575f5ffd5b5f5f828403604081121561216b575f5ffd5b8335612176816120a6565b92506020601f1982011215612189575f5ffd5b50604051602081016001600160401b03811182821017156121ac576121ac6120ba565b60405260208401356121bd81612148565b8152919491935090915050565b5f602082840312156121da575f5ffd5b5035919050565b5f6001600160401b038211156121f9576121f96120ba565b50601f01601f191660200190565b5f82601f830112612216575f5ffd5b8135612229612224826121e1565b612118565b81815284602083860101111561223d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561226a575f5ffd5b8235612275816120a6565b915060208301356001600160401b0381111561228f575f5ffd5b61229b85828601612207565b9150509250929050565b5f602082840312156122b5575f5ffd5b8135611efd816120a6565b5f5f604083850312156122d1575f5ffd5b50508035926020909101359150565b5f5f604083850312156122f1575f5ffd5b823591506020830135612303816120a6565b809150509250929050565b5f5f5f60608486031215612320575f5ffd5b833561232b816120a6565b95602085013595506040909401359392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611efd6020830184612340565b5f60e0820190506001600160681b0383511682526001600160681b03602084015116602083015265ffffffffffff60408401511660408301526001600160801b0360608401511660608301526001600160801b03608084015116608083015260a083015160a083015260c083015160c083015292915050565b5f5f6020838503121561240a575f5ffd5b82356001600160401b0381111561241f575f5ffd5b8301601f8101851361242f575f5ffd5b80356001600160401b03811115612444575f5ffd5b8560208260051b8401011115612458575f5ffd5b6020919091019590945092505050565b5f5f5f5f5f5f60c0878903121561247d575f5ffd5b86359550602087013594506040870135612496816120a6565b935060608701356124a6816120a6565b925060808701356124b681612148565b915060a08701356001600160401b038111156124d0575f5ffd5b6124dc89828a01612207565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b5f8235609e19833603018112612511575f5ffd5b9190910192915050565b801515811461065b575f5ffd5b5f60208284031215612538575f5ffd5b8135611efd8161251b565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074857610748612543565b5f5f8335601e1984360301811261257f575f5ffd5b8301803591506001600160401b03821115612598575f5ffd5b6020019150600581901b36038213156125af575f5ffd5b9250929050565b808202811582820484141761074857610748612543565b5f826125e757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156125fc575f5ffd5b8151611efd8161251b565b5f612614612224846121e1565b9050828152838383011115612627575f5ffd5b8282602083015e5f602084830101529392505050565b5f6020828403121561264d575f5ffd5b81516001600160401b03811115612662575f5ffd5b820160408185031215612673575f5ffd5b61267b6120ce565b815160028110612689575f5ffd5b815260208201516001600160401b038111156126a3575f5ffd5b80830192505084601f8301126126b7575f5ffd5b6126c685835160208501612607565b6020820152949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f5f858511156126f5575f5ffd5b83861115612701575f5ffd5b5050820193919092039150565b80356001600160e01b0319811690600484101561273f576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60208284031215612795575f5ffd5b5051919050565b63ffffffff881681526001600160a01b0387811660208301528681166040830152851660608201526001600160801b038416608082015260a0810183905260e060c082018190525f906127f190830184612340565b9998505050505050505050565b5f6020828403121561280e575f5ffd5b81516001600160401b03811115612823575f5ffd5b820160c08185031215612834575f5ffd5b61283c6120f6565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08201516001600160401b03811115612880575f5ffd5b80830192505084601f830112612894575f5ffd5b6128a385835160208501612607565b60a0820152949350505050565b5f60408284031280156128c1575f5ffd5b506128ca6120ce565b82516128d5816120a6565b815260208301516128e5816120a6565b60208201529392505050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215612918575f5ffd5b82516129238161251b565b60208401519092506123038161214856fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7f1aa0bc41c09fbe61ccc14f95edc9998b7136087969b5ccb26131ec2cbbc800a2646970667358221220a4c8ab5596128485d8ab1f5cde6cfdce5aed3fd1af4bcc05f95093210755098d64736f6c634300081b003300000000000000000000000023da5f2d509cb43a59d43c108a43edf34510eff1000000000000000000000000157788cc028ac6405bd406f2d1e0a8a22b3cf17b