81 txs
136 calls
constructor
constructor(address _WETH)
functions
countInviteesOf
viewfunction countInviteesOf(address user) view returns (uint256 total)
customFeeBP
viewfunction customFeeBP(address) view returns (uint8)
defaultFeeBP
viewfunction defaultFeeBP() view returns (uint8)
feeTiers
viewfunction feeTiers(uint256) view returns (uint256 amount, uint8 discount)
getActualSwapAmount
viewfunction getActualSwapAmount(address sender, address token, uint256 amount) view returns (uint256 actualSwapAmount, uint256 feeAmount)
getFeeLadder
viewfunction getFeeLadder() view returns (tuple[])
getFeeLadderDiscount
viewfunction getFeeLadderDiscount(address account) view returns (uint256)
getInviteesOf
viewfunction getInviteesOf(address user, uint256 page, uint256 pageSize) view returns (address[] items, uint256 total)
getSwapFee
viewfunction getSwapFee(address account, address token) view returns (uint256 effectiveFeeBP, tuple[] ladder)
inviteesOf
viewfunction inviteesOf(address, uint256) view returns (address)
inviterOf
viewfunction inviterOf(address) view returns (address)
isFeeExemptToken
viewfunction isFeeExemptToken(address) view returns (bool)
owner
viewfunction owner() view returns (address)
slotsAddress
viewfunction slotsAddress() view returns (address)
swapAddress
viewfunction swapAddress() view returns (address)
SwaptorXToken
viewfunction SwaptorXToken() view returns (address)
walletAddress
viewfunction walletAddress() view returns (address)
WETH
viewfunction WETH() view returns (address)
inviterSwap
payablefunction inviterSwap(tuple desc, uint256 deadline, address inviter) payable returns (uint256 amountOut, uint256 gasUsed)
ownerWithdraw
nonpayablefunction ownerWithdraw(address token, uint256 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setCustomFeeToken
nonpayablefunction setCustomFeeToken(address token, uint8 fee)
setDefaultSwapFee
nonpayablefunction setDefaultSwapFee(uint8 fee)
setFeeLadder
nonpayablefunction setFeeLadder(tuple[] fees)
setFreeSwapToken
nonpayablefunction setFreeSwapToken(address token, bool isFree)
setSlotsAddress
nonpayablefunction setSlotsAddress(address slots)
setSwapAddress
nonpayablefunction setSwapAddress(address _address)
setWalletAddress
nonpayablefunction setWalletAddress(address _address)
swap
payablefunction swap(tuple desc, uint256 deadline) payable returns (uint256 amountOut, uint256 gasUsed)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DefaultFeeChanged
event DefaultFeeChanged(address indexed owner, uint8 fee)
FeeTokenChanged
event FeeTokenChanged(address indexed owner, address indexed token, uint8 fee)
FreeTokenChanged
event FreeTokenChanged(address indexed owner, address indexed token, bool free)
InviterBound
event InviterBound(address indexed user, address indexed inviter)
InviterFeeFailed
event InviterFeeFailed(address indexed user, address indexed inviter, address indexed token, uint256 amount)
InviterFeePaid
event InviterFeePaid(address indexed user, address indexed inviter, address indexed token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SwapAddressSet
event SwapAddressSet(address indexed owner, address indexed previousAddress, address indexed newAddress)
Swapped
event Swapped(address indexed sender, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut, address indexed recipient)
WalletAddressSet
event WalletAddressSet(address indexed owner, address indexed previousWallet, address indexed newWallet)
Withdraw
event Withdraw(address indexed sender, address indexed token, address indexed to, uint256 amount)
errors
No errors.
creation bytecode
0x60c060405273402df0f32d9a318040f23f7007806ab5e368dd6460015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60055f6101000a81548160ff021916908360ff1602179055506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152503480156100bf575f80fd5b50604051615aaa380380615aaa83398181016040528101906100e19190610226565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361018e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610185906102ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506102c9565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101f5826101cc565b9050919050565b610205816101eb565b811461020f575f80fd5b50565b5f81519050610220816101fc565b92915050565b5f6020828403121561023b5761023a6101c8565b5b5f61024884828501610212565b91505092915050565b5f82825260208201905092915050565b7f53776170746f72583a20574554482063616e6e6f74206265207a65726f0000005f82015250565b5f610295601d83610251565b91506102a082610261565b602082019050919050565b5f6020820190508181035f8301526102c281610289565b9050919050565b60805160a0516157a46103065f395f612f5e01525f818161192801528181612cb701528181612d370152818161316801526131a701526157a45ff3fe6080604052600436106101d0575f3560e01c8063849afa67116100f6578063ad5c464811610094578063dce9d9a311610063578063dce9d9a31461069e578063dd6d60af146106c6578063defb0d4814610702578063f2fde38b1461073f576101d7565b8063ad5c4648146105d4578063b7a85545146105fe578063c8ced3551461063a578063d9c88e1414610676576101d7565b80639b9c592f116100d05780639b9c592f1461050c5780639cd7b14914610548578063aad355ec14610570578063ac1a386a146105ac576101d7565b8063849afa671461048e5780638da5cb5b146104b85780639022aab2146104e2576101d7565b80634e3001471161016e578063715018a61161013d578063715018a6146103ea5780637dc4b9cc1461040057806380f6d7821461042857806381df36d414610452576101d7565b80634e3001471461033d57806354a432091461036e57806364487525146103985780636ad5b3ea146103c0576101d7565b80632de192dc116101aa5780632de192dc1461027157806342263bcb146102ae5780634413229f146102d65780634c54dc5214610300576101d7565b8063040f6a28146101db57806311b02d2014610203578063230ed44a14610234576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc91906139d3565b610767565b005b61021d60048036038101906102189190613aae565b6108a6565b60405161022b929190613b29565b60405180910390f35b34801561023f575f80fd5b5061025a60048036038101906102559190613b50565b610913565b604051610268929190613b8a565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190613bb1565b61094e565b6040516102a5929190613ce2565b60405180910390f35b3480156102b9575f80fd5b506102d460048036038101906102cf9190613d10565b610bbd565b005b3480156102e1575f80fd5b506102ea610c8e565b6040516102f79190613d3b565b60405180910390f35b34801561030b575f80fd5b5061032660048036038101906103219190613d54565b610ca0565b604051610334929190613e5b565b60405180910390f35b61035760048036038101906103529190613e89565b610edf565b604051610365929190613b29565b60405180910390f35b348015610379575f80fd5b50610382610f42565b60405161038f9190613ee3565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190613f64565b610fc3565b005b3480156103cb575f80fd5b506103d4611110565b6040516103e19190613fbe565b60405180910390f35b3480156103f5575f80fd5b506103fe611135565b005b34801561040b575f80fd5b5061042660048036038101906104219190613d10565b6111cd565b005b348015610433575f80fd5b5061043c6113fb565b6040516104499190613fbe565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190613d10565b611420565b6040516104859190613ff1565b60405180910390f35b348015610499575f80fd5b506104a261143d565b6040516104af9190613fbe565b60405180910390f35b3480156104c3575f80fd5b506104cc611462565b6040516104d99190613fbe565b60405180910390f35b3480156104ed575f80fd5b506104f6611485565b6040516105039190613fbe565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d919061400a565b6114ab565b60405161053f9190613fbe565b60405180910390f35b348015610553575f80fd5b5061056e60048036038101906105699190614072565b6114f3565b005b34801561057b575f80fd5b5061059660048036038101906105919190613d10565b61163d565b6040516105a391906140b0565b60405180910390f35b3480156105b7575f80fd5b506105d260048036038101906105cd9190613d10565b611751565b005b3480156105df575f80fd5b506105e8611926565b6040516105f59190613fbe565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190613d10565b61194a565b6040516106319190613d3b565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b9190613d10565b611967565b60405161066d9190613fbe565b60405180910390f35b348015610681575f80fd5b5061069c6004803603810190610697919061400a565b611997565b005b3480156106a9575f80fd5b506106c460048036038101906106bf91906140c9565b611c98565b005b3480156106d1575f80fd5b506106ec60048036038101906106e79190613d10565b611e2a565b6040516106f991906140b0565b60405180910390f35b34801561070d575f80fd5b5061072860048036038101906107239190614107565b611ef7565b604051610736929190613b29565b60405180910390f35b34801561074a575f80fd5b5061076560048036038101906107609190613d10565b611f39565b005b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb906141b1565b60405180910390fd5b8060ff166064101561083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290614219565b60405180910390fd5b8060055f6101000a81548160ff021916908360ff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f0392bea7ef37e4d641c8494ac5df247e23621bf044dfaf806939681ba4d6716b8260405161089b9190613d3b565b60405180910390a250565b5f8083428110156108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390614281565b60405180910390fd5b5f5a90506108f985612040565b610902876122df565b93505a810392505050935093915050565b60028181548110610922575f80fd5b905f5260205f2090600202015f91509050805f015490806001015f9054906101000a900460ff16905082565b5f60605f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156109a9575f9050610a67565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115610a515760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff169050610a66565b60055f9054906101000a900460ff1660ff1690505b5b5f8103610af6575f600280805480602002602001604051908101604052809291908181526020015f905b82821015610ae6578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610a91565b5050505090509250925050610bb6565b5f610b008661163d565b90505f811115610b31576064816064610b1991906142cc565b83610b2491906142ff565b610b2e919061436d565b91505b81600280805480602002602001604051908101604052809291908181526020015f905b82821015610ba9578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610b54565b5050505090509350935050505b9250929050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906141b1565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055f9054906101000a900460ff1681565b60605f808385610cb091906142ff565b90505f60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015610d6d57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d24575b505050505090508051925080518210610dd2575f67ffffffffffffffff811115610d9a57610d9961439d565b5b604051908082528060200260200182016040528015610dc85781602001602082028036833780820191505090505b5093505050610ed7565b5f8583610ddf91906143ca565b90508151811115610def57815190505b5f8382610dfc91906142cc565b90508067ffffffffffffffff811115610e1857610e1761439d565b5b604051908082528060200260200182016040528015610e465781602001602082028036833780820191505090505b5095505f5b81811015610ed157838186610e6091906143ca565b81518110610e7157610e706143fd565b5b6020026020010151878281518110610e8c57610e8b6143fd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050610e4b565b50505050505b935093915050565b5f808242811015610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90614281565b60405180910390fd5b5f5a9050610f32866122df565b93505a8103925050509250929050565b60606002805480602002602001604051908101604052809291908181526020015f905b82821015610fba578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610f65565b50505050905090565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611047906141b1565b60405180910390fd5b8181905060091015611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614474565b60405180910390fd5b60025f6110a4919061393b565b5f5b8282905081101561110b5760028383838181106110c6576110c56143fd565b5b905060400201908060018154018082558091505060019003905f5260205f2090600202015f9091909190915081816110fe9190614611565b50508060010190506110a6565b505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b9906141b1565b60405180910390fd5b6111cb5f6128ad565b565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611251906141b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061468f565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11611321576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611318906146f7565b60405180910390fd5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe56ffd1dcc40a4c88a9b03492a3d6f93418f6416851ca05115822708049359ea60405160405180910390a45050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6009602052815f5260405f2081815481106114c4575f80fd5b905f5260205f20015f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611577906141b1565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5aa4741595783fbabd32f180df08362734a0830e60dafbd28d3446a31203dfd2836040516116319190613ff1565b60405180910390a35050565b5f8060028054905003611652575f905061174c565b5f61167e60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461296e565b90505f8103611690575f91505061174c565b5f805b60028054905081101561174557600281815481106116b4576116b36143fd565b5b905f5260205f2090600202015f0154831061173a5781600282815481106116de576116dd6143fd565b5b905f5260205f2090600202016001015f9054906101000a900460ff1660ff1611156117395760028181548110611717576117166143fd565b5b905f5260205f2090600202016001015f9054906101000a900460ff1660ff1691505b5b806001019050611693565b5080925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d5906141b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390614785565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6972f6774c8c58489b0d6ddf22bb06502764dce4feb3d825b3bc78771b3aba3b60405160405180910390a45050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6004602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900460ff16156119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd906147ed565b60405180910390fd5b6001600a5f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690614855565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611b34575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a906148bd565b60405180910390fd5b611b7c82612a6a565b15611bb157611bac60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612ab5565b611bde565b611bdd8260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612b62565b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051611c7391906140b0565b60405180910390a45f600a5f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c906141b1565b60405180910390fd5b8060ff1660641015611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390614925565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f180bb0038fa9138b235773bd62aee0a35fcfcb252dadf015cccdf70192a63f9083604051611e1e9190613d3b565b60405180910390a35050565b5f8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015611ee657602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e9d575b505050505090508051915050919050565b5f805f611f04868661094e565b5090506127108185611f1691906142ff565b611f20919061436d565b91508184611f2e91906142cc565b925050935093915050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd906141b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b906149b3565b60405180910390fd5b61203d816128ad565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603156122dc573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603156122dc573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603156122dc575f73ffffffffffffffffffffffffffffffffffffffff1660085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122dc578060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2033908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fad19acbfe329ed02112851f095801de1e5474be0e6fcb5810aaf795fb120249f60405160405180910390a35b50565b5f600a5f9054906101000a900460ff161561232f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612326906147ed565b60405180910390fd5b6001600a5f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16825f0160208101906123729190613d10565b73ffffffffffffffffffffffffffffffffffffffff16036123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614a1b565b60405180910390fd5b8160200160208101906123db9190613d10565b73ffffffffffffffffffffffffffffffffffffffff16825f0160208101906124039190613d10565b73ffffffffffffffffffffffffffffffffffffffff1603612459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245090614aa9565b60405180910390fd5b5f82606001351161249f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249690614b37565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168260800160208101906124c99190613d10565b73ffffffffffffffffffffffffffffffffffffffff160361251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690614bc5565b60405180910390fd5b5f61253a835f0160208101906125359190613d10565b612a6a565b156125db575f3411612581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257890614c53565b60405180910390fd5b826040013534146125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90614ce1565b60405180910390fd5b3490506125d48382612c92565b91506126cc565b5f341461261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490614d6f565b60405180910390fd5b5f838060c0019061262e9190614d99565b90500361265b57612654835f01602081019061264a9190613d10565b8460400135612dbc565b905061268d565b61268a835f0160208101906126709190613d10565b8460400135858060c001906126859190614d99565b612e46565b90505b6126a88360200160208101906126a39190613d10565b612a6a565b156126be576126b78382613101565b91506126cb565b6126c883826132eb565b91505b5b8260e00160208101906126df9190614dfb565b801561273957505f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156127ee57600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b5427bb533855f01602081019061278f9190613d10565b848760200160208101906127a39190613d10565b876040518663ffffffff1660e01b81526004016127c4959493929190614e26565b5f604051808303815f87803b1580156127db575f80fd5b505af19250505080156127ec575060015b505b8260800160208101906128019190613d10565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f1eeaa4acf3c225a4033105c2647625dbb298dec93b14e16253c4231e26c02b1d855f0160208101906128619190613d10565b8660200160208101906128749190613d10565b85876040516128869493929190614e77565b60405180910390a3505f600a5f6101000a81548160ff021916908315150217905550919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff166370a082318560405160240161299e9190613fbe565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516129ec9190614f0c565b5f60405180830381855afa9150503d805f8114612a24576040519150601f19603f3d011682016040523d82523d5f602084013e612a29565b606091505b5091509150811580612a3c575060208151105b15612a4b575f92505050612a64565b80806020019051810190612a5f9190614f36565b925050505b92915050565b5f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612ada90614f84565b5f6040518083038185875af1925050503d805f8114612b14576040519150601f19603f3d011682016040523d82523d5f602084013e612b19565b606091505b5050905080612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5490614fe2565b60405180910390fd5b505050565b5f808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612b93929190615000565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612be19190614f0c565b5f604051808303815f865af19150503d805f8114612c1a576040519150601f19603f3d011682016040523d82523d5f602084013e612c1f565b606091505b5091509150818015612c4c57505f81511480612c4b575080806020019051810190612c4a919061503b565b5b5b612c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c82906150b0565b60405180910390fd5b5050505050565b5f805f612cb133865f016020810190612cab9190613d10565b86611ef7565b915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015612d1b575f80fd5b505af1158015612d2d573d5f803e3d5ffd5b5050505050612d977f0000000000000000000000000000000000000000000000000000000000000000866020016020810190612d699190613d10565b848860600135898060a00190612d7f9190614d99565b8b6080016020810190612d929190613d10565b613389565b9250612db4855f016020810190612dae9190613d10565b826134ca565b505092915050565b5f80612dc8843061296e565b9050612dd684333086613808565b5f612de1853061296e565b90505f8282612df091906142cc565b11612e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e279061513e565b60405180910390fd5b8181612e3c91906142cc565b9250505092915050565b5f805f8484810190612e589190615267565b9150915060018103612f46575f8773ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b84604051602001612e9692919061530c565b604051602081830303815290604052604051612eb29190614f0c565b5f604051808303815f865af19150503d805f8114612eeb576040519150601f19603f3d011682016040523d82523d5f602084013e612ef0565b606091505b5050905080612f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2b9061537d565b60405180910390fd5b612f3e8888612dbc565b9350506130f7565b600281036130bb575f612f59883061296e565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330f28b7a60e01b85604051602001612fad92919061530c565b604051602081830303815290604052604051612fc99190614f0c565b5f604051808303815f865af19150503d805f8114613002576040519150601f19603f3d011682016040523d82523d5f602084013e613007565b606091505b505090508061304b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613042906153e5565b60405180910390fd5b5f6130568a3061296e565b90505f838261306591906142cc565b116130a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309c90615473565b60405180910390fd5b82816130b191906142cc565b95505050506130f6565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed90615501565b60405180910390fd5b5b5050949350505050565b5f805f61312033865f01602081019061311a9190613d10565b86611ef7565b915091505f8560800160208101906131389190613d10565b73ffffffffffffffffffffffffffffffffffffffff163190506131a3865f0160208101906131669190613d10565b7f00000000000000000000000000000000000000000000000000000000000000008589606001358a8060a0019061319d9190614d99565b30613389565b93507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b81526004016131fe91906140b0565b5f604051808303815f87803b158015613215575f80fd5b505af1158015613227573d5f803e3d5ffd5b505050506132478660800160208101906132419190613d10565b85612ab5565b5f86608001602081019061325b9190613d10565b73ffffffffffffffffffffffffffffffffffffffff1631905086606001358261328491906143ca565b8110156132c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bd9061558f565b60405180910390fd5b6132e1875f0160208101906132db9190613d10565b846134ca565b5050505092915050565b5f805f61330a33865f0160208101906133049190613d10565b86611ef7565b91509150613364855f0160208101906133239190613d10565b8660200160208101906133369190613d10565b848860600135898060a0019061334c9190614d99565b8b608001602081019061335f9190613d10565b613389565b9250613381855f01602081019061337b9190613d10565b826134ca565b505092915050565b5f6133b68860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688612b62565b5f6133c1888461296e565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d8d339e8a88888888336040518763ffffffff1660e01b8152600401613427969594939291906155e9565b5f604051808303815f87803b15801561343e575f80fd5b505af1158015613450573d5f803e3d5ffd5b505050505f61345f898561296e565b9050868261346d91906143ca565b8110156134af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a6906156b3565b60405180910390fd5b81816134bb91906142cc565b92505050979650505050505050565b6003811115613804575f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613802575f6064601e8461357691906142ff565b613580919061436d565b90505f61358c85612a6a565b15613604578273ffffffffffffffffffffffffffffffffffffffff1682617530906040516135b990614f84565b5f60405180830381858888f193505050503d805f81146135f4576040519150601f19603f3d011682016040523d82523d5f602084013e6135f9565b606091505b5050809150506136fb565b5f808673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8686604051602401613635929190615000565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516136839190614f0c565b5f604051808303815f865af19150503d805f81146136bc576040519150601f19603f3d011682016040523d82523d5f602084013e6136c1565b606091505b50915091508180156136ee57505f815114806136ed5750808060200190518101906136ec919061503b565b5b5b156136f857600192505b50505b8015613782578473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2f53f4bc51eacf2a763977cdcd71796df85a447da196668cb3b2d34dbe1090f18560405161377591906140b0565b60405180910390a46137ff565b8473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb9c939330099311c6ddc823739cb6c67865d871f77ebba134c841e39c7dce72a856040516137f691906140b0565b60405180910390a45b50505b505b5050565b5f808573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161383b939291906156d1565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516138899190614f0c565b5f604051808303815f865af19150503d805f81146138c2576040519150601f19603f3d011682016040523d82523d5f602084013e6138c7565b606091505b50915091508180156138f457505f815114806138f35750808060200190518101906138f2919061503b565b5b5b613933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392a90615750565b60405180910390fd5b505050505050565b5080545f8255600202905f5260205f2090810190613959919061395c565b50565b5b80821115613988575f8082015f9055600182015f6101000a81549060ff02191690555060020161395d565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f60ff82169050919050565b6139b28161399d565b81146139bc575f80fd5b50565b5f813590506139cd816139a9565b92915050565b5f602082840312156139e8576139e7613995565b5b5f6139f5848285016139bf565b91505092915050565b5f80fd5b5f6101008284031215613a1857613a176139fe565b5b81905092915050565b5f819050919050565b613a3381613a21565b8114613a3d575f80fd5b50565b5f81359050613a4e81613a2a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a7d82613a54565b9050919050565b613a8d81613a73565b8114613a97575f80fd5b50565b5f81359050613aa881613a84565b92915050565b5f805f60608486031215613ac557613ac4613995565b5b5f84013567ffffffffffffffff811115613ae257613ae1613999565b5b613aee86828701613a02565b9350506020613aff86828701613a40565b9250506040613b1086828701613a9a565b9150509250925092565b613b2381613a21565b82525050565b5f604082019050613b3c5f830185613b1a565b613b496020830184613b1a565b9392505050565b5f60208284031215613b6557613b64613995565b5b5f613b7284828501613a40565b91505092915050565b613b848161399d565b82525050565b5f604082019050613b9d5f830185613b1a565b613baa6020830184613b7b565b9392505050565b5f8060408385031215613bc757613bc6613995565b5b5f613bd485828601613a9a565b9250506020613be585828601613a9a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2181613a21565b82525050565b613c308161399d565b82525050565b604082015f820151613c4a5f850182613c18565b506020820151613c5d6020850182613c27565b50505050565b5f613c6e8383613c36565b60408301905092915050565b5f602082019050919050565b5f613c9082613bef565b613c9a8185613bf9565b9350613ca583613c09565b805f5b83811015613cd5578151613cbc8882613c63565b9750613cc783613c7a565b925050600181019050613ca8565b5085935050505092915050565b5f604082019050613cf55f830185613b1a565b8181036020830152613d078184613c86565b90509392505050565b5f60208284031215613d2557613d24613995565b5b5f613d3284828501613a9a565b91505092915050565b5f602082019050613d4e5f830184613b7b565b92915050565b5f805f60608486031215613d6b57613d6a613995565b5b5f613d7886828701613a9a565b9350506020613d8986828701613a40565b9250506040613d9a86828701613a40565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dd681613a73565b82525050565b5f613de78383613dcd565b60208301905092915050565b5f602082019050919050565b5f613e0982613da4565b613e138185613dae565b9350613e1e83613dbe565b805f5b83811015613e4e578151613e358882613ddc565b9750613e4083613df3565b925050600181019050613e21565b5085935050505092915050565b5f6040820190508181035f830152613e738185613dff565b9050613e826020830184613b1a565b9392505050565b5f8060408385031215613e9f57613e9e613995565b5b5f83013567ffffffffffffffff811115613ebc57613ebb613999565b5b613ec885828601613a02565b9250506020613ed985828601613a40565b9150509250929050565b5f6020820190508181035f830152613efb8184613c86565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613f2457613f23613f03565b5b8235905067ffffffffffffffff811115613f4157613f40613f07565b5b602083019150836040820283011115613f5d57613f5c613f0b565b5b9250929050565b5f8060208385031215613f7a57613f79613995565b5b5f83013567ffffffffffffffff811115613f9757613f96613999565b5b613fa385828601613f0f565b92509250509250929050565b613fb881613a73565b82525050565b5f602082019050613fd15f830184613faf565b92915050565b5f8115159050919050565b613feb81613fd7565b82525050565b5f6020820190506140045f830184613fe2565b92915050565b5f80604083850312156140205761401f613995565b5b5f61402d85828601613a9a565b925050602061403e85828601613a40565b9150509250929050565b61405181613fd7565b811461405b575f80fd5b50565b5f8135905061406c81614048565b92915050565b5f806040838503121561408857614087613995565b5b5f61409585828601613a9a565b92505060206140a68582860161405e565b9150509250929050565b5f6020820190506140c35f830184613b1a565b92915050565b5f80604083850312156140df576140de613995565b5b5f6140ec85828601613a9a565b92505060206140fd858286016139bf565b9150509250929050565b5f805f6060848603121561411e5761411d613995565b5b5f61412b86828701613a9a565b935050602061413c86828701613a9a565b925050604061414d86828701613a40565b9150509250925092565b5f82825260208201905092915050565b7f53776170746f72583a2063616c6c6572206973206e6f74206f776e65720000005f82015250565b5f61419b601d83614157565b91506141a682614167565b602082019050919050565b5f6020820190508181035f8301526141c88161418f565b9050919050565b7f53776170746f72583a20696e76616c69642064656661756c74206665650000005f82015250565b5f614203601d83614157565b915061420e826141cf565b602082019050919050565b5f6020820190508181035f830152614230816141f7565b9050919050565b7f53776170746f72583a20646561646c696e6520657870697265640000000000005f82015250565b5f61426b601a83614157565b915061427682614237565b602082019050919050565b5f6020820190508181035f8301526142988161425f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6142d682613a21565b91506142e183613a21565b92508282039050818111156142f9576142f861429f565b5b92915050565b5f61430982613a21565b915061431483613a21565b925082820261432281613a21565b915082820484148315176143395761433861429f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61437782613a21565b915061438283613a21565b92508261439257614391614340565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f6143d482613a21565b91506143df83613a21565b92508282019050808211156143f7576143f661429f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f53776170746f72583a546f6f206d616e790000000000000000000000000000005f82015250565b5f61445e601183614157565b91506144698261442a565b602082019050919050565b5f6020820190508181035f83015261448b81614452565b9050919050565b5f813561449e81613a2a565b80915050919050565b5f815f1b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6144dd846144a7565b9350801983169250808416831791505092915050565b5f819050919050565b5f61451661451161450c84613a21565b6144f3565b613a21565b9050919050565b5f819050919050565b61452f826144fc565b61454261453b8261451d565b83546144b2565b8255505050565b5f8135614555816139a9565b80915050919050565b5f60ff61456a846144a7565b9350801983169250808416831791505092915050565b5f61459a6145956145908461399d565b6144f3565b61399d565b9050919050565b5f819050919050565b6145b382614580565b6145c66145bf826145a1565b835461455e565b8255505050565b5f81015f8301806145dd81614492565b90506145e98184614526565b5050506001810160208301806145fe81614549565b905061460a81846145aa565b5050505050565b61461b82826145cd565b5050565b7f53776170746f72583a207377617020616464726573732063616e6e6f742062655f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614679602583614157565b91506146848261461f565b604082019050919050565b5f6020820190508181035f8301526146a68161466d565b9050919050565b7f53776170746f72583a2073776170206164647265737320696e76616c696400005f82015250565b5f6146e1601e83614157565b91506146ec826146ad565b602082019050919050565b5f6020820190508181035f83015261470e816146d5565b9050919050565b7f53776170746f72583a2077616c6c657420616464726573732063616e6e6f74205f8201527f6265207a65726f00000000000000000000000000000000000000000000000000602082015250565b5f61476f602783614157565b915061477a82614715565b604082019050919050565b5f6020820190508181035f83015261479c81614763565b9050919050565b7f53776170746f72583a207265656e7472616e63790000000000000000000000005f82015250565b5f6147d7601483614157565b91506147e2826147a3565b602082019050919050565b5f6020820190508181035f830152614804816147cb565b9050919050565b7f53776170746f72583a2077616c6c6574206e6f7420636f6e66696775726564005f82015250565b5f61483f601f83614157565b915061484a8261480b565b602082019050919050565b5f6020820190508181035f83015261486c81614833565b9050919050565b7f53776170746f72583a206e6f74206f776e6572000000000000000000000000005f82015250565b5f6148a7601383614157565b91506148b282614873565b602082019050919050565b5f6020820190508181035f8301526148d48161489b565b9050919050565b7f53776170746f72583a20696e76616c6964206665652076616c756500000000005f82015250565b5f61490f601b83614157565b915061491a826148db565b602082019050919050565b5f6020820190508181035f83015261493c81614903565b9050919050565b7f53776170746f72583a206e6577206f776e65722063616e6e6f74206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f61499d602283614157565b91506149a882614943565b604082019050919050565b5f6020820190508181035f8301526149ca81614991565b9050919050565b7f53776170746f72583a20696e76616c696420746f6b656e496e000000000000005f82015250565b5f614a05601983614157565b9150614a10826149d1565b602082019050919050565b5f6020820190508181035f830152614a32816149f9565b9050919050565b7f53776170746f72583a20746f6b656e496e20657175616c7320746f6b656e4f755f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a93602183614157565b9150614a9e82614a39565b604082019050919050565b5f6020820190508181035f830152614ac081614a87565b9050919050565b7f53776170746f72583a20616d6f756e744d696e4f7574206d757374206265203e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b21602283614157565b9150614b2c82614ac7565b604082019050919050565b5f6020820190508181035f830152614b4e81614b15565b9050919050565b7f53776170746f72583a20726563697069656e742063616e6e6f74206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f614baf602283614157565b9150614bba82614b55565b604082019050919050565b5f6020820190508181035f830152614bdc81614ba3565b9050919050565b7f53776170746f72583a206d73672e76616c7565206d757374206265203e2030205f8201527f666f722045544820696e70757400000000000000000000000000000000000000602082015250565b5f614c3d602d83614157565b9150614c4882614be3565b604082019050919050565b5f6020820190508181035f830152614c6a81614c31565b9050919050565b7f53776170746f72583a206d73672e76616c7565206d69736d61746368207769745f8201527f6820616d6f756e74496e00000000000000000000000000000000000000000000602082015250565b5f614ccb602a83614157565b9150614cd682614c71565b604082019050919050565b5f6020820190508181035f830152614cf881614cbf565b9050919050565b7f53776170746f72583a206e6f2045544820616c6c6f77656420666f72204552435f8201527f323020696e707574000000000000000000000000000000000000000000000000602082015250565b5f614d59602883614157565b9150614d6482614cff565b604082019050919050565b5f6020820190508181035f830152614d8681614d4d565b9050919050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112614db557614db4614d8d565b5b80840192508235915067ffffffffffffffff821115614dd757614dd6614d91565b5b602083019250600182023603831315614df357614df2614d95565b5b509250929050565b5f60208284031215614e1057614e0f613995565b5b5f614e1d8482850161405e565b91505092915050565b5f60a082019050614e395f830188613faf565b614e466020830187613faf565b614e536040830186613b1a565b614e606060830185613faf565b614e6d6080830184613b1a565b9695505050505050565b5f608082019050614e8a5f830187613faf565b614e976020830186613faf565b614ea46040830185613b1a565b614eb16060830184613b1a565b95945050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f614ee682614eba565b614ef08185614ec4565b9350614f00818560208601614ece565b80840191505092915050565b5f614f178284614edc565b915081905092915050565b5f81519050614f3081613a2a565b92915050565b5f60208284031215614f4b57614f4a613995565b5b5f614f5884828501614f22565b91505092915050565b50565b5f614f6f5f83614ec4565b9150614f7a82614f61565b5f82019050919050565b5f614f8e82614f64565b9150819050919050565b7f53776170746f72583a20455448207472616e73666572206661696c65640000005f82015250565b5f614fcc601d83614157565b9150614fd782614f98565b602082019050919050565b5f6020820190508181035f830152614ff981614fc0565b9050919050565b5f6040820190506150135f830185613faf565b6150206020830184613b1a565b9392505050565b5f8151905061503581614048565b92915050565b5f602082840312156150505761504f613995565b5b5f61505d84828501615027565b91505092915050565b7f53776170746f72583a53540000000000000000000000000000000000000000005f82015250565b5f61509a600b83614157565b91506150a582615066565b602082019050919050565b5f6020820190508181035f8301526150c78161508e565b9050919050565b7f53776170746f72583a20696e76616c6964207472616e7366657220616d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f615128602183614157565b9150615133826150ce565b604082019050919050565b5f6020820190508181035f8301526151558161511c565b9050919050565b5f80fd5b5f601f19601f8301169050919050565b61517982615160565b810181811067ffffffffffffffff821117156151985761519761439d565b5b80604052505050565b5f6151aa61398c565b90506151b68282615170565b919050565b5f67ffffffffffffffff8211156151d5576151d461439d565b5b6151de82615160565b9050602081019050919050565b828183375f83830152505050565b5f61520b615206846151bb565b6151a1565b9050828152602081018484840111156152275761522661515c565b5b6152328482856151eb565b509392505050565b5f82601f83011261524e5761524d613f03565b5b813561525e8482602086016151f9565b91505092915050565b5f806040838503121561527d5761527c613995565b5b5f83013567ffffffffffffffff81111561529a57615299613999565b5b6152a68582860161523a565b92505060206152b785828601613a40565b9150509250929050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b615306615301826152c1565b6152ec565b82525050565b5f61531782856152f5565b6004820191506153278284614edc565b91508190509392505050565b7f53776170746f72583a207065726d6974206661696c65640000000000000000005f82015250565b5f615367601783614157565b915061537282615333565b602082019050919050565b5f6020820190508181035f8301526153948161535b565b9050919050565b7f53776170746f72583a207065726d6974322063616c6c206661696c65640000005f82015250565b5f6153cf601d83614157565b91506153da8261539b565b602082019050919050565b5f6020820190508181035f8301526153fc816153c3565b9050919050565b7f53776170746f72583a207065726d69743220646964206e6f7420696e637265615f8201527f73652062616c616e636500000000000000000000000000000000000000000000602082015250565b5f61545d602a83614157565b915061546882615403565b604082019050919050565b5f6020820190508181035f83015261548a81615451565b9050919050565b7f53776170746f72583a20756e737570706f72746564207065726d6974207665725f8201527f73696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f6154eb602483614157565b91506154f682615491565b604082019050919050565b5f6020820190508181035f830152615518816154df565b9050919050565b7f53776170746f72583a20696e73756666696369656e7420455448206f757470755f8201527f7420726563656976656400000000000000000000000000000000000000000000602082015250565b5f615579602a83614157565b91506155848261551f565b604082019050919050565b5f6020820190508181035f8301526155a68161556d565b9050919050565b5f82825260208201905092915050565b5f6155c883856155ad565b93506155d58385846151eb565b6155de83615160565b840190509392505050565b5f60a0820190506155fc5f830189613faf565b6156096020830188613b1a565b818103604083015261561c8186886155bd565b905061562b6060830185613faf565b6156386080830184613faf565b979650505050505050565b7f53776170746f72583a20696e73756666696369656e74206f75747075742072655f8201527f6365697665640000000000000000000000000000000000000000000000000000602082015250565b5f61569d602683614157565b91506156a882615643565b604082019050919050565b5f6020820190508181035f8301526156ca81615691565b9050919050565b5f6060820190506156e45f830186613faf565b6156f16020830185613faf565b6156fe6040830184613b1a565b949350505050565b7f53776170746f72583a53544600000000000000000000000000000000000000005f82015250565b5f61573a600c83614157565b915061574582615706565b602082019050919050565b5f6020820190508181035f8301526157678161572e565b905091905056fea264697066735822122058805c2354e3445c8fe9c5c08af1318aa8f5b8cb73f7417231c2807fb4ef239264736f6c634300081a00330000000000000000000000004200000000000000000000000000000000000006