2 txs
4 calls
constructor
constructor(bytes32 _fraxtalHop, uint256 _numDVNs, address _EXECUTOR, address _DVN, address _TREASURY, address[] _approvedOfts)
functions
approvedOft
viewfunction approvedOft(address) view returns (bool)
DVN
viewfunction DVN() view returns (address)
EXECUTOR
viewfunction EXECUTOR() view returns (address)
executorOptions
viewfunction executorOptions(uint32) view returns (bytes)
fraxtalHop
viewfunction fraxtalHop() view returns (bytes32)
hopFee
viewfunction hopFee() view returns (uint256)
numDVNs
viewfunction numDVNs() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
quote
viewfunction quote(address _oft, uint32 _dstEid, bytes32 _to, uint256 _amountLD) view returns (tuple fee)
quoteHop
viewfunction quoteHop(uint32 _dstEid) view returns (uint256 finalFee)
TREASURY
viewfunction TREASURY() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
pause
nonpayablefunction pause(bool _paused)
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, address recipient, uint256 tokenAmount)
recoverETH
nonpayablefunction recoverETH(address recipient, uint256 tokenAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
sendOFT
payablefunction sendOFT(address _oft, uint32 _dstEid, bytes32 _to, uint256 _amountLD) payable
setExecutorOptions
nonpayablefunction setExecutorOptions(uint32 eid, bytes _options)
setFraxtalHop
nonpayablefunction setFraxtalHop(address _fraxtalHop)
setFraxtalHop
nonpayablefunction setFraxtalHop(bytes32 _fraxtalHop)
setHopFee
nonpayablefunction setHopFee(uint256 _hopFee)
setNumDVNs
nonpayablefunction setNumDVNs(uint256 _numDVNs)
toggleOFTApproval
nonpayablefunction toggleOFTApproval(address _oft, bool _approved)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SendOFT
event SendOFT(address oft, address indexed sender, uint32 indexed dstEid, bytes32 indexed to, uint256 amountLD)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
HopPaused
error HopPaused()
InsufficientFee
error InsufficientFee()
InvalidOFT
error InvalidOFT()
InvalidOptionType
error InvalidOptionType(uint16 optionType)
NotEndpoint
error NotEndpoint()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RefundFailed
error RefundFailed()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAmountSend
error ZeroAmountSend()
creation bytecode
0x60e06040525f600160146101000a81548160ff0219169083151502179055506002600355600160045534801562000034575f80fd5b5060405162003c3738038062003c3783398181016040528101906200005a91906200056a565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ce575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c5919062000632565b60405180910390fd5b620000df816200022360201b60201c565b5085600281905550846003819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505f5b81518110156200021657600160065f848481518110620001b157620001b06200064d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506200018c565b505050505050506200067a565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000258816200025b60201b60201c565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b62000341816200032d565b81146200034c575f80fd5b50565b5f815190506200035f8162000336565b92915050565b5f819050919050565b620003798162000365565b811462000384575f80fd5b50565b5f8151905062000397816200036e565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003c8826200039d565b9050919050565b620003da81620003bc565b8114620003e5575f80fd5b50565b5f81519050620003f881620003cf565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200044a8262000402565b810181811067ffffffffffffffff821117156200046c576200046b62000412565b5b80604052505050565b5f620004806200031c565b90506200048e82826200043f565b919050565b5f67ffffffffffffffff821115620004b057620004af62000412565b5b602082029050602081019050919050565b5f80fd5b5f620004db620004d58462000493565b62000475565b90508083825260208201905060208402830185811115620005015762000500620004c1565b5b835b818110156200052e5780620005198882620003e8565b84526020840193505060208101905062000503565b5050509392505050565b5f82601f8301126200054f576200054e620003fe565b5b815162000561848260208601620004c5565b91505092915050565b5f805f805f8060c0878903121562000587576200058662000325565b5b5f6200059689828a016200034f565b9650506020620005a989828a0162000387565b9550506040620005bc89828a01620003e8565b9450506060620005cf89828a01620003e8565b9350506080620005e289828a01620003e8565b92505060a087015167ffffffffffffffff81111562000606576200060562000329565b5b6200061489828a0162000538565b9150509295509295509295565b6200062c81620003bc565b82525050565b5f602082019050620006475f83018462000621565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c05161357d620006ba5f395f81816106ab0152610e3301525f81816105f80152610bed01525f8181610a3a0152610d75015261357d5ff3fe608060405260043610610184575f3560e01c806367fb4738116100d0578063b218b19811610089578063e30c397811610063578063e30c39781461051b578063ec1278d614610545578063efb799851461056d578063f2fde38b146105a95761018b565b8063b218b1981461048b578063c616f376146104b5578063d393f072146104f15761018b565b806367fb4738146103a9578063715018a6146103d157806377958f87146103e757806379ba50971461040f5780638153924b146104255780638da5cb5b146104615761018b565b80633e832c901161013d5780635b461c83116101175780635b461c83146103055780635c975abb1461032d5780635e8c18da14610357578063630dc7cb1461037f5761018b565b80633e832c90146102855780635135db46146102a157806359c7c516146102c95761018b565b806302329a291461018f578063104db380146101b75780631171bda9146101e157806324df604b146102095780632d2c5565146102335780633e0c06291461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101b560048036038101906101b091906121b5565b6105d1565b005b3480156101c2575f80fd5b506101cb6105f6565b6040516101d8919061221f565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190612295565b61061a565b005b348015610214575f80fd5b5061021d6106a3565b60405161022a91906122f4565b60405180910390f35b34801561023e575f80fd5b506102476106a9565b604051610254919061221f565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e919061230d565b6106cd565b005b61029f600480360381019061029a91906123b7565b61073f565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612557565b61094d565b005b3480156102d4575f80fd5b506102ef60048036038101906102ea91906125b1565b610984565b6040516102fc91906125eb565b60405180910390f35b348015610310575f80fd5b5061032b600480360381019061032691906125b1565b6109a1565b005b348015610338575f80fd5b506103416109c5565b60405161034e91906125eb565b60405180910390f35b348015610362575f80fd5b5061037d60048036038101906103789190612604565b6109d8565b005b34801561038a575f80fd5b50610393610a38565b6040516103a0919061221f565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190612642565b610a5c565b005b3480156103dc575f80fd5b506103e5610a6e565b005b3480156103f2575f80fd5b5061040d6004803603810190610408919061266d565b610a81565b005b34801561041a575f80fd5b50610423610a93565b005b348015610430575f80fd5b5061044b60048036038101906104469190612698565b610b21565b604051610458919061273d565b60405180910390f35b34801561046c575f80fd5b50610475610bbc565b604051610482919061221f565b60405180910390f35b348015610496575f80fd5b5061049f610be3565b6040516104ac91906122f4565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190612698565b610be9565b6040516104e891906122f4565b60405180910390f35b3480156104fc575f80fd5b50610505610f13565b604051610512919061276c565b60405180910390f35b348015610526575f80fd5b5061052f610f19565b60405161053c919061221f565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190612642565b610f41565b005b348015610578575f80fd5b50610593600480360381019061058e91906123b7565b610f53565b6040516105a091906127c1565b60405180910390f35b3480156105b4575f80fd5b506105cf60048036038101906105ca91906125b1565b611113565b005b6105d96111bf565b80600160146101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106226111bf565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161065d9291906127da565b6020604051808303815f875af1158015610679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d9190612815565b50505050565b60045481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106d56111bf565b8173ffffffffffffffffffffffffffffffffffffffff16816040516106f99061286d565b5f6040518083038185875af1925050503d805f8114610733576040519150601f19603f3d011682016040523d82523d5f602084013e610738565b606091505b5050505050565b600160149054906101000a900460ff1615610786576040517f819f993900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610806576040517f7413e48600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108108482611246565b90505f810361084b576040517f4fdf5da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c38473ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610897573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bb9190612895565b3330846112d7565b61762f8363ffffffff16036108e2576108dd848383611359565b6108ef565b6108ee84848484611636565b5b818363ffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbc9ee36b6ca0bdd5b3840e6d329dd19a2490d880c7ce24d9818aa593adfb35be878560405161093f9291906127da565b60405180910390a450505050565b6109556111bf565b8060055f8463ffffffff1663ffffffff1681526020019081526020015f20908161097f9190612aba565b505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b6109c28173ffffffffffffffffffffffffffffffffffffffff165f1b610a81565b50565b600160149054906101000a900460ff1681565b6109e06111bf565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a646111bf565b8060048190555050565b610a766111bf565b610a7f5f6118cd565b565b610a896111bf565b8060028190555050565b5f610a9c6118fd565b90508073ffffffffffffffffffffffffffffffffffffffff16610abd610f19565b73ffffffffffffffffffffffffffffffffffffffff1614610b1557806040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b0c919061221f565b60405180910390fd5b610b1e816118cd565b50565b6005602052805f5260405f205f915090508054610b3d906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610b69906128ed565b8015610bb45780601f10610b8b57610100808354040283529160200191610bb4565b820191905f5260205f20905b815481529060010190602001808311610b9757829003601f168201915b505050505081565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330bb3aac846005306040518463ffffffff1660e01b8152600401610c4993929190612c04565b602060405180830381865afa158015610c64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c889190612c60565b90505f60055f8563ffffffff1663ffffffff1681526020019081526020015f208054610cb3906128ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdf906128ed565b8015610d2a5780601f10610d0157610100808354040283529160200191610d2a565b820191905f5260205f20905b815481529060010190602001808311610d0d57829003601f168201915b505050505090505f815103610d72576040518060400160405280601481526020017f01001101000000000000000000000000000493e000000000000000000000000081525090505b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663709eb66486306024866040518563ffffffff1660e01b8152600401610dd39493929190612cc4565b602060405180830381865afa158015610dee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e129190612c60565b90505f8160035485610e249190612d3b565b610e2e9190612d7c565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d42442213089855f6040518563ffffffff1660e01b8152600401610e909493929190612daf565b602060405180830381865afa158015610eab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecf9190612c60565b90508082610edd9190612d7c565b9550612710600454612710610ef29190612d7c565b87610efd9190612d3b565b610f079190612e1f565b95505050505050919050565b60025481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f496111bf565b8060038190555050565b610f5b612115565b610f658583611246565b915061762f8463ffffffff160361105f575f6040518060e0016040528061762f63ffffffff16815260200185815260200184815260200184815260200160405180602001604052805f815250815260200160405180602001604052805f815250815260200160405180602001604052805f81525081525090508573ffffffffffffffffffffffffffffffffffffffff16633b6f743b825f6040518363ffffffff1660e01b8152600401611019929190612f5c565b6040805180830381865afa158015611033573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110579190612fdb565b91505061110b565b5f61106c85858586611904565b90508573ffffffffffffffffffffffffffffffffffffffff16633b6f743b825f6040518363ffffffff1660e01b81526004016110a9929190612f5c565b6040805180830381865afa1580156110c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e79190612fdb565b91506110f285610be9565b825f018181516111029190612d7c565b91508181525050505b949350505050565b61111b6111bf565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661117a610bbc565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6111c76118fd565b73ffffffffffffffffffffffffffffffffffffffff166111e5610bbc565b73ffffffffffffffffffffffffffffffffffffffff1614611244576112086118fd565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161123b919061221f565b60405180910390fd5b565b5f808373ffffffffffffffffffffffffffffffffffffffff1663963efcaa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611291573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b59190612c60565b90508081846112c49190612e1f565b6112ce9190612d3b565b91505092915050565b611353848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161130c93929190613006565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061199d565b50505050565b6113d08373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c99190612895565b8483611a32565b5f6040518060e0016040528061762f63ffffffff16815260200184815260200183815260200183815260200160405180602001604052805f815250815260200160405180602001604052805f815250815260200160405180602001604052805f81525081525090505f8473ffffffffffffffffffffffffffffffffffffffff16633b6f743b835f6040518363ffffffff1660e01b8152600401611474929190612f5c565b6040805180830381865afa15801561148e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b29190612fdb565b90508473ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b3825f01518484306040518563ffffffff1660e01b81526004016114f59392919061303b565b60c06040518083038185885af1158015611511573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115369190613163565b5050805f0151341015611575576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015134111561162f575f3373ffffffffffffffffffffffffffffffffffffffff16825f0151346115a791906131a1565b6040516115b39061286d565b5f6040518083038185875af1925050503d805f81146115ed576040519150601f19603f3d011682016040523d82523d5f602084013e6115f2565b606091505b505090508061162d576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5050505050565b5f61164384848485611904565b90505f8573ffffffffffffffffffffffffffffffffffffffff16633b6f743b835f6040518363ffffffff1660e01b8152600401611681929190612f5c565b6040805180830381865afa15801561169b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116bf9190612fdb565b90505f6116cb86610be9565b825f01516116d99190612d7c565b905034811115611715576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61178c8773ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117859190612895565b8886611a32565b8673ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b3835f01518585306040518563ffffffff1660e01b81526004016117cd9392919061303b565b60c06040518083038185885af11580156117e9573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061180e9190613163565b5050803411156118c4575f3373ffffffffffffffffffffffffffffffffffffffff16823461183c91906131a1565b6040516118489061286d565b5f6040518083038185875af1925050503d805f8114611882576040519150601f19603f3d011682016040523d82523d5f602084013e611887565b606091505b50509050806118c2576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050505050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556118fa81611b3f565b50565b5f33905090565b61190c61212d565b5f611915611c00565b9050611926815f620f42405f611c28565b905061762f825f019063ffffffff16908163ffffffff16815250506002548260200181815250508382604001818152505082826060018181525050808260800181905250848660405160200161197d9291906131d4565b6040516020818303038152906040528260a0018190525050949350505050565b5f6119c7828473ffffffffffffffffffffffffffffffffffffffff16611cc290919063ffffffff16565b90505f8151141580156119eb5750808060200190518101906119e99190612815565b155b15611a2d57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611a24919061221f565b60405180910390fd5b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b38484604051602401611a629291906127da565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611ab08482611cd7565b611b3957611b2e848573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3865f604051602401611ae7929190613234565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061199d565b611b38848261199d565b5b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606003604051602001611c14919061329c565b604051602081830303815290604052905090565b606084600361ffff16611c445f83611d9690919063ffffffff16565b61ffff1614611c9c57611c605f82611d9690919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401611c9391906132c5565b60405180910390fd5b5f611ca8868686611dfb565b9050611cb687600383611e6b565b92505050949350505050565b6060611ccf83835f611f26565b905092915050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1684604051611cff919061330e565b5f604051808303815f865af19150503d805f8114611d38576040519150601f19603f3d011682016040523d82523d5f602084013e611d3d565b606091505b5091509150818015611d6a57505f81511480611d69575080806020019051810190611d689190612815565b5b5b8015611d8c57505f8573ffffffffffffffffffffffffffffffffffffffff163b115b9250505092915050565b5f600282611da49190612d7c565b83511015611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde9061337e565b60405180910390fd5b5f8260028501015190508091505092915050565b60605f826fffffffffffffffffffffffffffffffff1614611e3f57838383604051602001611e2b939291906133eb565b604051602081830303815290604052611e62565b8383604051602001611e52929190613427565b6040516020818303038152906040525b90509392505050565b606083600361ffff16611e875f83611d9690919063ffffffff16565b61ffff1614611edf57611ea35f82611d9690919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401611ed691906132c5565b60405180910390fd5b84600180611eed8651611fef565b611ef79190613452565b8686604051602001611f0d9594939291906134c7565b6040516020818303038152906040529150509392505050565b606081471015611f6d57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611f64919061221f565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051611f95919061330e565b5f6040518083038185875af1925050503d805f8114611fcf576040519150601f19603f3d011682016040523d82523d5f602084013e611fd4565b606091505b5091509150611fe4868383612044565b925050509392505050565b5f61ffff801682111561203c576010826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612033929190613556565b60405180910390fd5b819050919050565b60608261205957612054826120d1565b6120c9565b5f825114801561207f57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156120c157836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016120b8919061221f565b60405180910390fd5b8190506120ca565b5b9392505050565b5f815111156120e35780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052805f81526020015f81525090565b6040518060e001604052805f63ffffffff1681526020015f80191681526020015f81526020015f81526020016060815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f8115159050919050565b61219481612180565b811461219e575f80fd5b50565b5f813590506121af8161218b565b92915050565b5f602082840312156121ca576121c9612178565b5b5f6121d7848285016121a1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612209826121e0565b9050919050565b612219816121ff565b82525050565b5f6020820190506122325f830184612210565b92915050565b612241816121ff565b811461224b575f80fd5b50565b5f8135905061225c81612238565b92915050565b5f819050919050565b61227481612262565b811461227e575f80fd5b50565b5f8135905061228f8161226b565b92915050565b5f805f606084860312156122ac576122ab612178565b5b5f6122b98682870161224e565b93505060206122ca8682870161224e565b92505060406122db86828701612281565b9150509250925092565b6122ee81612262565b82525050565b5f6020820190506123075f8301846122e5565b92915050565b5f806040838503121561232357612322612178565b5b5f6123308582860161224e565b925050602061234185828601612281565b9150509250929050565b5f63ffffffff82169050919050565b6123638161234b565b811461236d575f80fd5b50565b5f8135905061237e8161235a565b92915050565b5f819050919050565b61239681612384565b81146123a0575f80fd5b50565b5f813590506123b18161238d565b92915050565b5f805f80608085870312156123cf576123ce612178565b5b5f6123dc8782880161224e565b94505060206123ed87828801612370565b93505060406123fe878288016123a3565b925050606061240f87828801612281565b91505092959194509250565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61246982612423565b810181811067ffffffffffffffff8211171561248857612487612433565b5b80604052505050565b5f61249a61216f565b90506124a68282612460565b919050565b5f67ffffffffffffffff8211156124c5576124c4612433565b5b6124ce82612423565b9050602081019050919050565b828183375f83830152505050565b5f6124fb6124f6846124ab565b612491565b9050828152602081018484840111156125175761251661241f565b5b6125228482856124db565b509392505050565b5f82601f83011261253e5761253d61241b565b5b813561254e8482602086016124e9565b91505092915050565b5f806040838503121561256d5761256c612178565b5b5f61257a85828601612370565b925050602083013567ffffffffffffffff81111561259b5761259a61217c565b5b6125a78582860161252a565b9150509250929050565b5f602082840312156125c6576125c5612178565b5b5f6125d38482850161224e565b91505092915050565b6125e581612180565b82525050565b5f6020820190506125fe5f8301846125dc565b92915050565b5f806040838503121561261a57612619612178565b5b5f6126278582860161224e565b9250506020612638858286016121a1565b9150509250929050565b5f6020828403121561265757612656612178565b5b5f61266484828501612281565b91505092915050565b5f6020828403121561268257612681612178565b5b5f61268f848285016123a3565b91505092915050565b5f602082840312156126ad576126ac612178565b5b5f6126ba84828501612370565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126fa5780820151818401526020810190506126df565b5f8484015250505050565b5f61270f826126c3565b61271981856126cd565b93506127298185602086016126dd565b61273281612423565b840191505092915050565b5f6020820190508181035f8301526127558184612705565b905092915050565b61276681612384565b82525050565b5f60208201905061277f5f83018461275d565b92915050565b61278e81612262565b82525050565b604082015f8201516127a85f850182612785565b5060208201516127bb6020850182612785565b50505050565b5f6040820190506127d45f830184612794565b92915050565b5f6040820190506127ed5f830185612210565b6127fa60208301846122e5565b9392505050565b5f8151905061280f8161218b565b92915050565b5f6020828403121561282a57612829612178565b5b5f61283784828501612801565b91505092915050565b5f81905092915050565b50565b5f6128585f83612840565b91506128638261284a565b5f82019050919050565b5f6128778261284d565b9150819050919050565b5f8151905061288f81612238565b92915050565b5f602082840312156128aa576128a9612178565b5b5f6128b784828501612881565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061290457607f821691505b602082108103612917576129166128c0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261293e565b612983868361293e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129be6129b96129b484612262565b61299b565b612262565b9050919050565b5f819050919050565b6129d7836129a4565b6129eb6129e3826129c5565b84845461294a565b825550505050565b5f90565b6129ff6129f3565b612a0a8184846129ce565b505050565b5b81811015612a2d57612a225f826129f7565b600181019050612a10565b5050565b601f821115612a7257612a438161291d565b612a4c8461292f565b81016020851015612a5b578190505b612a6f612a678561292f565b830182612a0f565b50505b505050565b5f82821c905092915050565b5f612a925f1984600802612a77565b1980831691505092915050565b5f612aaa8383612a83565b9150826002028217905092915050565b612ac3826126c3565b67ffffffffffffffff811115612adc57612adb612433565b5b612ae682546128ed565b612af1828285612a31565b5f60209050601f831160018114612b22575f8415612b10578287015190505b612b1a8582612a9f565b865550612b81565b601f198416612b308661291d565b5f5b82811015612b5757848901518255600182019150602085019450602081019050612b32565b86831015612b745784890151612b70601f891682612a83565b8355505b6001600288020188555050505b505050505050565b612b928161234b565b82525050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612bce612bc9612bc484612b98565b61299b565b612ba1565b9050919050565b612bde81612bb4565b82525050565b5f612bef5f836126cd565b9150612bfa8261284a565b5f82019050919050565b5f608082019050612c175f830186612b89565b612c246020830185612bd5565b612c316040830184612210565b8181036060830152612c4281612be4565b9050949350505050565b5f81519050612c5a8161226b565b92915050565b5f60208284031215612c7557612c74612178565b5b5f612c8284828501612c4c565b91505092915050565b5f819050919050565b5f612cae612ca9612ca484612c8b565b61299b565b612262565b9050919050565b612cbe81612c94565b82525050565b5f608082019050612cd75f830187612b89565b612ce46020830186612210565b612cf16040830185612cb5565b8181036060830152612d038184612705565b905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d4582612262565b9150612d5083612262565b9250828202612d5e81612262565b91508282048414831517612d7557612d74612d0e565b5b5092915050565b5f612d8682612262565b9150612d9183612262565b9250828201905080821115612da957612da8612d0e565b5b92915050565b5f608082019050612dc25f830187612210565b612dcf6020830186612b89565b612ddc60408301856122e5565b612de960608301846125dc565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e2982612262565b9150612e3483612262565b925082612e4457612e43612df2565b5b828204905092915050565b612e588161234b565b82525050565b612e6781612384565b82525050565b5f82825260208201905092915050565b5f612e87826126c3565b612e918185612e6d565b9350612ea18185602086016126dd565b612eaa81612423565b840191505092915050565b5f60e083015f830151612eca5f860182612e4f565b506020830151612edd6020860182612e5e565b506040830151612ef06040860182612785565b506060830151612f036060860182612785565b5060808301518482036080860152612f1b8282612e7d565b91505060a083015184820360a0860152612f358282612e7d565b91505060c083015184820360c0860152612f4f8282612e7d565b9150508091505092915050565b5f6040820190508181035f830152612f748185612eb5565b9050612f8360208301846125dc565b9392505050565b5f80fd5b5f60408284031215612fa357612fa2612f8a565b5b612fad6040612491565b90505f612fbc84828501612c4c565b5f830152506020612fcf84828501612c4c565b60208301525092915050565b5f60408284031215612ff057612fef612178565b5b5f612ffd84828501612f8e565b91505092915050565b5f6060820190506130195f830186612210565b6130266020830185612210565b61303360408301846122e5565b949350505050565b5f6080820190508181035f8301526130538186612eb5565b90506130626020830185612794565b61306f6060830184612210565b949350505050565b5f815190506130858161238d565b92915050565b61309481612ba1565b811461309e575f80fd5b50565b5f815190506130af8161308b565b92915050565b5f608082840312156130ca576130c9612f8a565b5b6130d46060612491565b90505f6130e384828501613077565b5f8301525060206130f6848285016130a1565b602083015250604061310a84828501612f8e565b60408301525092915050565b5f6040828403121561312b5761312a612f8a565b5b6131356040612491565b90505f61314484828501612c4c565b5f83015250602061315784828501612c4c565b60208301525092915050565b5f8060c0838503121561317957613178612178565b5b5f613186858286016130b5565b925050608061319785828601613116565b9150509250929050565b5f6131ab82612262565b91506131b683612262565b92508282039050818111156131ce576131cd612d0e565b5b92915050565b5f6040820190506131e75f83018561275d565b6131f46020830184612b89565b9392505050565b5f819050919050565b5f61321e613219613214846131fb565b61299b565b612262565b9050919050565b61322e81613204565b82525050565b5f6040820190506132475f830185612210565b6132546020830184613225565b9392505050565b5f61ffff82169050919050565b5f8160f01b9050919050565b5f61327e82613268565b9050919050565b6132966132918261325b565b613274565b82525050565b5f6132a78284613285565b60028201915081905092915050565b6132bf8161325b565b82525050565b5f6020820190506132d85f8301846132b6565b92915050565b5f6132e8826126c3565b6132f28185612840565b93506133028185602086016126dd565b80840191505092915050565b5f61331982846132de565b915081905092915050565b5f82825260208201905092915050565b7f746f55696e7431365f6f75744f66426f756e64730000000000000000000000005f82015250565b5f613368601483613324565b915061337382613334565b602082019050919050565b5f6020820190508181035f8301526133958161335c565b9050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f8160801b9050919050565b5f6133cd826133b7565b9050919050565b6133e56133e08261339c565b6133c3565b82525050565b5f6133f68286613285565b60028201915061340682856133d4565b60108201915061341682846133d4565b601082019150819050949350505050565b5f6134328285613285565b60028201915061344282846133d4565b6010820191508190509392505050565b5f61345c8261325b565b91506134678361325b565b9250828201905061ffff81111561348157613480612d0e565b5b92915050565b5f60ff82169050919050565b5f8160f81b9050919050565b5f6134a982613493565b9050919050565b6134c16134bc82613487565b61349f565b82525050565b5f6134d282886132de565b91506134de82876134b0565b6001820191506134ee8286613285565b6002820191506134fe82856134b0565b60018201915061350e82846132de565b91508190509695505050505050565b5f819050919050565b5f61354061353b6135368461351d565b61299b565b613487565b9050919050565b61355081613526565b82525050565b5f6040820190506135695f830185613547565b61357660208301846122e5565b9392505050560000000000000000000000002a2019b30c157db6c1c01306b8025167dbe1803b0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000581b26f362ad383f7b51ef8a165efa13dde398a4000000000000000000000000be0d08a85eebfcc6eda0a843521f7cbb1180d2e20000000000000000000000003d861d36745dcaac7e2ec345317a19003246abc900000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000397f939c3b91a74c321ea7129396492ba9cdce82000000000000000000000000c6b2be25d65760b826d0c852fd35f364250619c20000000000000000000000000097cf8ee15800d4f80da8a6ce4df360d9449ed500000000000000000000000073382eb28f35d80df8c3fe04a3eed71b1afce5de000000000000000000000000879ba0efe1ab0119fefa745a21585fa205b0790700000000000000000000000093cdc5d29293cb6983f059fec6e4ffeb656b6a62