0 txs
1 call
constructor
constructor(address gov_, address chair_, uint256 maxSlippageBpsDolaToUsdc_, uint256 maxSlippageBpsUsdcToDola_, address bridge_, address dola_chain_, address usdc_chain_, uint32 domain_)
functions
BRIDGE
viewfunction BRIDGE() view returns (address)
CCTP_DOMAIN
viewfunction CCTP_DOMAIN() view returns (uint32)
CCTP
viewfunction CCTP() view returns (address)
chair
viewfunction chair() view returns (address)
depegThreshold
viewfunction depegThreshold() view returns (uint256)
DOLA_CHAIN
viewfunction DOLA_CHAIN() view returns (address)
DOLA_USDC_CONVERSION_MULTI
viewfunction DOLA_USDC_CONVERSION_MULTI() view returns (uint256)
DOLA
viewfunction DOLA() view returns (address)
dolaSupply
viewfunction dolaSupply() view returns (uint256)
farmer
viewfunction farmer() view returns (address)
gov
viewfunction gov() view returns (address)
isExchangeProxy
viewfunction isExchangeProxy(address) view returns (bool)
maxSlippageBpsDolaToUsdc
viewfunction maxSlippageBpsDolaToUsdc() view returns (uint256)
maxSlippageBpsUsdcToDola
viewfunction maxSlippageBpsUsdcToDola() view returns (uint256)
pendingGov
viewfunction pendingGov() view returns (address)
PRECISION
viewfunction PRECISION() view returns (uint256)
USDC_CHAIN
viewfunction USDC_CHAIN() view returns (address)
USDC_FEED
viewfunction USDC_FEED() view returns (address)
USDC
viewfunction USDC() view returns (address)
changeChair
nonpayablefunction changeChair(address newChair)
changeFarmer
nonpayablefunction changeFarmer(address newFarmer)
claimGov
nonpayablefunction claimGov()
contractAll
nonpayablefunction contractAll()
contraction
nonpayablefunction contraction(uint256 dolaAmount)
expansion
nonpayablefunction expansion(uint256 dolaAmount)
expansionAndSwap
nonpayablefunction expansionAndSwap(uint256 dolaAmount, uint256 dolaToSwap, bool useCCTP, bytes swapCallData, address exchangeProxy)
resign
nonpayablefunction resign()
setDepegThreshold
nonpayablefunction setDepegThreshold(uint256 newDepegThreshold)
setExchangeProxy
nonpayablefunction setExchangeProxy(address _proxy, bool _isAllowed)
setMaxSlippageDolaToUsdc
nonpayablefunction setMaxSlippageDolaToUsdc(uint256 newMaxSlippageBps)
setMaxSlippageUsdcToDola
nonpayablefunction setMaxSlippageUsdcToDola(uint256 newMaxSlippageBps)
setPendingGov
nonpayablefunction setPendingGov(address newPendingGov)
swapDOLAtoUSDC
nonpayablefunction swapDOLAtoUSDC(uint256 dolaAmount, bytes swapCallData, address exchangeProxy)
swapUSDCtoDOLA
nonpayablefunction swapUSDCtoDOLA(uint256 usdcAmount, bytes swapCallData, address exchangeProxy)
events
Contraction
event Contraction(uint256 amount)
Expansion
event Expansion(uint256 amount)
NewDepegThreshold
event NewDepegThreshold(uint256 newDepegThreshold)
NewExchangeProxy
event NewExchangeProxy(address indexed oldExchangeProxy, bool isAllowed)
NewFarmer
event NewFarmer(address indexed oldFarmer, address indexed newFarmer)
NewMaxSlippageDolaToUsdc
event NewMaxSlippageDolaToUsdc(uint256 oldMaxSlippageBps, uint256 newMaxSlippageBps)
NewMaxSlippageUsdcToDola
event NewMaxSlippageUsdcToDola(uint256 oldMaxSlippageBps, uint256 newMaxSlippageBps)
SwapDOLAtoUSDC
event SwapDOLAtoUSDC(uint256 dolaAmount, uint256 usdcAmount)
SwapUSDCtoDOLA
event SwapUSDCtoDOLA(uint256 usdcAmount, uint256 dolaAmount)
errors
BelowDepegThreshold
error BelowDepegThreshold()
CantBurnZeroDOLA
error CantBurnZeroDOLA()
InvalidDepegThreshold
error InvalidDepegThreshold()
InvalidProxyAddress
error InvalidProxyAddress()
MaxSlippageTooHigh
error MaxSlippageTooHigh()
OnlyChair
error OnlyChair()
OnlyGov
error OnlyGov()
OnlyPendingGov
error OnlyPendingGov()
SlippageTooHigh
error SlippageTooHigh()
SwapFailed
error SwapFailed()
SwapMoreDolaThanMinted
error SwapMoreDolaThanMinted()
ZeroAddressParameter
error ZeroAddressParameter()
creation bytecode
0x610100604052670d99a8cec7e200006006553480156200001d575f80fd5b5060405162003aea38038062003aea83398181016040528101906200004391906200026d565b8787815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505085600481905550846005819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508063ffffffff1660e08163ffffffff1681525050505050505050505062000331565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620001c18262000196565b9050919050565b620001d381620001b5565b8114620001de575f80fd5b50565b5f81519050620001f181620001c8565b92915050565b5f819050919050565b6200020b81620001f7565b811462000216575f80fd5b50565b5f81519050620002298162000200565b92915050565b5f63ffffffff82169050919050565b62000249816200022f565b811462000254575f80fd5b50565b5f8151905062000267816200023e565b92915050565b5f805f805f805f80610100898b0312156200028d576200028c62000192565b5b5f6200029c8b828c01620001e1565b9850506020620002af8b828c01620001e1565b9750506040620002c28b828c0162000219565b9650506060620002d58b828c0162000219565b9550506080620002e88b828c01620001e1565b94505060a0620002fb8b828c01620001e1565b93505060c06200030e8b828c01620001e1565b92505060e0620003218b828c0162000257565b9150509295985092959890939650565b60805160a05160c05160e05161373f620003ab5f395f81816118d0015261206101525f818161190c015261223701525f818161108301528181611ef101526124e901525f8181610fb20152818161103201528181611e2001528181611ea001528181612166015281816121e60152612793015261373f5ff3fe608060405234801561000f575f80fd5b5060043610610204575f3560e01c80638fb7c6f811610118578063c002e56e116100ab578063e0bfa2581161007a578063e0bfa2581461051e578063e1a611b71461054e578063ee9a31a21461056a578063efdf0bb014610588578063fdf893f5146105a457610204565b8063c002e56e146104aa578063cbe655bb146104c6578063d5f48ac0146104e4578063d811fcf01461050057610204565b80639bd5141c116100e75780639bd5141c14610436578063a97eb55c14610452578063aaf5eb6814610470578063bcb03ef61461048e57610204565b80638fb7c6f8146103be57806392c592d0146103dc5780639520364f146103fa578063985d29a91461041857610204565b80632aaf287f1161019b5780635d32272f1161016a5780635d32272f1461035057806364371ae21461036e57806369652fcf1461037857806387d5ef791461038257806389a30271146103a057610204565b80632aaf287f146102ee57806330256be21461030a5780633c635ee5146103145780633d4912c31461033257610204565b806319a19e0f116101d757806319a19e0f1461027a578063252408101461029657806326f4bb51146102b45780632720b22e146102d257610204565b806302bc6884146102085780630fa6576514610224578063123ebcd71461024057806312d43a511461025c575b5f80fd5b610222600480360381019061021d9190612ce2565b6105c2565b005b61023e60048036038101906102399190612d53565b6109dd565b005b61025a60048036038101906102559190612db3565b610b84565b005b610264610d13565b6040516102719190612e00565b60405180910390f35b610294600480360381019061028f9190612e19565b610d36565b005b61029e610e3b565b6040516102ab9190612e00565b60405180910390f35b6102bc610e60565b6040516102c99190612e53565b60405180910390f35b6102ec60048036038101906102e79190612e19565b610e66565b005b61030860048036038101906103039190612ce2565b611150565b005b61031261156b565b005b61031c611687565b6040516103299190612e53565b60405180910390f35b61033a611690565b6040516103479190612e53565b60405180910390f35b610358611696565b6040516103659190612ec7565b60405180910390f35b6103766116ae565b005b6103806117d6565b005b61038a61189e565b6040516103979190612f00565b60405180910390f35b6103a86118b6565b6040516103b59190612f39565b60405180910390f35b6103c66118ce565b6040516103d39190612f70565b60405180910390f35b6103e46118f2565b6040516103f19190612fa9565b60405180910390f35b61040261190a565b60405161040f9190612e00565b60405180910390f35b61042061192e565b60405161042d9190612e53565b60405180910390f35b610450600480360381019061044b9190612fc2565b611934565b005b61045a61230f565b6040516104679190612e53565b60405180910390f35b610478612315565b6040516104859190612e53565b60405180910390f35b6104a860048036038101906104a39190612e19565b61231b565b005b6104c460048036038101906104bf9190612d53565b612420565b005b6104ce6124e7565b6040516104db9190612e00565b60405180910390f35b6104fe60048036038101906104f99190612e19565b61250b565b005b6105086126bd565b6040516105159190612e00565b60405180910390f35b61053860048036038101906105339190612d53565b6126e2565b6040516105459190613067565b60405180910390f35b61056860048036038101906105639190612e19565b6126ff565b005b610572612791565b60405161057f91906130a0565b60405180910390f35b6105a2600480360381019061059d9190612d53565b6127b5565b005b6105ac61287c565b6040516105b99190612e00565b60405180910390f35b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610648576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166106c8576040517ffc9dfba700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d06128a1565b73865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b815260040161071f9291906130b9565b6020604051808303815f875af115801561073b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075f91906130f4565b505f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107ae9190612e00565b602060405180830381865afa1580156107c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ed9190613133565b90505f8273ffffffffffffffffffffffffffffffffffffffff16858560405161081792919061319a565b5f604051808303815f865af19150503d805f8114610850576040519150601f19603f3d011682016040523d82523d5f602084013e610855565b606091505b5050905080610890576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108df9190612e00565b602060405180830381865afa1580156108fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091e9190613133565b61092891906131df565b905061271064e8d4a5100060045461271061094391906131df565b8961094e9190613212565b6109589190613280565b6109629190613280565b81101561099b576040517f850c6f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f580d0e74f28d3c92e0ca064cb9b17422ffa79a9f1474356cdeab7b72876de4f287826040516109cc9291906132b0565b60405180910390a150505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ac6576040517fa8f4643a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffd57ccbdfff4702cf768e55145e8bafb289f03d2857855f4f83b6a0c6b9d186f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c08576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6d576040517fa8f4643a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa95f7d78c92be6f3812c00e12f67b202769f6d2abe8596413f715fc62b5709e882604051610d079190613067565b60405180910390a25050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115610df6576040517f6dabd5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9041cd80fff6f2765956570f5ef8d395ee7f0958b16726602f76180ac36d0d2260055482604051610e299291906132b0565b60405180910390a18060058190555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eec576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f828254610efd91906132d7565b9250508190555073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610f539291906130b9565b5f604051808303815f87803b158015610f6a575f80fd5b505af1158015610f7c573d5f803e3d5ffd5b5050505073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401610fef9291906130b9565b6020604051808303815f875af115801561100b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102f91906130f4565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b252073865377367054516e17014ccded1e7d814edc9ce47f000000000000000000000000000000000000000000000000000000000000000060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168562030d406040518663ffffffff1660e01b81526004016110e9959493929190613376565b5f604051808303815f87803b158015611100575f80fd5b505af1158015611112573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516111459190612e53565b60405180910390a150565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111d6576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611256576040517ffc9dfba700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125e6128a1565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b382866040518363ffffffff1660e01b81526004016112ad9291906130b9565b6020604051808303815f875af11580156112c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ed91906130f4565b505f73865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161133c9190612e00565b602060405180830381865afa158015611357573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137b9190613133565b90505f8273ffffffffffffffffffffffffffffffffffffffff1685856040516113a592919061319a565b5f604051808303815f865af19150503d805f81146113de576040519150601f19603f3d011682016040523d82523d5f602084013e6113e3565b606091505b505090508061141e576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161146d9190612e00565b602060405180830381865afa158015611488573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac9190613133565b6114b691906131df565b905061271064e8d4a510006005546127106114d191906131df565b896114dc9190613212565b6114e69190613212565b6114f09190613280565b811015611529576040517f850c6f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f2a07a25de71aafebb634ef4e53de7933c2e3a2c59ada2cf62f0d329379f3c6ec878260405161155a9291906132b0565b60405180910390a150505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f1576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61168573865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116419190612e00565b602060405180830381865afa15801561165c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116809190613133565b61295f565b565b64e8d4a5100081565b60065481565b735b4e043d614809a4b240ed4be7d1589f7871a74981565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611734576040517f0f6e1a7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461185c576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b73bd3fa81b58ba92a82136038b25adec7066af315581565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b7f000000000000000000000000000000000000000000000000000000000000000081565b73865377367054516e17014ccded1e7d814edc9ce481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119ba576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b858511156119f4576040517f859df07b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a74576040517ffc9dfba700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a7c6128a1565b8560035f828254611a8d91906132d7565b9250508190555073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166340c10f1930886040518363ffffffff1660e01b8152600401611ae39291906130b9565b5f604051808303815f87803b158015611afa575f80fd5b505af1158015611b0c573d5f803e3d5ffd5b5050505073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663095ea7b382876040518363ffffffff1660e01b8152600401611b5f9291906130b9565b6020604051808303815f875af1158015611b7b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9f91906130f4565b505f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bee9190612e00565b602060405180830381865afa158015611c09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d9190613133565b90505f8273ffffffffffffffffffffffffffffffffffffffff168585604051611c5792919061319a565b5f604051808303815f865af19150503d805f8114611c90576040519150601f19603f3d011682016040523d82523d5f602084013e611c95565b606091505b5050905080611cd0576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d1e9190612e00565b602060405180830381865afa158015611d39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5d9190613133565b90505f8382611d6c91906131df565b905064e8d4a51000612710600454612710611d8791906131df565b8b611d929190613212565b611d9c9190613280565b611da69190613280565b811015611ddf576040517f850c6f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f898b611dec91906131df565b905073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401611e5d9291906130b9565b6020604051808303815f875af1158015611e79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9d91906130f4565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b252073865377367054516e17014ccded1e7d814edc9ce47f000000000000000000000000000000000000000000000000000000000000000060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168562030d406040518663ffffffff1660e01b8152600401611f57959493929190613376565b5f604051808303815f87803b158015611f6e575f80fd5b505af1158015611f80573d5f803e3d5ffd5b5050505088156121345773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b373bd3fa81b58ba92a82136038b25adec7066af3155846040518363ffffffff1660e01b8152600401611fed9291906130b9565b6020604051808303815f875af1158015612009573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202d91906130f4565b5073bd3fa81b58ba92a82136038b25adec7066af315573ffffffffffffffffffffffffffffffffffffffff16636fd3504e837f000000000000000000000000000000000000000000000000000000000000000060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f1b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518563ffffffff1660e01b81526004016120ee94939291906133f2565b6020604051808303815f875af115801561210a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212e9190613472565b506122cb565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b81526004016121a39291906130b9565b6020604051808303815f875af11580156121bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e391906130f4565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663838b252073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb487f000000000000000000000000000000000000000000000000000000000000000060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168662030d406040518663ffffffff1660e01b815260040161229d959493929190613376565b5f604051808303815f87803b1580156122b4575f80fd5b505af11580156122c6573d5f803e3d5ffd5b505050505b7fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b0328b6040516122fa9190612e53565b60405180910390a15050505050505050505050565b60055481565b61271081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461239f576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156123db576040517f6dabd5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fac5e5a380cb5f58c1b001d544493a86c7b9c3b5cb18f913cd11d7470e01a99266004548260405161240e9291906132b0565b60405180910390a18060048190555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124a4576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461258f576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f735b4e043d614809a4b240ed4be7d1589f7871a74973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061261191906134d3565b905080600a612620919061362d565b82118061264457506001816126359190613677565b600a612641919061362d565b82105b1561267b576040517ff881cf4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816006819055507ffcbd4fb7a5cfc701b3f56db2095b9bcf1789b26f76904b1470b83b1ed3c10d93826040516126b19190612e53565b60405180910390a15050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612785576040517fd0f6c81f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61278e8161295f565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612839576040517f9097750300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600654735b4e043d614809a4b240ed4be7d1589f7871a74973ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612901573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292591906136de565b121561295d576040517fce08ceef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f8103612998576040517fac231f4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354811115612b1f5773865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166342966c686003546040518263ffffffff1660e01b81526004016129f19190612e53565b5f604051808303815f87803b158015612a08575f80fd5b505af1158015612a1a573d5f803e3d5ffd5b5050505073865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035484612a7c91906131df565b6040518363ffffffff1660e01b8152600401612a999291906130b9565b6020604051808303815f875af1158015612ab5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ad991906130f4565b507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba600354604051612b0b9190612e53565b60405180910390a15f600381905550612be9565b73865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b8152600401612b6c9190612e53565b5f604051808303815f87803b158015612b83575f80fd5b505af1158015612b95573d5f803e3d5ffd5b505050508060035f828254612baa91906131df565b925050819055507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba81604051612be09190612e53565b60405180910390a15b50565b5f80fd5b5f80fd5b5f819050919050565b612c0681612bf4565b8114612c10575f80fd5b50565b5f81359050612c2181612bfd565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4857612c47612c27565b5b8235905067ffffffffffffffff811115612c6557612c64612c2b565b5b602083019150836001820283011115612c8157612c80612c2f565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612cb182612c88565b9050919050565b612cc181612ca7565b8114612ccb575f80fd5b50565b5f81359050612cdc81612cb8565b92915050565b5f805f8060608587031215612cfa57612cf9612bec565b5b5f612d0787828801612c13565b945050602085013567ffffffffffffffff811115612d2857612d27612bf0565b5b612d3487828801612c33565b93509350506040612d4787828801612cce565b91505092959194509250565b5f60208284031215612d6857612d67612bec565b5b5f612d7584828501612cce565b91505092915050565b5f8115159050919050565b612d9281612d7e565b8114612d9c575f80fd5b50565b5f81359050612dad81612d89565b92915050565b5f8060408385031215612dc957612dc8612bec565b5b5f612dd685828601612cce565b9250506020612de785828601612d9f565b9150509250929050565b612dfa81612ca7565b82525050565b5f602082019050612e135f830184612df1565b92915050565b5f60208284031215612e2e57612e2d612bec565b5b5f612e3b84828501612c13565b91505092915050565b612e4d81612bf4565b82525050565b5f602082019050612e665f830184612e44565b92915050565b5f819050919050565b5f612e8f612e8a612e8584612c88565b612e6c565b612c88565b9050919050565b5f612ea082612e75565b9050919050565b5f612eb182612e96565b9050919050565b612ec181612ea7565b82525050565b5f602082019050612eda5f830184612eb8565b92915050565b5f612eea82612e96565b9050919050565b612efa81612ee0565b82525050565b5f602082019050612f135f830184612ef1565b92915050565b5f612f2382612e96565b9050919050565b612f3381612f19565b82525050565b5f602082019050612f4c5f830184612f2a565b92915050565b5f63ffffffff82169050919050565b612f6a81612f52565b82525050565b5f602082019050612f835f830184612f61565b92915050565b5f612f9382612e96565b9050919050565b612fa381612f89565b82525050565b5f602082019050612fbc5f830184612f9a565b92915050565b5f805f805f8060a08789031215612fdc57612fdb612bec565b5b5f612fe989828a01612c13565b9650506020612ffa89828a01612c13565b955050604061300b89828a01612d9f565b945050606087013567ffffffffffffffff81111561302c5761302b612bf0565b5b61303889828a01612c33565b9350935050608061304b89828a01612cce565b9150509295509295509295565b61306181612d7e565b82525050565b5f60208201905061307a5f830184613058565b92915050565b5f61308a82612e96565b9050919050565b61309a81613080565b82525050565b5f6020820190506130b35f830184613091565b92915050565b5f6040820190506130cc5f830185612df1565b6130d96020830184612e44565b9392505050565b5f815190506130ee81612d89565b92915050565b5f6020828403121561310957613108612bec565b5b5f613116848285016130e0565b91505092915050565b5f8151905061312d81612bfd565b92915050565b5f6020828403121561314857613147612bec565b5b5f6131558482850161311f565b91505092915050565b5f81905092915050565b828183375f83830152505050565b5f613181838561315e565b935061318e838584613168565b82840190509392505050565b5f6131a6828486613176565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131e982612bf4565b91506131f483612bf4565b925082820390508181111561320c5761320b6131b2565b5b92915050565b5f61321c82612bf4565b915061322783612bf4565b925082820261323581612bf4565b9150828204841483151761324c5761324b6131b2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61328a82612bf4565b915061329583612bf4565b9250826132a5576132a4613253565b5b828204905092915050565b5f6040820190506132c35f830185612e44565b6132d06020830184612e44565b9392505050565b5f6132e182612bf4565b91506132ec83612bf4565b9250828201905080821115613304576133036131b2565b5b92915050565b5f819050919050565b5f61332d6133286133238461330a565b612e6c565b612f52565b9050919050565b61333d81613313565b82525050565b5f82825260208201905092915050565b50565b5f6133615f83613343565b915061336c82613353565b5f82019050919050565b5f60c0820190506133895f830188612df1565b6133966020830187612df1565b6133a36040830186612df1565b6133b06060830185612e44565b6133bd6080830184613334565b81810360a08301526133ce81613356565b90509695505050505050565b5f819050919050565b6133ec816133da565b82525050565b5f6080820190506134055f830187612e44565b6134126020830186612f61565b61341f60408301856133e3565b61342c6060830184612df1565b95945050505050565b5f67ffffffffffffffff82169050919050565b61345181613435565b811461345b575f80fd5b50565b5f8151905061346c81613448565b92915050565b5f6020828403121561348757613486612bec565b5b5f6134948482850161345e565b91505092915050565b5f60ff82169050919050565b6134b28161349d565b81146134bc575f80fd5b50565b5f815190506134cd816134a9565b92915050565b5f602082840312156134e8576134e7612bec565b5b5f6134f5848285016134bf565b91505092915050565b5f8160011c9050919050565b5f808291508390505b60018511156135535780860481111561352f5761352e6131b2565b5b600185161561353e5780820291505b808102905061354c856134fe565b9450613513565b94509492505050565b5f8261356b5760019050613626565b81613578575f9050613626565b816001811461358e5760028114613598576135c7565b6001915050613626565b60ff8411156135aa576135a96131b2565b5b8360020a9150848211156135c1576135c06131b2565b5b50613626565b5060208310610133831016604e8410600b84101617156135fc5782820a9050838111156135f7576135f66131b2565b5b613626565b613609848484600161350a565b925090508184048111156136205761361f6131b2565b5b81810290505b9392505050565b5f61363782612bf4565b91506136428361349d565b925061366f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461355c565b905092915050565b5f6136818261349d565b915061368c8361349d565b9250828203905060ff8111156136a5576136a46131b2565b5b92915050565b5f819050919050565b6136bd816136ab565b81146136c7575f80fd5b50565b5f815190506136d8816136b4565b92915050565b5f602082840312156136f3576136f2612bec565b5b5f613700848285016136ca565b9150509291505056fea26469706673582212202c9a4d26979eec32b9f33297eb7b35c84ab3bd29463c2639973cad88e335b5b964736f6c63430008140033000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000008f97cca30dbe80e7a8b462f1dd1a51c32accdfc80000000000000000000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000003154cf16ccdb4c6d922629664174b904d80f2c350000000000000000000000004621b7a9c75199271f773ebd9a499dbd165c3191000000000000000000000000d9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca0000000000000000000000000000000000000000000000000000000000000006