0 txs
2 calls
constructor
constructor()
functions
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
create
nonpayablefunction create(string name_, string symbol_, address plasmaVault_, address wrappedPlasmaVaultOwner_, address managementFeeAccount_, uint256 managementFeePercentage_, address performanceFeeAccount_, uint256 performanceFeePercentage_) returns (address wrappedPlasmaVault)
initialize
nonpayablefunction initialize(address initialFactoryAdmin_)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
WrappedPlasmaVaultCreated
event WrappedPlasmaVaultCreated(string name, string symbol, address plasmaVault, address wrappedPlasmaVaultOwner, address wrappedPlasmaVault, address managementFeeAccount, uint256 managementFeePercentage, address performanceFeeAccount, uint256 performanceFeePercentage)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress()
InvalidFeePercentage
error InvalidFeePercentage()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161544c6100f95f395f8181610848015281816108710152610a92015261544c5ff3fe6080604052600436106100ad575f3560e01c80638da5cb5b11610066578063c4d66de81161004c578063c4d66de8146101c2578063e30c3978146101e1578063f2fde38b146101f5575f80fd5b80638da5cb5b14610159578063ad3cb1cc1461016d575f80fd5b806352d1902d1161009657806352d1902d1461010f578063715018a61461013157806379ba509714610145575f80fd5b806305b2bb5a146100b15780634f1ef286146100fa575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046110cd565b610214565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010d610108366004611187565b610455565b005b34801561011a575f80fd5b50610123610474565b6040519081526020016100f1565b34801561013c575f80fd5b5061010d6104a2565b348015610150575f80fd5b5061010d6104b5565b348015610164575f80fd5b506100d0610535565b348015610178575f80fd5b506101b56040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100f19190611231565b3480156101cd575f80fd5b5061010d6101dc366004611243565b610576565b3480156101ec575f80fd5b506100d0610751565b348015610200575f80fd5b5061010d61020f366004611243565b610779565b5f73ffffffffffffffffffffffffffffffffffffffff8716610262576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff86166102af576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85166102fc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610349576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710841115610385576040517f721dbfea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108211156103c1576040517f721dbfea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b88888888888888886040516103d590610fb8565b6103e698979695949392919061125c565b604051809103905ff0801580156103ff573d5f803e3d5ffd5b5090507fe74db4d0f194c66f6c0ab24082f60727846653d429736c6e7bfab00fc2d5ad4e89898989858a8a8a8a604051610441999897969594939291906112ce565b60405180910390a198975050505050505050565b61045d610830565b61046682610934565b610470828261093c565b5050565b5f61047d610a7a565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6104aa610ae9565b6104b35f610b41565b565b33806104bf610751565b73ffffffffffffffffffffffffffffffffffffffff1614610529576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b61053281610b41565b50565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f811580156105c05750825b90505f8267ffffffffffffffff1660011480156105dc5750303b155b9050811580156105ea575080155b15610621576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156106825784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166106cf576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d886610b91565b6106e0610ba2565b6106e8610ba2565b83156107495784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610559565b610781610ae9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556107ea610535565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806108fd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108e47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b156104b3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610532610ae9565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109c1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109be91810190611349565b60015b610a0f576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610520565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610a6b576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610520565b610a758383610baa565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104b3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610af2610535565b73ffffffffffffffffffffffffffffffffffffffff16146104b3576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610520565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815561047082610c0c565b610b99610ca1565b61053281610d08565b6104b3610ca1565b610bb382610d5f565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610c0457610a758282610e2d565b610470610eac565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166104b3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d10610ca1565b73ffffffffffffffffffffffffffffffffffffffff8116610529576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610520565b8073ffffffffffffffffffffffffffffffffffffffff163b5f03610dc7576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610520565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff1684604051610e569190611360565b5f60405180830381855af49150503d805f8114610e8e576040519150601f19603f3d011682016040523d82523d5f602084013e610e93565b606091505b5091509150610ea3858383610ee4565b95945050505050565b34156104b3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082610ef957610ef482610f76565b610f6f565b8151158015610f1d575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610f6c576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610520565b50805b9392505050565b805115610f865780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6140a08061137783390190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8067ffffffffffffffff84111561100c5761100c610fc5565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561105957611059610fc5565b604052838152905080828401851015611070575f80fd5b838360208301375f60208583010152509392505050565b5f82601f830112611096575f80fd5b610f6f83833560208501610ff2565b803573ffffffffffffffffffffffffffffffffffffffff811681146110c8575f80fd5b919050565b5f805f805f805f80610100898b0312156110e5575f80fd5b883567ffffffffffffffff8111156110fb575f80fd5b6111078b828c01611087565b985050602089013567ffffffffffffffff811115611123575f80fd5b61112f8b828c01611087565b97505061113e60408a016110a5565b955061114c60608a016110a5565b945061115a60808a016110a5565b935060a0890135925061116f60c08a016110a5565b979a969950949793969295919450919260e001359150565b5f8060408385031215611198575f80fd5b6111a1836110a5565b9150602083013567ffffffffffffffff8111156111bc575f80fd5b8301601f810185136111cc575f80fd5b6111db85823560208401610ff2565b9150509250929050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610f6f60208301846111e5565b5f60208284031215611253575f80fd5b610f6f826110a5565b61010081525f61127061010083018b6111e5565b8281036020840152611282818b6111e5565b73ffffffffffffffffffffffffffffffffffffffff998a16604085015297891660608401525050938616608085015260a084019290925290931660c082015260e0019190915292915050565b61012081525f6112e261012083018c6111e5565b82810360208401526112f4818c6111e5565b73ffffffffffffffffffffffffffffffffffffffff9a8b166040850152988a1660608401525050948716608086015292861660a085015260c084019190915290931660e0820152610100019190915292915050565b5f60208284031215611359575f80fd5b5051919050565b5f82518060208501845e5f92019182525091905056fe60c060405234801561000f575f80fd5b506040516140a03803806140a083398101604081905261002e91610867565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6001600160a01b038b1661011357604051636e25104560e11b815260040160405180910390fd5b6001600160a01b038a1661013a576040516342cad95760e01b815260040160405180910390fd5b5f8b6001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019b9190610922565b90506001600160a01b0381166101c45760405163c7ab31fb60e01b815260040160405180910390fd5b6101cd81610269565b6101d78e8e61027d565b6101e08b610293565b6101ea8a8a6102a4565b6101f4888861039d565b6001600160a01b038c1660805261020d6002600a610a3b565b60a05250831561025757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050610bb4565b610271610488565b61027a816104d8565b50565b610285610488565b61028f828261055b565b5050565b61029b610488565b61027a816105c4565b6001600160a01b0382166102cb57604051630d23cf4160e11b815260040160405180910390fd5b6101f48111156102f6576040516324f8f43160e11b8152600481018290526024015b60405180910390fd5b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0080546001600160a01b0319166001600160a01b038416178155610339826105fe565b815461ffff91909116600160a01b0261ffff60a01b19909116178155604080516001600160a01b0385168152602081018490527f72a8ee4b89f4194ad7e618624c280d66eb07d10b8cd84ab0376c16534413aa4091015b60405180910390a1505050565b6001600160a01b0382166103c457604051630d23cf4160e11b815260040160405180910390fd5b6113888111156103ea57604051630a7e67f960e21b8152600481018290526024016102ed565b7f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e0528840080546001600160a01b0319166001600160a01b03841617815561042d826105fe565b815461ffff91909116600160a01b0261ffff60a01b19909116178155604080516001600160a01b0385168152602081018490527fb51da3e1921b4e807ca7fadcf4582ef9ebbabde509ec7cecd222ca1fd4375df59101610390565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166104d657604051631afcd79f60e31b815260040160405180910390fd5b565b6104e0610488565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f8061050c84610630565b915091508161051c57601261051e565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b610563610488565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036105af8482610acd565b50600481016105be8382610acd565b50505050565b6105cc610488565b6001600160a01b0381166105f557604051631e4fbdf760e01b81525f60048201526024016102ed565b61027a81610706565b5f61ffff82111561062c576040516306dfcc6560e41b815260106004820152602481018390526044016102ed565b5090565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161067691610b87565b5f60405180830381855afa9150503d805f81146106ae576040519150601f19603f3d011682016040523d82523d5f602084013e6106b3565b606091505b50915091508180156106c757506020815110155b156106fa575f818060200190518101906106e19190610b9d565b905060ff81116106f8576001969095509350505050565b505b505f9485945092505050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155905061028f825f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126107d2575f80fd5b81516001600160401b038111156107eb576107eb6107af565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610819576108196107af565b604052818152838201602001851015610830575f80fd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b0381168114610862575f80fd5b919050565b5f805f805f805f80610100898b03121561087f575f80fd5b88516001600160401b03811115610894575f80fd5b6108a08b828c016107c3565b60208b015190995090506001600160401b038111156108bd575f80fd5b6108c98b828c016107c3565b9750506108d860408a0161084c565b95506108e660608a0161084c565b94506108f460808a0161084c565b60a08a0151909450925061090a60c08a0161084c565b60e09990990151979a96995094979396929591945050565b5f60208284031215610932575f80fd5b61093b8261084c565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156109915780850481111561097557610975610942565b600184161561098357908102905b60019390931c92800261095a565b935093915050565b5f826109a757506001610a35565b816109b357505f610a35565b81600181146109c957600281146109d3576109ef565b6001915050610a35565b60ff8411156109e4576109e4610942565b50506001821b610a35565b5060208310610133831016604e8410600b8410161715610a12575081810a610a35565b610a1e5f198484610956565b805f1904821115610a3157610a31610942565b0290505b92915050565b5f61093b60ff841683610999565b600181811c90821680610a5d57607f821691505b602082108103610a7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610ac857805f5260205f20601f840160051c81016020851015610aa65750805b601f840160051c820191505b81811015610ac5575f8155600101610ab2565b50505b505050565b81516001600160401b03811115610ae657610ae66107af565b610afa81610af48454610a49565b84610a81565b6020601f821160018114610b2c575f8315610b155750848201515b5f19600385901b1c1916600184901b178455610ac5565b5f84815260208120601f198516915b82811015610b5b5787850151825560209485019460019092019101610b3b565b5084821015610b7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b5f60208284031215610bad575f80fd5b5051919050565b60805160a05161345b610c455f395f81816119410152818161197c01528181611bb001528181611dc1015281816122b7015281816122f401528181612e170152612e5a01525f8181610665015281816106e1015281816108f401528181610bdf01528181610c5901528181610fea01528181611047015281816112c40152818161151c015261265b015261345b5ff3fe608060405234801561000f575f80fd5b50600436106102b7575f3560e01c80637d86646d11610171578063ba087652116100d2578063dd62ed3e11610088578063ead66a071161006e578063ead66a0714610660578063ef8b30f7146104e1578063f2fde38b14610687575f80fd5b8063dd62ed3e146105f4578063e30c397814610658575f80fd5b8063c6e6f592116100b8578063c6e6f592146105bb578063ce96cb77146105ce578063d905777e146105e1575f80fd5b8063ba087652146105a8578063c63d75b61461041c575f80fd5b806395d89b4111610127578063afb835311161010d578063afb835311461056f578063b3d7f6b914610582578063b460af9414610595575f80fd5b806395d89b4114610554578063a9059cbb1461055c575f80fd5b80638da5cb5b116101575780638da5cb5b146104fc57806390acbe9c1461050457806394bf804d14610541575f80fd5b80637d86646d146104e157806388a91fdb146104f4575f80fd5b806331ee80ca1161021b578063568efc07116101d157806370a08231116101b757806370a082311461047d578063715018a6146104d157806379ba5097146104d9575f80fd5b8063568efc07146104625780636e553f651461046a575f80fd5b8063402d267d11610201578063402d267d1461041c578063464d10ba1461044f5780634cdad5061461044f575f80fd5b806331ee80ca146103a557806338d52e0f146103ef575f80fd5b80630a28a4771161027057806323b872dd1161025657806323b872dd146103705780633032403a14610383578063313ce5671461038b575f80fd5b80630a28a4771461033657806318160ddd14610349575f80fd5b806307a2d13a116102a057806307a2d13a146102eb578063095ea7b3146102fe57806309f75ba014610321575f80fd5b806301e1d114146102bb57806306fdde03146102d6575b5f80fd5b6102c361069a565b6040519081526020015b60405180910390f35b6102de610769565b6040516102cd91906130cd565b6102c36102f9366004613120565b61083c565b61031161030c36600461315f565b61084d565b60405190151581526020016102cd565b61033461032f36600461315f565b610864565b005b6102c3610344366004613120565b61087a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102c3565b61031161037e366004613187565b610886565b6102c36108ab565b610393610967565b60405160ff90911681526020016102cd565b6103ad6109bb565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015161ffff16908201529181015163ffffffff16908201526060016102cd565b6103f7610a86565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cd565b6102c361042a3660046131c1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6102c361045d366004613120565b610ac7565b6102c35f5481565b6102c36104783660046131da565b610ad2565b6102c361048b3660046131c1565b73ffffffffffffffffffffffffffffffffffffffff165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b610334610d6c565b610334610d7f565b6102c36104ef366004613120565b610dff565b610334610e0a565b6103f7610e43565b61050c610e6b565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260209283015161ffff1692810192909252016102cd565b6102c361054f3660046131da565b610efb565b6102de611121565b61031161056a36600461315f565b611172565b61033461057d36600461315f565b61117f565b6102c3610590366004613120565b611191565b6102c36105a3366004613204565b61119d565b6102c36105b6366004613204565b6113bc565b6102c36105c9366004613120565b611614565b6102c36105dc3660046131c1565b61161f565b6102c36105ef3660046131c1565b61166d565b6102c361060236600461323d565b73ffffffffffffffffffffffffffffffffffffffff9182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6103f76116b6565b6103f77f000000000000000000000000000000000000000000000000000000000000000081565b6103346106953660046131c1565b6116de565b6040517fce96cb770000000000000000000000000000000000000000000000000000000081523060048201525f90819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa158015610726573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074a9190613265565b90505f61075682611795565b905061076282826118d4565b9250505090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916107ba9061327c565b80601f01602080910402602001604051908101604052809291908181526020018280546107e69061327c565b80156108315780601f1061080857610100808354040283529160200191610831565b820191905f5260205f20905b81548152906001019060200180831161081457829003601f168201915b505050505091505090565b5f610847825f6118f4565b92915050565b5f3361085a8185856119a1565b5060019392505050565b61086c6119b3565b6108768282611a0b565b5050565b5f610847826001611b9b565b5f33610893858285611c0b565b61089e858585611cf7565b60019150505b9392505050565b6040517fce96cb770000000000000000000000000000000000000000000000000000000081523060048201525f906109629073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa158015610939573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095d9190613265565b611795565b905090565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e009050600281546109b5919074010000000000000000000000000000000000000000900460ff166132fa565b91505090565b604080516060810182525f8082526020820181905291810191909152610962604080516060810182525f80825260208201819052918101919091527f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0060408051606081018252915473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000810461ffff166020840152760100000000000000000000000000000000000000000000900463ffffffff1690820152919050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b5f610847825f611da0565b5f610adb611dff565b825f03610b14576040517fafe74b7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b61576040517f9f36321800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b69611e80565b5f610b7384610dff565b9050805f03610bae576040517fd7eb52ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bda333086610bbc610a86565b73ffffffffffffffffffffffffffffffffffffffff16929190611e92565b610c247f000000000000000000000000000000000000000000000000000000000000000085610c07610a86565b73ffffffffffffffffffffffffffffffffffffffff169190611f1b565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e553f65906044016020604051808303815f875af1158015610cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd89190613265565b50610ce38382611ff2565b604080518581526020810183905273ffffffffffffffffffffffffffffffffffffffff85169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610d3f61069a565b5f55905061084760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610d746119b3565b610d7d5f61204c565b565b3380610d896116b6565b73ffffffffffffffffffffffffffffffffffffffff1614610df3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b610dfc8161204c565b50565b5f610847825f611b9b565b610e12611dff565b610e1a611e80565b610d7d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300610aaa565b604080518082019091525f80825260208201526109626040805180820182525f80825260209182015281518083019092527f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e052884005473ffffffffffffffffffffffffffffffffffffffff8116835261ffff74010000000000000000000000000000000000000000909104169082015290565b5f610f04611dff565b825f03610f3d576040517fd7eb52ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f8a576040517f9f36321800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f92611e80565b5f610f9c84611191565b9050805f03610fd7576040517fafe74b7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe5333083610bbc610a86565b6110127f000000000000000000000000000000000000000000000000000000000000000082610c07610a86565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018290523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e553f65906044016020604051808303815f875af11580156110a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190613265565b506110d18385611ff2565b604080518281526020810186905273ffffffffffffffffffffffffffffffffffffffff85169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610d2f565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916107ba9061327c565b5f3361085a818585611cf7565b6111876119b3565b610876828261209c565b5f610847826001611da0565b5f6111a6611dff565b835f036111df576040517fadcae1a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661122c576040517f9f36321800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611234611e80565b5f61123e8561087a565b90503373ffffffffffffffffffffffffffffffffffffffff84161461126857611268833383611c0b565b6112728382612223565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff85811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063b460af94906064016020604051808303815f875af115801561130a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132e9190613265565b50604080518681526020810183905273ffffffffffffffffffffffffffffffffffffffff808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a461138f61069a565b5f5590506108a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f6113c5611dff565b835f036113fe576040517fd7eb52ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661144b576040517f9f36321800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff83161461147357611473823386611c0b565b61147b611e80565b5f61148585610ac7565b9050805f036114c0576040517fadcae1a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ca8386612223565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff85811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063b460af94906064016020604051808303815f875af1158015611562573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115869190613265565b5061158f61069a565b5f55604080518281526020810187905273ffffffffffffffffffffffffffffffffffffffff808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a490506108a460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f610847825f61227d565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006020526040812054610847905f611da0565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006020526040812054610847565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610aaa565b6116e66119b3565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825561174f610e43565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f80611846604080516060810182525f80825260208201819052918101919091527f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0060408051606081018252915473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000810461ffff166020840152760100000000000000000000000000000000000000000000900463ffffffff1690820152919050565b6020810151909150429061ffff1615806118685750604082015163ffffffff16155b8061187d5750816040015163ffffffff168111155b1561188b57505f9392505050565b6118cc826040015163ffffffff16826118a49190613313565b6118ae9086613326565b602084015161ffff166118c76127106301e13380613326565b612319565b949350505050565b5f8282106118e357505f610847565b6118ed8284613313565b9050610847565b5f8061191e7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b905080156119745761196f61193161069a565b61193c90600161333d565b6119667f00000000000000000000000000000000000000000000000000000000000000008461333d565b86919086612410565b6118cc565b6118cc8460017f000000000000000000000000000000000000000000000000000000000000000086612410565b6119ae838383600161245d565b505050565b336119bc610e43565b73ffffffffffffffffffffffffffffffffffffffff1614610d7d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610dea565b73ffffffffffffffffffffffffffffffffffffffff8216611a58576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611388811115611a97576040517f29f99fe400000000000000000000000000000000000000000000000000000000815260048101829052602401610dea565b7f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e0528840080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416178155611aff826125c7565b815461ffff9190911674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161781556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527fb51da3e1921b4e807ca7fadcf4582ef9ebbabde509ec7cecd222ca1fd4375df591015b60405180910390a1505050565b5f805f611ba784612612565b91509150611c027f0000000000000000000000000000000000000000000000000000000000000000611bda84848861273b565b611be4908461333d565b611bee919061333d565b611bf984600161333d565b87919087612410565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf15781811015611ce3576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610dea565b611cf184848484035f61245d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611d46576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b73ffffffffffffffffffffffffffffffffffffffff8216611d95576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b6119ae8383836127f5565b5f805f611dac84612612565b9092509050611c02611dbf83600161333d565b7f0000000000000000000000000000000000000000000000000000000000000000611deb85858961273b565b611df5908561333d565b611bf9919061333d565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611e7a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b611e886129c2565b610d7d5f54612ae1565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611cf19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bfc565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052611fa78482612c90565b611cf15760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f6044830152611fe891869182169063095ea7b390606401611ed4565b611cf18482612bfc565b73ffffffffffffffffffffffffffffffffffffffff8216612041576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b6108765f83836127f5565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815561087682612d47565b73ffffffffffffffffffffffffffffffffffffffff82166120e9576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4811115612128576040517f49f1e86200000000000000000000000000000000000000000000000000000000815260048101829052602401610dea565b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416178155612190826125c7565b815461ffff9190911674010000000000000000000000000000000000000000027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff9091161781556040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018490527f72a8ee4b89f4194ad7e618624c280d66eb07d10b8cd84ab0376c16534413aa409101611b8e565b73ffffffffffffffffffffffffffffffffffffffff8216612272576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b610876825f836127f5565b5f806122a77f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b905080156122ef5761196f6122dc7f00000000000000000000000000000000000000000000000000000000000000008361333d565b6122e461069a565b61196690600161333d565b6118cc7f000000000000000000000000000000000000000000000000000000000000000085613326565b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050805f0361236c5783828161236257612362613350565b04925050506108a4565b8084116123a5576040517f227bc15300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8061241d868686612319565b905061242883612ddc565b801561244357505f848061243e5761243e613350565b868809115b15611c025761245360018261333d565b9695505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff85166124cd576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b73ffffffffffffffffffffffffffffffffffffffff841661251c576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610dea565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152600183016020908152604080832093881683529290522083905581156125c0578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516125b791815260200190565b60405180910390a35b5050505050565b5f61ffff82111561260e576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526010600482015260248101839052604401610dea565b5090565b6040517fce96cb770000000000000000000000000000000000000000000000000000000081523060048201525f908190819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa1580156126a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c49190613265565b90505f6126d082611795565b90505f6126dd83836118d4565b90505f6127087f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b90505f6127178286868b612e08565b9050612723848461333d565b965061272f818361333d565b95505050505050915091565b5f805f54851161274b575f6127da565b6127da5f548661275b9190613313565b6040805180820182525f80825260209182015281518083019092527f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e052884005473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900461ffff169101819052612710612319565b90505f81116127e9575f611c02565b611c0284868386612e08565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff841661284f5781816002015f828254612844919061333d565b909155506128ff9050565b73ffffffffffffffffffffffffffffffffffffffff84165f90815260208290526040902054828110156128d4576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526024810182905260448101849052606401610dea565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526020839052604090209083900390555b73ffffffffffffffffffffffffffffffffffffffff831661292a576002810180548390039055612955565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020829052604090208054830190555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129b491815260200190565b60405180910390a350505050565b5f612a72604080516060810182525f80825260208201819052918101919091527f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0060408051606081018252915473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000810461ffff166020840152760100000000000000000000000000000000000000000000900463ffffffff1690820152919050565b90505f612a7d6108ab565b9050612a87612e7f565b5f612a9182611614565b9050805f03612a9f57505050565b8251612aab9082611ff2565b60408051838152602081018390527fbb92eb7521ac4e9e56f7e75ea06a10cbc121c444e5d175fff5e8e0bc9e8049379101611b8e565b5f612aea61069a565b905081811015612af8575050565b5f612b766040805180820182525f80825260209182015281518083019092527f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e052884005473ffffffffffffffffffffffffffffffffffffffff8116835261ffff74010000000000000000000000000000000000000000909104169082015290565b90505f612b97612b868585613313565b836020015161ffff16612710612319565b90505f612ba382611614565b9050612bb2835f015182611ff2565b60408051838152602081018390527f3badd5ef0fe887e95dfed8b102136bc34bbe568efe280cb395806088e78d32eb910160405180910390a1612bf361069a565b5f555050505050565b5f612c1d73ffffffffffffffffffffffffffffffffffffffff841683612ef6565b905080515f14158015612c41575080806020019051810190612c3f919061337d565b155b156119ae576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dea565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1684604051612cb8919061339c565b5f604051808303815f865af19150503d805f8114612cf1576040519150601f19603f3d011682016040523d82523d5f602084013e612cf6565b606091505b5091509150818015612d20575080511580612d20575080806020019051810190612d20919061337d565b8015611c0257505050505073ffffffffffffffffffffffffffffffffffffffff163b151590565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6002826003811115612df157612df16133b2565b612dfb91906133df565b60ff166001149050919050565b5f8415612e5557612e50612e3c7f00000000000000000000000000000000000000000000000000000000000000008761333d565b612e4786600161333d565b85919085612410565b611c02565b611c027f000000000000000000000000000000000000000000000000000000000000000084613326565b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f00612ea942612f03565b815463ffffffff91909116760100000000000000000000000000000000000000000000027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff909116179055565b60606108a483835f612f4c565b5f63ffffffff82111561260e576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526020600482015260248101839052604401610dea565b606081471015612f8a576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dea565b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051612fb2919061339c565b5f6040518083038185875af1925050503d805f8114612fec576040519150601f19603f3d011682016040523d82523d5f602084013e612ff1565b606091505b50915091506124538683836060826130115761300c8261308b565b6108a4565b8151158015613035575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613084576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dea565b50806108a4565b80511561309b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215613130575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461315a575f80fd5b919050565b5f8060408385031215613170575f80fd5b61317983613137565b946020939093013593505050565b5f805f60608486031215613199575f80fd5b6131a284613137565b92506131b060208501613137565b929592945050506040919091013590565b5f602082840312156131d1575f80fd5b6108a482613137565b5f80604083850312156131eb575f80fd5b823591506131fb60208401613137565b90509250929050565b5f805f60608486031215613216575f80fd5b8335925061322660208501613137565b915061323460408501613137565b90509250925092565b5f806040838503121561324e575f80fd5b61325783613137565b91506131fb60208401613137565b5f60208284031215613275575f80fd5b5051919050565b600181811c9082168061329057607f821691505b6020821081036132c7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff8181168382160190811115610847576108476132cd565b81810381811115610847576108476132cd565b8082028115828204841417610847576108476132cd565b80820180821115610847576108476132cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6020828403121561338d575f80fd5b815180151581146108a4575f80fd5b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680613416577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff8416069150509291505056fea26469706673582212200db795f229cbac8576164ff01ed504f581cbaefd8ea840685bebd79ba172b97664736f6c634300081a0033a26469706673582212201d1448d724d15a3b1af069f5e7fe8d1232441e6a98acf6b678d86c7988d71c1d64736f6c634300081a0033