diff --git a/contracts/Hypervisor.sol b/contracts/Hypervisor.sol index 94e21cd..03322d0 100644 --- a/contracts/Hypervisor.sol +++ b/contracts/Hypervisor.sol @@ -228,8 +228,7 @@ contract Hypervisor is IUniswapV3MintCallback, ERC20Permit, ReentrancyGuard { uint256 shares, address to, address from, - uint256 amount0Min, - uint256 amount1Min + uint256[4] memory minAmounts ) nonReentrant external returns (uint256 amount0, uint256 amount1) { require(shares > 0, "shares"); require(to != address(0), "to"); @@ -244,8 +243,8 @@ contract Hypervisor is IUniswapV3MintCallback, ERC20Permit, ReentrancyGuard { _baseLiquidityForShares(shares), to, false, - amount0Min, - amount1Min + minAmounts[0], + minAmounts[1] ); (uint256 limit0, uint256 limit1) = _burnLiquidity( limitLower, @@ -253,8 +252,8 @@ contract Hypervisor is IUniswapV3MintCallback, ERC20Permit, ReentrancyGuard { _limitLiquidityForShares(shares), to, false, - amount0Min, - amount1Min + minAmounts[2], + minAmounts[3] ); // Push tokens proportional to unused balances diff --git a/contracts/interfaces/IHypervisor.sol b/contracts/interfaces/IHypervisor.sol index 69d3de5..b2e1774 100644 --- a/contracts/interfaces/IHypervisor.sol +++ b/contracts/interfaces/IHypervisor.sol @@ -19,8 +19,7 @@ interface IHypervisor { uint256, address, address, - uint256, - uint256 + uint256[4] memory ) external returns (uint256, uint256); function rebalance( diff --git a/test/deposit_withdraw.test.ts b/test/deposit_withdraw.test.ts index 5de5ed9..5251ca5 100644 --- a/test/deposit_withdraw.test.ts +++ b/test/deposit_withdraw.test.ts @@ -308,11 +308,11 @@ describe('Hypervisor', () => { const user3_liq_balance = await hypervisor.balanceOf(user3.address) const user4_liq_balance = await hypervisor.balanceOf(user4.address) - await hypervisor.connect(user0).withdraw(user0_liq_balance, user0.address, user0.address, 0, 0) - await hypervisor.connect(user1).withdraw(user1_liq_balance, user1.address, user1.address, 0, 0) - await hypervisor.connect(user2).withdraw(user2_liq_balance, user2.address, user2.address, 0, 0) - await hypervisor.connect(user3).withdraw(user3_liq_balance, user3.address, user3.address, 0, 0) - await hypervisor.connect(user4).withdraw(user4_liq_balance, user4.address, user4.address, 0, 0) + await hypervisor.connect(user0).withdraw(user0_liq_balance, user0.address, user0.address, [0,0,0,0]) + await hypervisor.connect(user1).withdraw(user1_liq_balance, user1.address, user1.address, [0,0,0,0]) + await hypervisor.connect(user2).withdraw(user2_liq_balance, user2.address, user2.address, [0,0,0,0]) + await hypervisor.connect(user3).withdraw(user3_liq_balance, user3.address, user3.address, [0,0,0,0]) + await hypervisor.connect(user4).withdraw(user4_liq_balance, user4.address, user4.address, [0,0,0,0]) user0token0Amount = await token0.balanceOf(user0.address) user0token1Amount = await token1.balanceOf(user0.address) @@ -354,7 +354,7 @@ describe('Hypervisor', () => { await hypervisor.connect(alice).deposit(ethers.utils.parseEther('1000'), ethers.utils.parseEther('1000'), alice.address, alice.address, [0,0,0,0]) alice_liq_balance = await hypervisor.balanceOf(alice.address) expect(alice_liq_balance).to.equal(ethers.utils.parseEther('2000')) - await hypervisor.connect(alice).withdraw(alice_liq_balance, alice.address, alice.address, 0, 0) + await hypervisor.connect(alice).withdraw(alice_liq_balance, alice.address, alice.address, [0,0,0,0]) let tokenAmounts = await hypervisor.getTotalAmounts() // verify that all liquidity has been removed from the pool expect(tokenAmounts[0]).to.equal(0) @@ -386,7 +386,7 @@ describe('Hypervisor', () => { expect(tokenAmounts[0]).to.be.lt(ethers.utils.parseEther('2001')) expect(tokenAmounts[1]).to.be.lt(ethers.utils.parseEther('2001')) - await hypervisor.connect(user0).withdraw(user0_liq_balance, user0.address, user0.address, 0, 0) + await hypervisor.connect(user0).withdraw(user0_liq_balance, user0.address, user0.address, [0,0,0,0]) token0Balance = await token0.balanceOf(user0.address) token1Balance = await token1.balanceOf(user0.address) expect(token0Balance).to.equal(ethers.utils.parseEther('1000')) @@ -424,7 +424,7 @@ describe('Hypervisor', () => { expect(limitPosition[0]).to.equal(0) // withdraw alice's all liq balance - await hypervisor.connect(alice).withdraw(alice_liq_balance, alice.address, alice.address, 0, 0) + await hypervisor.connect(alice).withdraw(alice_liq_balance, alice.address, alice.address,[0,0,0,0]) alice_liq_balance = await hypervisor.balanceOf(alice.address) // expect alice liq balance to be 0 diff --git a/typechain/Hypervisor.d.ts b/typechain/Hypervisor.d.ts index 4778ae4..343e05b 100644 --- a/typechain/Hypervisor.d.ts +++ b/typechain/Hypervisor.d.ts @@ -66,7 +66,7 @@ interface HypervisorInterface extends ethers.utils.Interface { "transferOwnership(address)": FunctionFragment; "uniswapV3MintCallback(uint256,uint256,bytes)": FunctionFragment; "whitelistedAddress()": FunctionFragment; - "withdraw(uint256,address,address,uint256,uint256)": FunctionFragment; + "withdraw(uint256,address,address,uint256[4])": FunctionFragment; }; encodeFunctionData( @@ -234,7 +234,12 @@ interface HypervisorInterface extends ethers.utils.Interface { ): string; encodeFunctionData( functionFragment: "withdraw", - values: [BigNumberish, string, string, BigNumberish, BigNumberish] + values: [ + BigNumberish, + string, + string, + [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ] ): string; decodeFunctionResult( @@ -652,8 +657,7 @@ export class Hypervisor extends BaseContract { shares: BigNumberish, to: string, from: string, - amount0Min: BigNumberish, - amount1Min: BigNumberish, + minAmounts: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -851,8 +855,7 @@ export class Hypervisor extends BaseContract { shares: BigNumberish, to: string, from: string, - amount0Min: BigNumberish, - amount1Min: BigNumberish, + minAmounts: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -1066,8 +1069,7 @@ export class Hypervisor extends BaseContract { shares: BigNumberish, to: string, from: string, - amount0Min: BigNumberish, - amount1Min: BigNumberish, + minAmounts: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: CallOverrides ): Promise< [BigNumber, BigNumber] & { amount0: BigNumber; amount1: BigNumber } @@ -1394,8 +1396,7 @@ export class Hypervisor extends BaseContract { shares: BigNumberish, to: string, from: string, - amount0Min: BigNumberish, - amount1Min: BigNumberish, + minAmounts: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -1584,8 +1585,7 @@ export class Hypervisor extends BaseContract { shares: BigNumberish, to: string, from: string, - amount0Min: BigNumberish, - amount1Min: BigNumberish, + minAmounts: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/typechain/IHypervisor.d.ts b/typechain/IHypervisor.d.ts index 68fa6af..2317558 100644 --- a/typechain/IHypervisor.d.ts +++ b/typechain/IHypervisor.d.ts @@ -42,7 +42,7 @@ interface IHypervisorInterface extends ethers.utils.Interface { "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; "transferOwnership(address)": FunctionFragment; - "withdraw(uint256,address,address,uint256,uint256)": FunctionFragment; + "withdraw(uint256,address,address,uint256[4])": FunctionFragment; }; encodeFunctionData( @@ -133,7 +133,12 @@ interface IHypervisorInterface extends ethers.utils.Interface { ): string; encodeFunctionData( functionFragment: "withdraw", - values: [BigNumberish, string, string, BigNumberish, BigNumberish] + values: [ + BigNumberish, + string, + string, + [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ] ): string; decodeFunctionResult( @@ -347,8 +352,7 @@ export class IHypervisor extends BaseContract { arg0: BigNumberish, arg1: string, arg2: string, - arg3: BigNumberish, - arg4: BigNumberish, + arg3: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -454,8 +458,7 @@ export class IHypervisor extends BaseContract { arg0: BigNumberish, arg1: string, arg2: string, - arg3: BigNumberish, - arg4: BigNumberish, + arg3: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -572,8 +575,7 @@ export class IHypervisor extends BaseContract { arg0: BigNumberish, arg1: string, arg2: string, - arg3: BigNumberish, - arg4: BigNumberish, + arg3: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: CallOverrides ): Promise<[BigNumber, BigNumber]>; }; @@ -680,8 +682,7 @@ export class IHypervisor extends BaseContract { arg0: BigNumberish, arg1: string, arg2: string, - arg3: BigNumberish, - arg4: BigNumberish, + arg3: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -789,8 +790,7 @@ export class IHypervisor extends BaseContract { arg0: BigNumberish, arg1: string, arg2: string, - arg3: BigNumberish, - arg4: BigNumberish, + arg3: [BigNumberish, BigNumberish, BigNumberish, BigNumberish], overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/typechain/factories/HypervisorFactory__factory.ts b/typechain/factories/HypervisorFactory__factory.ts index 8d666a1..2b77af3 100644 --- a/typechain/factories/HypervisorFactory__factory.ts +++ b/typechain/factories/HypervisorFactory__factory.ts @@ -226,7 +226,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161606d38038061606d8339818101604052602081101561003357600080fd5b5051600061003f6100f3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0381166100ce5760405162461bcd60e51b815260040180806020018281038252602381526020018061604a6023913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100f7565b3390565b615f44806101066000396000f3fe60806040523480156200001157600080fd5b5060043610620000945760003560e01c80638da5cb5b11620000635780638da5cb5b1462000246578063b7e1aae91462000250578063cabea7dc146200026c578063f2fde38b14620002ab5762000094565b80631b73ccc414620000995780635b5491821462000210578063686d59b0146200021a578063715018a6146200023a575b600080fd5b620001f4600480360360a0811015620000b157600080fd5b6001600160a01b03823581169260208101359091169162ffffff6040830135169190810190608081016060820135640100000000811115620000f257600080fd5b8201836020820111156200010557600080fd5b803590602001918460018302840111640100000000831117156200012857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156200017c57600080fd5b8201836020820111156200018f57600080fd5b80359060200191846001830284011164010000000083111715620001b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620002d4945050505050565b604080516001600160a01b039092168252519081900360200190f35b620001f462000a56565b620001f4600480360360208110156200023257600080fd5b503562000a65565b6200024462000a90565b005b620001f462000b60565b6200025a62000b6f565b60408051918252519081900360200190f35b620001f4600480360360608110156200028457600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff1662000b75565b6200024460048036036020811015620002c357600080fd5b50356001600160a01b031662000ba1565b6000620002e062000cc9565b6001600160a01b0316620002f362000b60565b6001600160a01b0316146200034f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b03161415620003b7576040805162461bcd60e51b815260206004820152601760248201527f53463a204944454e544943414c5f414444524553534553000000000000000000604482015290519081900360640190fd5b600080866001600160a01b0316886001600160a01b031610620003dc578688620003df565b87875b90925090506001600160a01b03821662000440576040805162461bcd60e51b815260206004820152601060248201527f53463a205a45524f5f4144445245535300000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526002602090815260408083208585168452825280832062ffffff8b1684529091529020541615620004c8576040805162461bcd60e51b815260206004820152601560248201527f53463a2048595045525649534f525f4558495354530000000000000000000000604482015290519081900360640190fd5b600154604080516322afcccb60e01b815262ffffff8916600482015290516000926001600160a01b0316916322afcccb916024808301926020929190829003018186803b1580156200051957600080fd5b505afa1580156200052e573d6000803e3d6000fd5b505050506040513d60208110156200054557600080fd5b50519050600281900b620005a0576040805162461bcd60e51b815260206004820152601160248201527f53463a20494e434f52524543545f464545000000000000000000000000000000604482015290519081900360640190fd5b60015460408051630b4c774160e11b81526001600160a01b038681166004830152858116602483015262ffffff8b16604483015291516000939290921691631698ee8291606480820192602092909190829003018186803b1580156200060557600080fd5b505afa1580156200061a573d6000803e3d6000fd5b505050506040513d60208110156200063157600080fd5b505190506001600160a01b038116620006d8576001546040805163a167129560e01b81526001600160a01b038781166004830152868116602483015262ffffff8c1660448301529151919092169163a16712959160648083019260209291908290030181600087803b158015620006a757600080fd5b505af1158015620006bc573d6000803e3d6000fd5b505050506040513d6020811015620006d357600080fd5b505190505b8383898460405160200180856001600160a01b031660601b8152601401846001600160a01b031660601b81526014018362ffffff1660e81b81526003018260020b60e81b815260030194505050505060405160208183030381529060405280519060200120816200074862000b60565b8989604051620007589062000ccd565b80856001600160a01b03168152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620007b65781810151838201526020016200079c565b50505050905090810190601f168015620007e45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101562000819578181015183820152602001620007ff565b50505050905090810190601f168015620008475780820380516001836020036101000a031916815260200191505b5096505050505050508190604051809103906000f590508015801562000871573d6000803e3d6000fd5b5094508460026000866001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008a62ffffff1662ffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460026000856001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060008a62ffffff1662ffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506003859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055507f16682fe0a2ffae99e47dc4431cb60eb5afccc35b1d4a4d0184d4516ed6031bbd84848a8860038054905060405180866001600160a01b03168152602001856001600160a01b031681526020018462ffffff168152602001836001600160a01b031681526020018281526020019550505050505060405180910390a15050505095945050505050565b6001546001600160a01b031681565b6003818154811062000a7657600080fd5b6000918252602090912001546001600160a01b0316905081565b62000a9a62000cc9565b6001600160a01b031662000aad62000b60565b6001600160a01b03161462000b09576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031690565b60035490565b60026020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b62000bab62000cc9565b6001600160a01b031662000bbe62000b60565b6001600160a01b03161462000c1a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811662000c615760405162461bcd60e51b815260040180806020018281038252602681526020018062005f126026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3390565b6152368062000cdc8339019056fe6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200523638038062005236833981810160405260808110156200005d57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200008957600080fd5b9083019060208201858111156200009f57600080fd5b8251640100000000811182820188101715620000ba57600080fd5b82525081516020918201929091019080838360005b83811015620000e9578181015183820152602001620000cf565b50505050905090810190601f168015620001175780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013b57600080fd5b9083019060208201858111156200015157600080fd5b82516401000000008111828201881017156200016c57600080fd5b82525081516020918201929091019080838360005b838110156200019b57818101518382015260200162000181565b50505050905090810190601f168015620001c95780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b8152508484816003908051906020019062000206929190620005f8565b5080516200021c906004906020840190620005f8565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200027562000590565b60a0526200028581848462000594565b60805261010052505060016007555050506001600160a01b038416620002aa57600080fd5b6001600160a01b038316620002be57600080fd5b600880546001600160a01b0319166001600160a01b03868116919091179182905560408051630dfe168160e01b815290519290911691630dfe168191600480820192602092909190829003018186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d60208110156200034757600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b158015620003a357600080fd5b505afa158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617905560095416620003fb57600080fd5b600a546001600160a01b03166200041157600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d60208110156200048c57600080fd5b5051600a805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055600854604080516334324e9f60e21b815290516001600160a01b039092169163d0c93a7c91600480820192602092909190829003018186803b158015620004f657600080fd5b505afa1580156200050b573d6000803e3d6000fd5b505050506040513d60208110156200052257600080fd5b5051600a805460029290920b62ffffff16600160b81b0262ffffff60b81b199092169190911790555050600b80546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600e55600019600c819055600d55620006a4565b4690565b6000838383620005a362000590565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200063057600085556200067b565b82601f106200064b57805160ff19168380011785556200067b565b828001600101855582156200067b579182015b828111156200067b5782518255916020019190600101906200065e565b50620006899291506200068d565b5090565b5b808211156200068957600081556001016200068e565b60805160a05160c05160e0516101005161012051614b48620006ee600039806126765250806134bd5250806134ff5250806134de5250806134645250806134945250614b486000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c806386a290811161019c578063c4a7761e116100ee578063d505accf11610097578063f2fde38b11610071578063f2fde38b146109fb578063f69e204614610a21578063fa08274314610aa45761030a565b8063d505accf1461095c578063dd62ed3e146109ad578063ddca3f43146109db5761030a565b8063d21220a7116100c8578063d21220a7146108d0578063d2eabcfc146108d8578063d3487997146108e05761030a565b8063c4a7761e146108b8578063c5241e29146108c0578063d0c93a7c146108c85761030a565b806395d89b4111610150578063a9059cbb1161012a578063a9059cbb1461087c578063aaf5eb68146108a8578063b1a3d533146108b05761030a565b806395d89b4114610818578063a049de6b14610820578063a457c2d7146108505761030a565b80638d2e63b8116101815780638d2e63b8146107445780638da5cb5b1461079f5780638e3c92e4146107a75761030a565b806386a2908114610734578063888a91341461073c5761030a565b8063313ce56711610260578063648cab85116102095780637ecebe00116101e35780637ecebe001461063b578063854cff2f1461066157806385919c5d146106875761030a565b8063648cab85146106055780636d90a39c1461060d57806370a08231146106155761030a565b806349e8f1c21161023a57806349e8f1c21461059e5780634d461fbb146105f557806351e87af7146105fd5761030a565b8063313ce5671461054c5780633644e5151461056a57806339509351146105725761030a565b806316f0115b116102c257806323b872dd1161029c57806323b872dd146104b55780632527aa1d146104eb5780632ab4d052146105445761030a565b806316f0115b1461041757806318160ddd1461041f5780631bead8f3146104395761030a565b8063095ea7b3116102f3578063095ea7b3146103ab5780630dfe1681146103eb5780630f35bcac1461040f5761030a565b8063065e53601461030f57806306fdde031461032e575b600080fd5b610317610aac565b6040805160029290920b8252519081900360200190f35b610336610b25565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360408110156103c157600080fd5b506001600160a01b038135169060200135610bbc565b604080519115158252519081900360200190f35b6103f3610bda565b604080516001600160a01b039092168252519081900360200190f35b610317610be9565b6103f3610bf9565b610427610c08565b60408051918252519081900360200190f35b61048f600480360360a081101561044f57600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610c0e9350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103d7600480360360608110156104cb57600080fd5b506001600160a01b03813581169160208101359091169060400135610d07565b6105426004803603608081101561050157600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610d8f9350505050565b005b610427610f27565b610554610f2d565b6040805160ff9092168252519081900360200190f35b610427610f36565b6103d76004803603604081101561058857600080fd5b506001600160a01b038135169060200135610f45565b610542600480360360808110156105b457600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610f939350505050565b610427611012565b610317611018565b610427611021565b6103d7611027565b6104276004803603602081101561062b57600080fd5b50356001600160a01b0316611037565b6104276004803603602081101561065157600080fd5b50356001600160a01b0316611056565b6105426004803603602081101561067757600080fd5b50356001600160a01b0316611077565b61054260048036036101a081101561069e57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506110f99350505050565b6103f361180d565b61031761181c565b610786600480360360a081101561075a57600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561182c565b6040805192835260208301919091528051918290030190f35b6103f3611bcb565b61042760048036036101008110156107be57600080fd5b60408051608081810183528435946020810135946001600160a01b0394820135851694606083013516939082019261010083019190808401906004908390839080828437600092019190915250919450611be19350505050565b610336612159565b6108286121ba565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103d76004803603604081101561086657600080fd5b506001600160a01b038135169060200135612240565b6103d76004803603604081101561089257600080fd5b506001600160a01b0381351690602001356122a8565b6104276122bc565b6105426122cf565b61078661235e565b61054261246e565b6103176124e0565b6103f36124f0565b6108286124ff565b610542600480360360608110156108f657600080fd5b81359160208101359181019060608101604082013564010000000081111561091d57600080fd5b82018360208201111561092f57600080fd5b8035906020019184600183028401116401000000008311171561095157600080fd5b50909250905061255b565b610542600480360360e081101561097257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612607565b610427600480360360408110156109c357600080fd5b506001600160a01b03813581169160200135166127be565b6109e36127e9565b6040805162ffffff9092168252519081900360200190f35b61054260048036036020811015610a1157600080fd5b50356001600160a01b03166127fb565b610a296128a2565b60405180866001600160801b03168152602001856001600160801b03168152602001846001600160801b03168152602001836001600160801b0316815260200182600460200280838360005b83811015610a8d578181015183820152602001610a75565b505050509050019550505050505060405180910390f35b610317612d02565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015610af157600080fd5b505afa158015610b05573d6000803e3d6000fd5b505050506040513d60e0811015610b1b57600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb15780601f10610b8657610100808354040283529160200191610bb1565b820191906000526020600020905b815481529060010190602001808311610b9457829003601f168201915b505050505090505b90565b6000610bd0610bc9612d12565b8484612d16565b5060015b92915050565b6009546001600160a01b031681565b600b546301000000900460020b81565b6008546001600160a01b031681565b60025490565b600080600080600b60069054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610c7c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b610c84612e02565b5050600a54610cc390600160d01b8104600290810b91600160e81b9004900b610cae82828b612fab565b885130906000908b60015b6020020151612feb565b600b549195509350610cfc90600281810b9163010000009004900b610ce982828b612fab565b3060008a600260200201518b6003610cb9565b949793965094505050565b6000610d14848484613239565b610d8484610d20612d12565b610d7f85604051806060016040528060288152602001614a5b602891396001600160a01b038a16600090815260016020526040812090610d5e612d12565b6001600160a01b031681526020810191909152604001600020549190613394565b612d16565b5060015b9392505050565b600b54600160301b90046001600160a01b03163314610de2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a54610f2290600160d01b8104600290810b91600160e81b9004900b3086158015610e0c575085155b610e165786610e8e565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b50515b87158015610e9a575086155b610ea45786610f1c565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d6020811015610f1957600080fd5b50515b8661342b565b505050565b600e5481565b60055460ff1690565b6000610f40613460565b905090565b6000610bd0610f52612d12565b84610d7f8560016000610f63612d12565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061352a565b600b54600160301b90046001600160a01b03163314610fe6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600b54610f2290600281810b9163010000009004900b3086158015610e0c57508515610e165786610e8e565b600d5481565b600b5460020b81565b600c5481565b600f54600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610bd490613584565b600b54600160301b90046001600160a01b031633146110ca576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60026007541415611151576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600b54600160301b90046001600160a01b031633146111a9576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156111db5750600a54600160b81b9004600290810b810b9088900b816111d557fe5b0760020b155b80156112045750600a54600160b81b9004600290810b810b9087900b816111fe57fe5b0760020b155b61120d57600080fd5b8360020b8560020b12801561123f5750600a54600160b81b9004600290810b810b9086900b8161123957fe5b0760020b155b80156112685750600a54600160b81b9004600290810b810b9085900b8161126257fe5b0760020b155b61127157600080fd5b8560020b8460020b14158061128c57508660020b8560020b14155b61129557600080fd5b6001600160a01b0383166112a857600080fd5b6000806112b3612e02565b600a54919350915060009081906112df90600160d01b8104600290810b91600160e81b9004900b613588565b600b546001600160801b0392831695509116925060009150819061131190600281810b9163010000009004900b613588565b6001600160801b0391821694501691506000905061132f838661352a565b9050600061133d838661352a565b600a5490915061136290600160d01b8104600290810b91600160e81b9004900b613588565b5050600b5490985061138290600281810b9163010000009004900b613588565b5050600a549097506113b890600160d01b8104600290810b91600160e81b9004900b8a3060018e600060200201518f6001610cb9565b5050600b5460408a01516113e691600281810b926301000000909204900b908a9030906001908f6003610cb9565b50508115611410576114108b6113fd84600a613663565b6009546001600160a01b031691906136ca565b8015611438576114388b61142583600a613663565b600a546001600160a01b031691906136ca565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611461610aac565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114ac57600080fd5b505afa1580156114c0573d6000803e3d6000fd5b505050506040513d60208110156114d657600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561152357600080fd5b505afa158015611537573d6000803e3d6000fd5b505050506040513d602081101561154d57600080fd5b50518585611559610c08565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a1600060405180604001604052808c6000600481106115aa57fe5b602002015181526020018c6001600481106115c157fe5b602002015181525090508f600a601a6101000a81548162ffffff021916908360020b62ffffff1602179055508e600a601d6101000a81548162ffffff021916908360020b62ffffff16021790555061170c600a601a9054906101000a900460020b600a601d9054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561169557600080fd5b505afa1580156116a9573d6000803e3d6000fd5b505050506040513d60208110156116bf57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610eef57600080fd5b604080518082018252908c01518152602081018c6003602002015181525090508d600b60006101000a81548162ffffff021916908360020b62ffffff1602179055508c600b60036101000a81548162ffffff021916908360020b62ffffff1602179055506117f6600b60009054906101000a900460020b600b60039054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561169557600080fd5b505060016007555050505050505050505050505050565b600f546001600160a01b031681565b600a54600160e81b900460020b81565b60008060026007541415611887576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755866118de576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03861661191e576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b611926612e02565b5050600a54600090819061195d90600160d01b8104600290810b91600160e81b9004900b6119538c613731565b8b60008b8b612feb565b600b549193509150600090819061199090600281810b9163010000009004900b6119868e613757565b8d60008d8d612feb565b915091506000611a3f6119a1610c08565b611a398e600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d6020811015611a3157600080fd5b505190613776565b90613663565b90506000611ab4611a4e610c08565b611a398f600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a0757600080fd5b90508115611ad357600954611ad3906001600160a01b03168d846136ca565b8015611af057600a54611af0906001600160a01b03168d836136ca565b611b0482611afe888761352a565b9061352a565b9750611b1481611afe878661352a565b96506001600160a01b038b163314611b59576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b611b638b8e6137cf565b604080518e8152602081018a905280820189905290516001600160a01b03808f1692908e16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a350505050505060016007819055509550959350505050565b600b54600160301b90046001600160a01b031681565b600060026007541415611c3b576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585151580611c4e5750600085115b611c5757600080fd5b600c548611158015611c6b5750600d548511155b611c7457600080fd5b6001600160a01b03841615801590611c9557506001600160a01b0384163014155b611ccb576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600f546001600160a01b03163314611d10576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b611d18612e02565b50506000611d2c611d27610aac565b6138cb565b90506000611d75611d466001600160a01b03841680613776565b6ec097ce7bc90715b34b9f10000000007801000000000000000000000000000000000000000000000000613c0a565b9050600080611d8261235e565b9092509050611dae611da76ec097ce7bc90715b34b9f1000000000611a398d87613776565b8a9061352a565b94508915611dce57600954611dce906001600160a01b031688308d613cb9565b8815611dec57600a54611dec906001600160a01b031688308c613cb9565b6000611df6610c08565b905080156120a3576000611e1d6ec097ce7bc90715b34b9f1000000000611a398688613776565b9050611e36611e2c828561352a565b611a398985613776565b600f54909750600160a01b900460ff16156120a157600a54600954604080516370a0823160e01b815230600482018190529151611f7d94600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611eb857600080fd5b505afa158015611ecc573d6000803e3d6000fd5b505050506040513d6020811015611ee257600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611f2f57600080fd5b505afa158015611f43573d6000803e3d6000fd5b505050506040513d6020811015611f5957600080fd5b5051604080518082019091528e518152602081018f60015b6020020151905261342b565b600b54600954604080516370a0823160e01b8152306004820181905291516120a194600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d602081101561200d57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561205a57600080fd5b505afa15801561206e573d6000803e3d6000fd5b505050506040513d602081101561208457600080fd5b5051604080518082018252908f01518152602081018f6003611f71565b505b6120ad8987613d28565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600e54158061210e5750600e548111155b612145576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb15780601f10610b8657610100808354040283529160200191610bb1565b600b54600090819081908190819081906121e290600281810b9163010000009004900b613588565b600b54929550909350915061220690600281810b9163010000009004900b85613e18565b909550935061221e856001600160801b03841661352a565b9450612233846001600160801b03831661352a565b9350829550505050909192565b6000610bd061224d612d12565b84610d7f85604051806060016040528060258152602001614b176025913960016000612277612d12565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613394565b6000610bd06122b5612d12565b8484613239565b6ec097ce7bc90715b34b9f100000000081565b600b54600160301b90046001600160a01b03163314612322576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b60008060008061236c6124ff565b925092505060008061237c6121ba565b600954604080516370a0823160e01b8152306004820152905193965091945061240a93508592611afe9289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156123d857600080fd5b505afa1580156123ec573d6000803e3d6000fd5b505050506040513d602081101561240257600080fd5b50519061352a565b600a54604080516370a0823160e01b81523060048201529051929850612464928492611afe9288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156123d857600080fd5b9450505050509091565b600b54600160301b90046001600160a01b031633146124c1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a54600160b81b900460020b81565b600a546001600160a01b031681565b600080600080600080612530600a601a9054906101000a900460020b600a601d9054906101000a900460020b613588565b600a54929550909350915061220690600160d01b8104600290810b91600160e81b9004900b85613e18565b6008546001600160a01b0316331461257257600080fd5b600f547501000000000000000000000000000000000000000000900460ff16151560011461259f57600080fd5b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905583156125e4576009546125e4906001600160a01b031633866136ca565b821561260157600a54612601906001600160a01b031633856136ca565b50505050565b8342111561265c576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906126a590613584565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061270e82613ec2565b9050600061271e82878787613f0e565b9050896001600160a01b0316816001600160a01b031614612786576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206127a790614083565b6127b28a8a8a612d16565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a54600160a01b900462ffffff1681565b600b54600160301b90046001600160a01b0316331461284e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b03811661286157600080fd5b600b80546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b6000806000806128b0614924565b600b54600160301b90046001600160a01b03163314612903576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b61290b612e02565b5050600a5461292f90600160d01b8104600290810b91600160e81b9004900b613588565b600b5491975095506129509150600281810b9163010000009004900b613588565b600854600a54604080516309e3d67b60e31b8152306004820152600160d01b909204600290810b900b6024830181905260448301526001600160801b03808c1660648401528a16608483015280519498509296506001600160a01b039091169350634f1eb3d89260a480830193928290030181600087803b1580156129d457600080fd5b505af11580156129e8573d6000803e3d6000fd5b505050506040513d60408110156129fe57600080fd5b5050600854600b54604080516309e3d67b60e31b8152306004820152600283810b810b60248301526301000000909304830b90920b60448301526001600160801b0380871660648401528516608483015280516001600160a01b0390931692634f1eb3d89260a48082019392918290030181600087803b158015612a8157600080fd5b505af1158015612a95573d6000803e3d6000fd5b505050506040513d6040811015612aab57600080fd5b5050600a54600954604080516370a0823160e01b815230600482018190529151612bd794600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612b1a57600080fd5b505afa158015612b2e573d6000803e3d6000fd5b505050506040513d6020811015612b4457600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612b9157600080fd5b505afa158015612ba5573d6000803e3d6000fd5b505050506040513d6020811015612bbb57600080fd5b5051604080518082019091528751815260208101886001611f71565b600b54600954604080516370a0823160e01b815230600482018190529151612cfb94600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612c3d57600080fd5b505afa158015612c51573d6000803e3d6000fd5b505050506040513d6020811015612c6757600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612cb457600080fd5b505afa158015612cc8573d6000803e3d6000fd5b505050506040513d6020811015612cde57600080fd5b505160408051808201825290880151815260208101886003611f71565b9091929394565b600a54600160d01b900460020b81565b3390565b6001600160a01b038316612d5b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614ac96024913960400191505060405180910390fd5b6001600160a01b038216612da05760405162461bcd60e51b81526004018080602001828103825260228152602001806149886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600a546000908190612e2990600160d01b8104600290810b91600160e81b9004900b613588565b50909250506001600160801b03821615612ede57600854600a546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612eb157600080fd5b505af1158015612ec5573d6000803e3d6000fd5b505050506040513d6040811015612edb57600080fd5b50505b600b54612ef990600281810b9163010000009004900b613588565b50909150506001600160801b03811615612fa757600854600b546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612f7a57600080fd5b505af1158015612f8e573d6000803e3d6000fd5b505050506040513d6040811015612fa457600080fd5b50505b9091565b600080612fb88585613588565b50509050612fe2612fdd612fca610c08565b611a396001600160801b03851687613776565b61408c565b95945050505050565b6000806001600160801b0387161561322d576008546040805163a34123a760e01b815260028c810b60048301528b900b60248201526001600160801b038a166044820152815160009384936001600160a01b039091169263a34123a7926064808301939282900301818787803b15801561306457600080fd5b505af1158015613078573d6000803e3d6000fd5b505050506040513d604081101561308e57600080fd5b50805160209091015190925090508582108015906130ac5750848110155b6130e3576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b6000876130f8576130f38361408c565b613101565b6001600160801b035b9050600088613118576131138361408c565b613121565b6001600160801b035b90506000826001600160801b0316118061314457506000816001600160801b0316115b1561322857600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b1580156131e457600080fd5b505af11580156131f8573d6000803e3d6000fd5b505050506040513d604081101561320e57600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b6001600160a01b03831661327e5760405162461bcd60e51b8152600401808060200182810382526025815260200180614aa46025913960400191505060405180910390fd5b6001600160a01b0382166132c35760405162461bcd60e51b81526004018080602001828103825260238152602001806149436023913960400191505060405180910390fd5b6132ce838383610f22565b61330b816040518060600160405280602681526020016149aa602691396001600160a01b0386166000908152602081905260409020549190613394565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461333a908261352a565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134235760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133e85781810151838201526020016133d0565b50505050905090810190601f1680156134155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000613439878786866140a3565b90506134578787838886600060200201518760016020020151614149565b50505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000061348b61431c565b14156134b857507f0000000000000000000000000000000000000000000000000000000000000000610bb9565b6135237f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614320565b9050610bb9565b600082820183811015610d88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b604080513060601b602080830191909152600285810b60e890811b60348501529085900b901b60378301528251808303601a018152603a83018085528151919092012060085463514ea4bf60e01b909252603e830181905292516000938493849391926001600160a01b039092169163514ea4bf91605e8082019260a092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d60a081101561364757600080fd5b5080516060820151608090920151909891975095509350505050565b60008082116136b9576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816136c257fe5b049392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610f22908490614382565b600a54600090610bd490600160d01b8104600290810b91600160e81b9004900b84612fab565b600b54600090610bd490600281810b9163010000009004900b84612fab565b60008261378557506000610bd4565b8282028284828161379257fe5b0414610d885760405162461bcd60e51b8152600401808060200182810382526021815260200180614a3a6021913960400191505060405180910390fd5b6001600160a01b0382166138145760405162461bcd60e51b8152600401808060200182810382526021815260200180614a836021913960400191505060405180910390fd5b61382082600083610f22565b61385d81604051806060016040528060228152602001614966602291396001600160a01b0385166000908152602081905260409020549190613394565b6001600160a01b0383166000908152602081905260409020556002546138839082614433565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008060008360020b126138e2578260020b6138ea565b8260020b6000035b9050620d89e8811115613928576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166139495770010000000000000000000000000000000061395b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561398f576ffff97272373d413259a46990580e213a0260801c5b60048216156139ae576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156139cd576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156139ec576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613a0b576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613a2a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613a49576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613a69576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613a89576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613aa9576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ac9576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613ae9576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613b09576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613b29576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613b49576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613b6a576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613b8a576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613ba9576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613bc6576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613be1578060001981613bdd57fe5b0490505b640100000000810615613bf5576001613bf8565b60005b60ff16602082901c0192505050919050565b6000808060001985870986860292508281109083900303905080613c405760008411613c3557600080fd5b508290049050610d88565b808411613c4c57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052612601908590614382565b6001600160a01b038216613d83576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613d8f60008383610f22565b600254613d9c908261352a565b6002556001600160a01b038216600090815260208190526040902054613dc2908261352a565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613e6b57600080fd5b505afa158015613e7f573d6000803e3d6000fd5b505050506040513d60e0811015613e9557600080fd5b50519050613eb581613ea6886138cb565b613eaf886138cb565b87614490565b9250925050935093915050565b6000613ecc613460565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613f6f5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d06022913960400191505060405180910390fd5b8360ff16601b1480613f8457508360ff16601c145b613fbf5760405162461bcd60e51b8152600401808060200182810382526022815260200180614a186022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561401b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612fe2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b60006001600160801b0382111561409f57fe5b5090565b600080600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156140f457600080fd5b505afa158015614108573d6000803e3d6000fd5b505050506040513d60e081101561411e57600080fd5b5051905061413f8161412f886138cb565b614138886138cb565b878761452c565b9695505050505050565b6001600160801b03841615614314576001600f60156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b0316633c8a7d8d308a8a8a8a60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561424357818101518382015260200161422b565b50505050905090810190601f1680156142705780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561429257600080fd5b505af11580156142a6573d6000803e3d6000fd5b505050506040513d60408110156142bc57600080fd5b50805160209091015190925090508382108015906142da5750828110155b614311576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b50505b505050505050565b4690565b600083838361432d61431c565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b60006143d7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145e49092919063ffffffff16565b805190915015610f22578080602001905160208110156143f657600080fd5b5051610f225760405162461bcd60e51b815260040180806020018281038252602a815260200180614aed602a913960400191505060405180910390fd5b60008282111561448a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080836001600160a01b0316856001600160a01b031611156144b1579293925b846001600160a01b0316866001600160a01b0316116144dc576144d58585856145fb565b9150614523565b836001600160a01b0316866001600160a01b03161015614515576145018685856145fb565b915061450e858785614664565b9050614523565b614520858585614664565b90505b94509492505050565b6000836001600160a01b0316856001600160a01b0316111561454c579293925b846001600160a01b0316866001600160a01b031611614577576145708585856146a7565b9050612fe2565b836001600160a01b0316866001600160a01b031610156145d957600061459e8786866146a7565b905060006145ad87898661470a565b9050806001600160801b0316826001600160801b0316106145ce57806145d0565b815b92505050612fe2565b61413f85858461470a565b60606145f38484600085614747565b949350505050565b6000826001600160a01b0316846001600160a01b0316111561461b579192915b836001600160a01b0316614654606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613c0a565b8161465b57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115614684579192915b6145f3826001600160801b03168585036001600160a01b0316600160601b613c0a565b6000826001600160a01b0316846001600160a01b031611156146c7579192915b60006146ea856001600160a01b0316856001600160a01b0316600160601b613c0a565b9050612fe261470584838888036001600160a01b0316613c0a565b6148a2565b6000826001600160a01b0316846001600160a01b0316111561472a579192915b6145f361470583600160601b8787036001600160a01b0316613c0a565b6060824710156147885760405162461bcd60e51b81526004018080602001828103825260268152602001806149f26026913960400191505060405180910390fd5b614791856148b8565b6147e2576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106148205780518252601f199092019160209182019101614801565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614882576040519150601f19603f3d011682016040523d82523d6000602084013e614887565b606091505b50915091506148978282866148be565b979650505050505050565b806001600160801b038116811461105157600080fd5b3b151590565b606083156148cd575081610d88565b8251156148dd5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156133e85781810151838201526020016133d0565b6040518060800160405280600490602082028036833750919291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a164736f6c6343000706000a756e69737761705633466163746f72792073686f756c64206265206e6f6e2d7a65726f"; + "0x608060405234801561001057600080fd5b506040516160a23803806160a28339818101604052602081101561003357600080fd5b5051600061003f6100f3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0381166100ce5760405162461bcd60e51b815260040180806020018281038252602381526020018061607f6023913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100f7565b3390565b615f79806101066000396000f3fe60806040523480156200001157600080fd5b5060043610620000945760003560e01c80638da5cb5b11620000635780638da5cb5b1462000246578063b7e1aae91462000250578063cabea7dc146200026c578063f2fde38b14620002ab5762000094565b80631b73ccc414620000995780635b5491821462000210578063686d59b0146200021a578063715018a6146200023a575b600080fd5b620001f4600480360360a0811015620000b157600080fd5b6001600160a01b03823581169260208101359091169162ffffff6040830135169190810190608081016060820135640100000000811115620000f257600080fd5b8201836020820111156200010557600080fd5b803590602001918460018302840111640100000000831117156200012857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156200017c57600080fd5b8201836020820111156200018f57600080fd5b80359060200191846001830284011164010000000083111715620001b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620002d4945050505050565b604080516001600160a01b039092168252519081900360200190f35b620001f462000a56565b620001f4600480360360208110156200023257600080fd5b503562000a65565b6200024462000a90565b005b620001f462000b60565b6200025a62000b6f565b60408051918252519081900360200190f35b620001f4600480360360608110156200028457600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff1662000b75565b6200024460048036036020811015620002c357600080fd5b50356001600160a01b031662000ba1565b6000620002e062000cc9565b6001600160a01b0316620002f362000b60565b6001600160a01b0316146200034f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b846001600160a01b0316866001600160a01b03161415620003b7576040805162461bcd60e51b815260206004820152601760248201527f53463a204944454e544943414c5f414444524553534553000000000000000000604482015290519081900360640190fd5b600080866001600160a01b0316886001600160a01b031610620003dc578688620003df565b87875b90925090506001600160a01b03821662000440576040805162461bcd60e51b815260206004820152601060248201527f53463a205a45524f5f4144445245535300000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382811660009081526002602090815260408083208585168452825280832062ffffff8b1684529091529020541615620004c8576040805162461bcd60e51b815260206004820152601560248201527f53463a2048595045525649534f525f4558495354530000000000000000000000604482015290519081900360640190fd5b600154604080516322afcccb60e01b815262ffffff8916600482015290516000926001600160a01b0316916322afcccb916024808301926020929190829003018186803b1580156200051957600080fd5b505afa1580156200052e573d6000803e3d6000fd5b505050506040513d60208110156200054557600080fd5b50519050600281900b620005a0576040805162461bcd60e51b815260206004820152601160248201527f53463a20494e434f52524543545f464545000000000000000000000000000000604482015290519081900360640190fd5b60015460408051630b4c774160e11b81526001600160a01b038681166004830152858116602483015262ffffff8b16604483015291516000939290921691631698ee8291606480820192602092909190829003018186803b1580156200060557600080fd5b505afa1580156200061a573d6000803e3d6000fd5b505050506040513d60208110156200063157600080fd5b505190506001600160a01b038116620006d8576001546040805163a167129560e01b81526001600160a01b038781166004830152868116602483015262ffffff8c1660448301529151919092169163a16712959160648083019260209291908290030181600087803b158015620006a757600080fd5b505af1158015620006bc573d6000803e3d6000fd5b505050506040513d6020811015620006d357600080fd5b505190505b8383898460405160200180856001600160a01b031660601b8152601401846001600160a01b031660601b81526014018362ffffff1660e81b81526003018260020b60e81b815260030194505050505060405160208183030381529060405280519060200120816200074862000b60565b8989604051620007589062000ccd565b80856001600160a01b03168152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620007b65781810151838201526020016200079c565b50505050905090810190601f168015620007e45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101562000819578181015183820152602001620007ff565b50505050905090810190601f168015620008475780820380516001836020036101000a031916815260200191505b5096505050505050508190604051809103906000f590508015801562000871573d6000803e3d6000fd5b5094508460026000866001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008a62ffffff1662ffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460026000856001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060008a62ffffff1662ffffff16815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506003859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055507f16682fe0a2ffae99e47dc4431cb60eb5afccc35b1d4a4d0184d4516ed6031bbd84848a8860038054905060405180866001600160a01b03168152602001856001600160a01b031681526020018462ffffff168152602001836001600160a01b031681526020018281526020019550505050505060405180910390a15050505095945050505050565b6001546001600160a01b031681565b6003818154811062000a7657600080fd5b6000918252602090912001546001600160a01b0316905081565b62000a9a62000cc9565b6001600160a01b031662000aad62000b60565b6001600160a01b03161462000b09576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b031690565b60035490565b60026020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b62000bab62000cc9565b6001600160a01b031662000bbe62000b60565b6001600160a01b03161462000c1a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811662000c615760405162461bcd60e51b815260040180806020018281038252602681526020018062005f476026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3390565b61526b8062000cdc8339019056fe6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200526b3803806200526b833981810160405260808110156200005d57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200008957600080fd5b9083019060208201858111156200009f57600080fd5b8251640100000000811182820188101715620000ba57600080fd5b82525081516020918201929091019080838360005b83811015620000e9578181015183820152602001620000cf565b50505050905090810190601f168015620001175780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013b57600080fd5b9083019060208201858111156200015157600080fd5b82516401000000008111828201881017156200016c57600080fd5b82525081516020918201929091019080838360005b838110156200019b57818101518382015260200162000181565b50505050905090810190601f168015620001c95780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b8152508484816003908051906020019062000206929190620005f8565b5080516200021c906004906020840190620005f8565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200027562000590565b60a0526200028581848462000594565b60805261010052505060016007555050506001600160a01b038416620002aa57600080fd5b6001600160a01b038316620002be57600080fd5b600880546001600160a01b0319166001600160a01b03868116919091179182905560408051630dfe168160e01b815290519290911691630dfe168191600480820192602092909190829003018186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d60208110156200034757600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b158015620003a357600080fd5b505afa158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617905560095416620003fb57600080fd5b600a546001600160a01b03166200041157600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d60208110156200048c57600080fd5b5051600a805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055600854604080516334324e9f60e21b815290516001600160a01b039092169163d0c93a7c91600480820192602092909190829003018186803b158015620004f657600080fd5b505afa1580156200050b573d6000803e3d6000fd5b505050506040513d60208110156200052257600080fd5b5051600a805460029290920b62ffffff16600160b81b0262ffffff60b81b199092169190911790555050600b80546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600e55600019600c819055600d55620006a4565b4690565b6000838383620005a362000590565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200063057600085556200067b565b82601f106200064b57805160ff19168380011785556200067b565b828001600101855582156200067b579182015b828111156200067b5782518255916020019190600101906200065e565b50620006899291506200068d565b5090565b5b808211156200068957600081556001016200068e565b60805160a05160c05160e0516101005161012051614b7d620006ee600039806126ab5250806134f25250806135345250806135135250806134995250806134c95250614b7d6000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c806386a290811161019c578063c4a7761e116100ee578063d505accf11610097578063f2fde38b11610071578063f2fde38b14610a24578063f69e204614610a4a578063fa08274314610acd5761030a565b8063d505accf14610985578063dd62ed3e146109d6578063ddca3f4314610a045761030a565b8063d21220a7116100c8578063d21220a7146108f9578063d2eabcfc14610901578063d3487997146109095761030a565b8063c4a7761e146108e1578063c5241e29146108e9578063d0c93a7c146108f15761030a565b8063a049de6b11610150578063a9059cbb1161012a578063a9059cbb146108a5578063aaf5eb68146108d1578063b1a3d533146108d95761030a565b8063a049de6b146107c5578063a457c2d7146107f5578063a8559872146108215761030a565b80638da5cb5b116101815780638da5cb5b146107445780638e3c92e41461074c57806395d89b41146107bd5761030a565b806386a2908114610734578063888a91341461073c5761030a565b8063313ce56711610260578063648cab85116102095780637ecebe00116101e35780637ecebe001461063b578063854cff2f1461066157806385919c5d146106875761030a565b8063648cab85146106055780636d90a39c1461060d57806370a08231146106155761030a565b806349e8f1c21161023a57806349e8f1c21461059e5780634d461fbb146105f557806351e87af7146105fd5761030a565b8063313ce5671461054c5780633644e5151461056a57806339509351146105725761030a565b806316f0115b116102c257806323b872dd1161029c57806323b872dd146104b55780632527aa1d146104eb5780632ab4d052146105445761030a565b806316f0115b1461041757806318160ddd1461041f5780631bead8f3146104395761030a565b8063095ea7b3116102f3578063095ea7b3146103ab5780630dfe1681146103eb5780630f35bcac1461040f5761030a565b8063065e53601461030f57806306fdde031461032e575b600080fd5b610317610ad5565b6040805160029290920b8252519081900360200190f35b610336610b4e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360408110156103c157600080fd5b506001600160a01b038135169060200135610be5565b604080519115158252519081900360200190f35b6103f3610c03565b604080516001600160a01b039092168252519081900360200190f35b610317610c12565b6103f3610c22565b610427610c31565b60408051918252519081900360200190f35b61048f600480360360a081101561044f57600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610c379350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103d7600480360360608110156104cb57600080fd5b506001600160a01b03813581169160208101359091169060400135610d34565b6105426004803603608081101561050157600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610dbc9350505050565b005b610427610f54565b610554610f5a565b6040805160ff9092168252519081900360200190f35b610427610f63565b6103d76004803603604081101561058857600080fd5b506001600160a01b038135169060200135610f72565b610542600480360360808110156105b457600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610fc09350505050565b61042761103f565b610317611045565b61042761104e565b6103d7611054565b6104276004803603602081101561062b57600080fd5b50356001600160a01b0316611064565b6104276004803603602081101561065157600080fd5b50356001600160a01b0316611083565b6105426004803603602081101561067757600080fd5b50356001600160a01b03166110a4565b61054260048036036101a081101561069e57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506111269350505050565b6103f361183a565b610317611849565b6103f3611859565b610427600480360361010081101561076357600080fd5b60408051608081810183528435946020810135946001600160a01b039482013585169460608301351693908201926101008301919080840190600490839083908082843760009201919091525091945061186f9350505050565b610336611ded565b6107cd611e4e565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103d76004803603604081101561080b57600080fd5b506001600160a01b038135169060200135611ed4565b61088c600480360360e081101561083757600080fd5b60408051608081810183528435946001600160a01b036020820135811695948201351693810192909160e08301919060608401906004908390839080828437600092019190915250919450611f3c9350505050565b6040805192835260208301919091528051918290030190f35b6103d7600480360360408110156108bb57600080fd5b506001600160a01b0381351690602001356122dd565b6104276122f1565b610542612304565b61088c612393565b6105426124a3565b610317612515565b6103f3612525565b6107cd612534565b6105426004803603606081101561091f57600080fd5b81359160208101359181019060608101604082013564010000000081111561094657600080fd5b82018360208201111561095857600080fd5b8035906020019184600183028401116401000000008311171561097a57600080fd5b509092509050612590565b610542600480360360e081101561099b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561263c565b610427600480360360408110156109ec57600080fd5b506001600160a01b03813581169160200135166127f3565b610a0c61281e565b6040805162ffffff9092168252519081900360200190f35b61054260048036036020811015610a3a57600080fd5b50356001600160a01b0316612830565b610a526128d7565b60405180866001600160801b03168152602001856001600160801b03168152602001846001600160801b03168152602001836001600160801b0316815260200182600460200280838360005b83811015610ab6578181015183820152602001610a9e565b505050509050019550505050505060405180910390f35b610317612d37565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015610b1a57600080fd5b505afa158015610b2e573d6000803e3d6000fd5b505050506040513d60e0811015610b4457600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050505090505b90565b6000610bf9610bf2612d47565b8484612d4b565b5060015b92915050565b6009546001600160a01b031681565b600b546301000000900460020b81565b6008546001600160a01b031681565b60025490565b600080600080600b60069054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610ca5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b610cad612e37565b5050600a54610cf090600160d01b8104600290810b91600160e81b9004900b610cd782828b612fe0565b3060008a815b60200201518b60015b6020020151613020565b600b549195509350610d2990600281810b9163010000009004900b610d1682828b612fe0565b3060008a600260200201518b6003610ce6565b949793965094505050565b6000610d4184848461326e565b610db184610d4d612d47565b610dac85604051806060016040528060288152602001614a90602891396001600160a01b038a16600090815260016020526040812090610d8b612d47565b6001600160a01b0316815260208101919091526040016000205491906133c9565b612d4b565b5060015b9392505050565b600b54600160301b90046001600160a01b03163314610e0f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a54610f4f90600160d01b8104600290810b91600160e81b9004900b3086158015610e39575085155b610e435786610ebb565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50515b87158015610ec7575086155b610ed15786610f49565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f1c57600080fd5b505afa158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b50515b86613460565b505050565b600e5481565b60055460ff1690565b6000610f6d613495565b905090565b6000610bf9610f7f612d47565b84610dac8560016000610f90612d47565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061355f565b600b54600160301b90046001600160a01b03163314611013576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600b54610f4f90600281810b9163010000009004900b3086158015610e3957508515610e435786610ebb565b600d5481565b600b5460020b81565b600c5481565b600f54600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610bfd906135b9565b600b54600160301b90046001600160a01b031633146110f7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6002600754141561117e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600b54600160301b90046001600160a01b031633146111d6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156112085750600a54600160b81b9004600290810b810b9088900b8161120257fe5b0760020b155b80156112315750600a54600160b81b9004600290810b810b9087900b8161122b57fe5b0760020b155b61123a57600080fd5b8360020b8560020b12801561126c5750600a54600160b81b9004600290810b810b9086900b8161126657fe5b0760020b155b80156112955750600a54600160b81b9004600290810b810b9085900b8161128f57fe5b0760020b155b61129e57600080fd5b8560020b8460020b1415806112b957508660020b8560020b14155b6112c257600080fd5b6001600160a01b0383166112d557600080fd5b6000806112e0612e37565b600a549193509150600090819061130c90600160d01b8104600290810b91600160e81b9004900b6135bd565b600b546001600160801b0392831695509116925060009150819061133e90600281810b9163010000009004900b6135bd565b6001600160801b0391821694501691506000905061135c838661355f565b9050600061136a838661355f565b600a5490915061138f90600160d01b8104600290810b91600160e81b9004900b6135bd565b5050600b549098506113af90600281810b9163010000009004900b6135bd565b5050600a549097506113e590600160d01b8104600290810b91600160e81b9004900b8a3060018e600060200201518f6001610ce6565b5050600b5460408a015161141391600281810b926301000000909204900b908a9030906001908f6003610ce6565b5050811561143d5761143d8b61142a84600a613698565b6009546001600160a01b031691906136ff565b8015611465576114658b61145283600a613698565b600a546001600160a01b031691906136ff565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d61148e610ad5565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114d957600080fd5b505afa1580156114ed573d6000803e3d6000fd5b505050506040513d602081101561150357600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b50518585611586610c31565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a1600060405180604001604052808c6000600481106115d757fe5b602002015181526020018c6001600481106115ee57fe5b602002015181525090508f600a601a6101000a81548162ffffff021916908360020b62ffffff1602179055508e600a601d6101000a81548162ffffff021916908360020b62ffffff160217905550611739600a601a9054906101000a900460020b600a601d9054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116c257600080fd5b505afa1580156116d6573d6000803e3d6000fd5b505050506040513d60208110156116ec57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f1c57600080fd5b604080518082018252908c01518152602081018c6003602002015181525090508d600b60006101000a81548162ffffff021916908360020b62ffffff1602179055508c600b60036101000a81548162ffffff021916908360020b62ffffff160217905550611823600b60009054906101000a900460020b600b60039054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116c257600080fd5b505060016007555050505050505050505050505050565b600f546001600160a01b031681565b600a54600160e81b900460020b81565b600b54600160301b90046001600160a01b031681565b6000600260075414156118c9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755851515806118dc5750600085115b6118e557600080fd5b600c5486111580156118f95750600d548511155b61190257600080fd5b6001600160a01b0384161580159061192357506001600160a01b0384163014155b611959576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600f546001600160a01b0316331461199e576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b6119a6612e37565b505060006119ba6119b5610ad5565b613766565b90506000611a036119d46001600160a01b03841680613aa5565b6ec097ce7bc90715b34b9f10000000007801000000000000000000000000000000000000000000000000613afe565b9050600080611a10612393565b9092509050611a42611a3b6ec097ce7bc90715b34b9f1000000000611a358d87613aa5565b90613698565b8a9061355f565b94508915611a6257600954611a62906001600160a01b031688308d613bad565b8815611a8057600a54611a80906001600160a01b031688308c613bad565b6000611a8a610c31565b90508015611d37576000611ab16ec097ce7bc90715b34b9f1000000000611a358688613aa5565b9050611aca611ac0828561355f565b611a358985613aa5565b600f54909750600160a01b900460ff1615611d3557600a54600954604080516370a0823160e01b815230600482018190529151611c1194600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d6020811015611b7657600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611bc357600080fd5b505afa158015611bd7573d6000803e3d6000fd5b505050506040513d6020811015611bed57600080fd5b5051604080518082019091528e518152602081018f60015b60200201519052613460565b600b54600954604080516370a0823160e01b815230600482018190529151611d3594600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611c7757600080fd5b505afa158015611c8b573d6000803e3d6000fd5b505050506040513d6020811015611ca157600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d6020811015611d1857600080fd5b5051604080518082018252908f01518152602081018f6003611c05565b505b611d418987613c1c565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600e541580611da25750600e548111155b611dd9576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bda5780601f10610baf57610100808354040283529160200191610bda565b600b5460009081908190819081908190611e7690600281810b9163010000009004900b6135bd565b600b549295509093509150611e9a90600281810b9163010000009004900b85613d0c565b9095509350611eb2856001600160801b03841661355f565b9450611ec7846001600160801b03831661355f565b9350829550505050909192565b6000610bf9611ee1612d47565b84610dac85604051806060016040528060258152602001614b4c6025913960016000611f0b612d47565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906133c9565b60008060026007541415611f97576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585611fee576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03851661202e576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b612036612e37565b5050600a54600090819061206d90600160d01b8104600290810b91600160e81b9004900b6120638b613db6565b8a60008a81610cdd565b600b54919350915060009081906120a990600281810b9163010000009004900b6120968d613ddc565b8c60008c600260200201518d6003610ce6565b9150915060006121526120ba610c31565b611a358d600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d602081101561214a57600080fd5b505190613aa5565b905060006121c7612161610c31565b611a358e600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561212057600080fd5b905081156121e6576009546121e6906001600160a01b03168c846136ff565b801561220357600a54612203906001600160a01b03168c836136ff565b61221782612211888761355f565b9061355f565b975061222781612211878661355f565b96506001600160a01b038a16331461226c576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b6122768a8d613dfb565b604080518d8152602081018a905280820189905290516001600160a01b03808e1692908d16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a3505050505050600160078190555094509492505050565b6000610bf96122ea612d47565b848461326e565b6ec097ce7bc90715b34b9f100000000081565b600b54600160301b90046001600160a01b03163314612357576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000806000806123a1612534565b92509250506000806123b1611e4e565b600954604080516370a0823160e01b8152306004820152905193965091945061243f935085926122119289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561240d57600080fd5b505afa158015612421573d6000803e3d6000fd5b505050506040513d602081101561243757600080fd5b50519061355f565b600a54604080516370a0823160e01b815230600482015290519298506124999284926122119288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561240d57600080fd5b9450505050509091565b600b54600160301b90046001600160a01b031633146124f6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a54600160b81b900460020b81565b600a546001600160a01b031681565b600080600080600080612565600a601a9054906101000a900460020b600a601d9054906101000a900460020b6135bd565b600a549295509093509150611e9a90600160d01b8104600290810b91600160e81b9004900b85613d0c565b6008546001600160a01b031633146125a757600080fd5b600f547501000000000000000000000000000000000000000000900460ff1615156001146125d457600080fd5b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055831561261957600954612619906001600160a01b031633866136ff565b821561263657600a54612636906001600160a01b031633856136ff565b50505050565b83421115612691576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906126da906135b9565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061274382613ef7565b9050600061275382878787613f43565b9050896001600160a01b0316816001600160a01b0316146127bb576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206127dc906140b8565b6127e78a8a8a612d4b565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a54600160a01b900462ffffff1681565b600b54600160301b90046001600160a01b03163314612883576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b03811661289657600080fd5b600b80546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b6000806000806128e5614959565b600b54600160301b90046001600160a01b03163314612938576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b612940612e37565b5050600a5461296490600160d01b8104600290810b91600160e81b9004900b6135bd565b600b5491975095506129859150600281810b9163010000009004900b6135bd565b600854600a54604080516309e3d67b60e31b8152306004820152600160d01b909204600290810b900b6024830181905260448301526001600160801b03808c1660648401528a16608483015280519498509296506001600160a01b039091169350634f1eb3d89260a480830193928290030181600087803b158015612a0957600080fd5b505af1158015612a1d573d6000803e3d6000fd5b505050506040513d6040811015612a3357600080fd5b5050600854600b54604080516309e3d67b60e31b8152306004820152600283810b810b60248301526301000000909304830b90920b60448301526001600160801b0380871660648401528516608483015280516001600160a01b0390931692634f1eb3d89260a48082019392918290030181600087803b158015612ab657600080fd5b505af1158015612aca573d6000803e3d6000fd5b505050506040513d6040811015612ae057600080fd5b5050600a54600954604080516370a0823160e01b815230600482018190529151612c0c94600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612b4f57600080fd5b505afa158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612bc657600080fd5b505afa158015612bda573d6000803e3d6000fd5b505050506040513d6020811015612bf057600080fd5b5051604080518082019091528751815260208101886001611c05565b600b54600954604080516370a0823160e01b815230600482018190529151612d3094600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d6020811015612c9c57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612ce957600080fd5b505afa158015612cfd573d6000803e3d6000fd5b505050506040513d6020811015612d1357600080fd5b505160408051808201825290880151815260208101886003611c05565b9091929394565b600a54600160d01b900460020b81565b3390565b6001600160a01b038316612d905760405162461bcd60e51b8152600401808060200182810382526024815260200180614afe6024913960400191505060405180910390fd5b6001600160a01b038216612dd55760405162461bcd60e51b81526004018080602001828103825260228152602001806149bd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600a546000908190612e5e90600160d01b8104600290810b91600160e81b9004900b6135bd565b50909250506001600160801b03821615612f1357600854600a546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612ee657600080fd5b505af1158015612efa573d6000803e3d6000fd5b505050506040513d6040811015612f1057600080fd5b50505b600b54612f2e90600281810b9163010000009004900b6135bd565b50909150506001600160801b03811615612fdc57600854600b546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612faf57600080fd5b505af1158015612fc3573d6000803e3d6000fd5b505050506040513d6040811015612fd957600080fd5b50505b9091565b600080612fed85856135bd565b50509050613017613012612fff610c31565b611a356001600160801b03851687613aa5565b6140c1565b95945050505050565b6000806001600160801b03871615613262576008546040805163a34123a760e01b815260028c810b60048301528b900b60248201526001600160801b038a166044820152815160009384936001600160a01b039091169263a34123a7926064808301939282900301818787803b15801561309957600080fd5b505af11580156130ad573d6000803e3d6000fd5b505050506040513d60408110156130c357600080fd5b50805160209091015190925090508582108015906130e15750848110155b613118576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b60008761312d57613128836140c1565b613136565b6001600160801b035b905060008861314d57613148836140c1565b613156565b6001600160801b035b90506000826001600160801b0316118061317957506000816001600160801b0316115b1561325d57600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b15801561321957600080fd5b505af115801561322d573d6000803e3d6000fd5b505050506040513d604081101561324357600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b6001600160a01b0383166132b35760405162461bcd60e51b8152600401808060200182810382526025815260200180614ad96025913960400191505060405180910390fd5b6001600160a01b0382166132f85760405162461bcd60e51b81526004018080602001828103825260238152602001806149786023913960400191505060405180910390fd5b613303838383610f4f565b613340816040518060600160405280602681526020016149df602691396001600160a01b03861660009081526020819052604090205491906133c9565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461336f908261355f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134585760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561341d578181015183820152602001613405565b50505050905090810190601f16801561344a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061346e878786866140d8565b905061348c878783888660006020020151876001602002015161417e565b50505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006134c0614351565b14156134ed57507f0000000000000000000000000000000000000000000000000000000000000000610be2565b6135587f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614355565b9050610be2565b600082820183811015610db5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b604080513060601b602080830191909152600285810b60e890811b60348501529085900b901b60378301528251808303601a018152603a83018085528151919092012060085463514ea4bf60e01b909252603e830181905292516000938493849391926001600160a01b039092169163514ea4bf91605e8082019260a092909190829003018186803b15801561365257600080fd5b505afa158015613666573d6000803e3d6000fd5b505050506040513d60a081101561367c57600080fd5b5080516060820151608090920151909891975095509350505050565b60008082116136ee576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816136f757fe5b049392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610f4f9084906143b7565b60008060008360020b1261377d578260020b613785565b8260020b6000035b9050620d89e88111156137c3576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166137e4577001000000000000000000000000000000006137f6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561382a576ffff97272373d413259a46990580e213a0260801c5b6004821615613849576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613868576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613887576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156138a6576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156138c5576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156138e4576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613904576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613924576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613944576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613964576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613984576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156139a4576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156139c4576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156139e4576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613a05576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613a25576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613a44576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613a61576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613a7c578060001981613a7857fe5b0490505b640100000000810615613a90576001613a93565b60005b60ff16602082901c0192505050919050565b600082613ab457506000610bfd565b82820282848281613ac157fe5b0414610db55760405162461bcd60e51b8152600401808060200182810382526021815260200180614a6f6021913960400191505060405180910390fd5b6000808060001985870986860292508281109083900303905080613b345760008411613b2957600080fd5b508290049050610db5565b808411613b4057600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526126369085906143b7565b6001600160a01b038216613c77576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613c8360008383610f4f565b600254613c90908261355f565b6002556001600160a01b038216600090815260208190526040902054613cb6908261355f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613d5f57600080fd5b505afa158015613d73573d6000803e3d6000fd5b505050506040513d60e0811015613d8957600080fd5b50519050613da981613d9a88613766565b613da388613766565b87614468565b9250925050935093915050565b600a54600090610bfd90600160d01b8104600290810b91600160e81b9004900b84612fe0565b600b54600090610bfd90600281810b9163010000009004900b84612fe0565b6001600160a01b038216613e405760405162461bcd60e51b8152600401808060200182810382526021815260200180614ab86021913960400191505060405180910390fd5b613e4c82600083610f4f565b613e898160405180606001604052806022815260200161499b602291396001600160a01b03851660009081526020819052604090205491906133c9565b6001600160a01b038316600090815260208190526040902055600254613eaf9082614504565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000613f01613495565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fa45760405162461bcd60e51b8152600401808060200182810382526022815260200180614a056022913960400191505060405180910390fd5b8360ff16601b1480613fb957508360ff16601c145b613ff45760405162461bcd60e51b8152600401808060200182810382526022815260200180614a4d6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614050573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613017576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b60006001600160801b038211156140d457fe5b5090565b600080600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561412957600080fd5b505afa15801561413d573d6000803e3d6000fd5b505050506040513d60e081101561415357600080fd5b505190506141748161416488613766565b61416d88613766565b8787614561565b9695505050505050565b6001600160801b03841615614349576001600f60156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b0316633c8a7d8d308a8a8a8a60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614278578181015183820152602001614260565b50505050905090810190601f1680156142a55780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156142c757600080fd5b505af11580156142db573d6000803e3d6000fd5b505050506040513d60408110156142f157600080fd5b508051602090910151909250905083821080159061430f5750828110155b614346576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b50505b505050505050565b4690565b6000838383614362614351565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b600061440c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146199092919063ffffffff16565b805190915015610f4f5780806020019051602081101561442b57600080fd5b5051610f4f5760405162461bcd60e51b815260040180806020018281038252602a815260200180614b22602a913960400191505060405180910390fd5b600080836001600160a01b0316856001600160a01b03161115614489579293925b846001600160a01b0316866001600160a01b0316116144b4576144ad858585614630565b91506144fb565b836001600160a01b0316866001600160a01b031610156144ed576144d9868585614630565b91506144e6858785614699565b90506144fb565b6144f8858585614699565b90505b94509492505050565b60008282111561455b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000836001600160a01b0316856001600160a01b03161115614581579293925b846001600160a01b0316866001600160a01b0316116145ac576145a58585856146dc565b9050613017565b836001600160a01b0316866001600160a01b0316101561460e5760006145d38786866146dc565b905060006145e287898661473f565b9050806001600160801b0316826001600160801b0316106146035780614605565b815b92505050613017565b61417485858461473f565b6060614628848460008561477c565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614650579192915b836001600160a01b0316614689606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613afe565b8161469057fe5b04949350505050565b6000826001600160a01b0316846001600160a01b031611156146b9579192915b614628826001600160801b03168585036001600160a01b0316600160601b613afe565b6000826001600160a01b0316846001600160a01b031611156146fc579192915b600061471f856001600160a01b0316856001600160a01b0316600160601b613afe565b905061301761473a84838888036001600160a01b0316613afe565b6148d7565b6000826001600160a01b0316846001600160a01b0316111561475f579192915b61462861473a83600160601b8787036001600160a01b0316613afe565b6060824710156147bd5760405162461bcd60e51b8152600401808060200182810382526026815260200180614a276026913960400191505060405180910390fd5b6147c6856148ed565b614817576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106148555780518252601f199092019160209182019101614836565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146148b7576040519150601f19603f3d011682016040523d82523d6000602084013e6148bc565b606091505b50915091506148cc8282866148f3565b979650505050505050565b806001600160801b038116811461107e57600080fd5b3b151590565b60608315614902575081610db5565b8251156149125782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561341d578181015183820152602001613405565b6040518060800160405280600490602082028036833750919291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a164736f6c6343000706000a756e69737761705633466163746f72792073686f756c64206265206e6f6e2d7a65726f"; export class HypervisorFactory__factory extends ContractFactory { constructor( diff --git a/typechain/factories/Hypervisor__factory.ts b/typechain/factories/Hypervisor__factory.ts index e5cec63..6075811 100644 --- a/typechain/factories/Hypervisor__factory.ts +++ b/typechain/factories/Hypervisor__factory.ts @@ -1061,14 +1061,9 @@ const _abi = [ type: "address", }, { - internalType: "uint256", - name: "amount0Min", - type: "uint256", - }, - { - internalType: "uint256", - name: "amount1Min", - type: "uint256", + internalType: "uint256[4]", + name: "minAmounts", + type: "uint256[4]", }, ], name: "withdraw", @@ -1090,7 +1085,7 @@ const _abi = [ ]; const _bytecode = - "0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200523638038062005236833981810160405260808110156200005d57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200008957600080fd5b9083019060208201858111156200009f57600080fd5b8251640100000000811182820188101715620000ba57600080fd5b82525081516020918201929091019080838360005b83811015620000e9578181015183820152602001620000cf565b50505050905090810190601f168015620001175780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013b57600080fd5b9083019060208201858111156200015157600080fd5b82516401000000008111828201881017156200016c57600080fd5b82525081516020918201929091019080838360005b838110156200019b57818101518382015260200162000181565b50505050905090810190601f168015620001c95780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b8152508484816003908051906020019062000206929190620005f8565b5080516200021c906004906020840190620005f8565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200027562000590565b60a0526200028581848462000594565b60805261010052505060016007555050506001600160a01b038416620002aa57600080fd5b6001600160a01b038316620002be57600080fd5b600880546001600160a01b0319166001600160a01b03868116919091179182905560408051630dfe168160e01b815290519290911691630dfe168191600480820192602092909190829003018186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d60208110156200034757600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b158015620003a357600080fd5b505afa158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617905560095416620003fb57600080fd5b600a546001600160a01b03166200041157600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d60208110156200048c57600080fd5b5051600a805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055600854604080516334324e9f60e21b815290516001600160a01b039092169163d0c93a7c91600480820192602092909190829003018186803b158015620004f657600080fd5b505afa1580156200050b573d6000803e3d6000fd5b505050506040513d60208110156200052257600080fd5b5051600a805460029290920b62ffffff16600160b81b0262ffffff60b81b199092169190911790555050600b80546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600e55600019600c819055600d55620006a4565b4690565b6000838383620005a362000590565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200063057600085556200067b565b82601f106200064b57805160ff19168380011785556200067b565b828001600101855582156200067b579182015b828111156200067b5782518255916020019190600101906200065e565b50620006899291506200068d565b5090565b5b808211156200068957600081556001016200068e565b60805160a05160c05160e0516101005161012051614b48620006ee600039806126765250806134bd5250806134ff5250806134de5250806134645250806134945250614b486000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c806386a290811161019c578063c4a7761e116100ee578063d505accf11610097578063f2fde38b11610071578063f2fde38b146109fb578063f69e204614610a21578063fa08274314610aa45761030a565b8063d505accf1461095c578063dd62ed3e146109ad578063ddca3f43146109db5761030a565b8063d21220a7116100c8578063d21220a7146108d0578063d2eabcfc146108d8578063d3487997146108e05761030a565b8063c4a7761e146108b8578063c5241e29146108c0578063d0c93a7c146108c85761030a565b806395d89b4111610150578063a9059cbb1161012a578063a9059cbb1461087c578063aaf5eb68146108a8578063b1a3d533146108b05761030a565b806395d89b4114610818578063a049de6b14610820578063a457c2d7146108505761030a565b80638d2e63b8116101815780638d2e63b8146107445780638da5cb5b1461079f5780638e3c92e4146107a75761030a565b806386a2908114610734578063888a91341461073c5761030a565b8063313ce56711610260578063648cab85116102095780637ecebe00116101e35780637ecebe001461063b578063854cff2f1461066157806385919c5d146106875761030a565b8063648cab85146106055780636d90a39c1461060d57806370a08231146106155761030a565b806349e8f1c21161023a57806349e8f1c21461059e5780634d461fbb146105f557806351e87af7146105fd5761030a565b8063313ce5671461054c5780633644e5151461056a57806339509351146105725761030a565b806316f0115b116102c257806323b872dd1161029c57806323b872dd146104b55780632527aa1d146104eb5780632ab4d052146105445761030a565b806316f0115b1461041757806318160ddd1461041f5780631bead8f3146104395761030a565b8063095ea7b3116102f3578063095ea7b3146103ab5780630dfe1681146103eb5780630f35bcac1461040f5761030a565b8063065e53601461030f57806306fdde031461032e575b600080fd5b610317610aac565b6040805160029290920b8252519081900360200190f35b610336610b25565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360408110156103c157600080fd5b506001600160a01b038135169060200135610bbc565b604080519115158252519081900360200190f35b6103f3610bda565b604080516001600160a01b039092168252519081900360200190f35b610317610be9565b6103f3610bf9565b610427610c08565b60408051918252519081900360200190f35b61048f600480360360a081101561044f57600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610c0e9350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103d7600480360360608110156104cb57600080fd5b506001600160a01b03813581169160208101359091169060400135610d07565b6105426004803603608081101561050157600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610d8f9350505050565b005b610427610f27565b610554610f2d565b6040805160ff9092168252519081900360200190f35b610427610f36565b6103d76004803603604081101561058857600080fd5b506001600160a01b038135169060200135610f45565b610542600480360360808110156105b457600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610f939350505050565b610427611012565b610317611018565b610427611021565b6103d7611027565b6104276004803603602081101561062b57600080fd5b50356001600160a01b0316611037565b6104276004803603602081101561065157600080fd5b50356001600160a01b0316611056565b6105426004803603602081101561067757600080fd5b50356001600160a01b0316611077565b61054260048036036101a081101561069e57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506110f99350505050565b6103f361180d565b61031761181c565b610786600480360360a081101561075a57600080fd5b508035906001600160a01b0360208201358116916040810135909116906060810135906080013561182c565b6040805192835260208301919091528051918290030190f35b6103f3611bcb565b61042760048036036101008110156107be57600080fd5b60408051608081810183528435946020810135946001600160a01b0394820135851694606083013516939082019261010083019190808401906004908390839080828437600092019190915250919450611be19350505050565b610336612159565b6108286121ba565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103d76004803603604081101561086657600080fd5b506001600160a01b038135169060200135612240565b6103d76004803603604081101561089257600080fd5b506001600160a01b0381351690602001356122a8565b6104276122bc565b6105426122cf565b61078661235e565b61054261246e565b6103176124e0565b6103f36124f0565b6108286124ff565b610542600480360360608110156108f657600080fd5b81359160208101359181019060608101604082013564010000000081111561091d57600080fd5b82018360208201111561092f57600080fd5b8035906020019184600183028401116401000000008311171561095157600080fd5b50909250905061255b565b610542600480360360e081101561097257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612607565b610427600480360360408110156109c357600080fd5b506001600160a01b03813581169160200135166127be565b6109e36127e9565b6040805162ffffff9092168252519081900360200190f35b61054260048036036020811015610a1157600080fd5b50356001600160a01b03166127fb565b610a296128a2565b60405180866001600160801b03168152602001856001600160801b03168152602001846001600160801b03168152602001836001600160801b0316815260200182600460200280838360005b83811015610a8d578181015183820152602001610a75565b505050509050019550505050505060405180910390f35b610317612d02565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015610af157600080fd5b505afa158015610b05573d6000803e3d6000fd5b505050506040513d60e0811015610b1b57600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb15780601f10610b8657610100808354040283529160200191610bb1565b820191906000526020600020905b815481529060010190602001808311610b9457829003601f168201915b505050505090505b90565b6000610bd0610bc9612d12565b8484612d16565b5060015b92915050565b6009546001600160a01b031681565b600b546301000000900460020b81565b6008546001600160a01b031681565b60025490565b600080600080600b60069054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610c7c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b610c84612e02565b5050600a54610cc390600160d01b8104600290810b91600160e81b9004900b610cae82828b612fab565b885130906000908b60015b6020020151612feb565b600b549195509350610cfc90600281810b9163010000009004900b610ce982828b612fab565b3060008a600260200201518b6003610cb9565b949793965094505050565b6000610d14848484613239565b610d8484610d20612d12565b610d7f85604051806060016040528060288152602001614a5b602891396001600160a01b038a16600090815260016020526040812090610d5e612d12565b6001600160a01b031681526020810191909152604001600020549190613394565b612d16565b5060015b9392505050565b600b54600160301b90046001600160a01b03163314610de2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a54610f2290600160d01b8104600290810b91600160e81b9004900b3086158015610e0c575085155b610e165786610e8e565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b50515b87158015610e9a575086155b610ea45786610f1c565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d6020811015610f1957600080fd5b50515b8661342b565b505050565b600e5481565b60055460ff1690565b6000610f40613460565b905090565b6000610bd0610f52612d12565b84610d7f8560016000610f63612d12565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061352a565b600b54600160301b90046001600160a01b03163314610fe6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600b54610f2290600281810b9163010000009004900b3086158015610e0c57508515610e165786610e8e565b600d5481565b600b5460020b81565b600c5481565b600f54600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610bd490613584565b600b54600160301b90046001600160a01b031633146110ca576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60026007541415611151576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600b54600160301b90046001600160a01b031633146111a9576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156111db5750600a54600160b81b9004600290810b810b9088900b816111d557fe5b0760020b155b80156112045750600a54600160b81b9004600290810b810b9087900b816111fe57fe5b0760020b155b61120d57600080fd5b8360020b8560020b12801561123f5750600a54600160b81b9004600290810b810b9086900b8161123957fe5b0760020b155b80156112685750600a54600160b81b9004600290810b810b9085900b8161126257fe5b0760020b155b61127157600080fd5b8560020b8460020b14158061128c57508660020b8560020b14155b61129557600080fd5b6001600160a01b0383166112a857600080fd5b6000806112b3612e02565b600a54919350915060009081906112df90600160d01b8104600290810b91600160e81b9004900b613588565b600b546001600160801b0392831695509116925060009150819061131190600281810b9163010000009004900b613588565b6001600160801b0391821694501691506000905061132f838661352a565b9050600061133d838661352a565b600a5490915061136290600160d01b8104600290810b91600160e81b9004900b613588565b5050600b5490985061138290600281810b9163010000009004900b613588565b5050600a549097506113b890600160d01b8104600290810b91600160e81b9004900b8a3060018e600060200201518f6001610cb9565b5050600b5460408a01516113e691600281810b926301000000909204900b908a9030906001908f6003610cb9565b50508115611410576114108b6113fd84600a613663565b6009546001600160a01b031691906136ca565b8015611438576114388b61142583600a613663565b600a546001600160a01b031691906136ca565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611461610aac565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114ac57600080fd5b505afa1580156114c0573d6000803e3d6000fd5b505050506040513d60208110156114d657600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561152357600080fd5b505afa158015611537573d6000803e3d6000fd5b505050506040513d602081101561154d57600080fd5b50518585611559610c08565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a1600060405180604001604052808c6000600481106115aa57fe5b602002015181526020018c6001600481106115c157fe5b602002015181525090508f600a601a6101000a81548162ffffff021916908360020b62ffffff1602179055508e600a601d6101000a81548162ffffff021916908360020b62ffffff16021790555061170c600a601a9054906101000a900460020b600a601d9054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561169557600080fd5b505afa1580156116a9573d6000803e3d6000fd5b505050506040513d60208110156116bf57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610eef57600080fd5b604080518082018252908c01518152602081018c6003602002015181525090508d600b60006101000a81548162ffffff021916908360020b62ffffff1602179055508c600b60036101000a81548162ffffff021916908360020b62ffffff1602179055506117f6600b60009054906101000a900460020b600b60039054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561169557600080fd5b505060016007555050505050505050505050505050565b600f546001600160a01b031681565b600a54600160e81b900460020b81565b60008060026007541415611887576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755866118de576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03861661191e576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b611926612e02565b5050600a54600090819061195d90600160d01b8104600290810b91600160e81b9004900b6119538c613731565b8b60008b8b612feb565b600b549193509150600090819061199090600281810b9163010000009004900b6119868e613757565b8d60008d8d612feb565b915091506000611a3f6119a1610c08565b611a398e600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d6020811015611a3157600080fd5b505190613776565b90613663565b90506000611ab4611a4e610c08565b611a398f600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a0757600080fd5b90508115611ad357600954611ad3906001600160a01b03168d846136ca565b8015611af057600a54611af0906001600160a01b03168d836136ca565b611b0482611afe888761352a565b9061352a565b9750611b1481611afe878661352a565b96506001600160a01b038b163314611b59576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b611b638b8e6137cf565b604080518e8152602081018a905280820189905290516001600160a01b03808f1692908e16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a350505050505060016007819055509550959350505050565b600b54600160301b90046001600160a01b031681565b600060026007541415611c3b576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585151580611c4e5750600085115b611c5757600080fd5b600c548611158015611c6b5750600d548511155b611c7457600080fd5b6001600160a01b03841615801590611c9557506001600160a01b0384163014155b611ccb576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600f546001600160a01b03163314611d10576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b611d18612e02565b50506000611d2c611d27610aac565b6138cb565b90506000611d75611d466001600160a01b03841680613776565b6ec097ce7bc90715b34b9f10000000007801000000000000000000000000000000000000000000000000613c0a565b9050600080611d8261235e565b9092509050611dae611da76ec097ce7bc90715b34b9f1000000000611a398d87613776565b8a9061352a565b94508915611dce57600954611dce906001600160a01b031688308d613cb9565b8815611dec57600a54611dec906001600160a01b031688308c613cb9565b6000611df6610c08565b905080156120a3576000611e1d6ec097ce7bc90715b34b9f1000000000611a398688613776565b9050611e36611e2c828561352a565b611a398985613776565b600f54909750600160a01b900460ff16156120a157600a54600954604080516370a0823160e01b815230600482018190529151611f7d94600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611eb857600080fd5b505afa158015611ecc573d6000803e3d6000fd5b505050506040513d6020811015611ee257600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611f2f57600080fd5b505afa158015611f43573d6000803e3d6000fd5b505050506040513d6020811015611f5957600080fd5b5051604080518082019091528e518152602081018f60015b6020020151905261342b565b600b54600954604080516370a0823160e01b8152306004820181905291516120a194600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d602081101561200d57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561205a57600080fd5b505afa15801561206e573d6000803e3d6000fd5b505050506040513d602081101561208457600080fd5b5051604080518082018252908f01518152602081018f6003611f71565b505b6120ad8987613d28565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600e54158061210e5750600e548111155b612145576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb15780601f10610b8657610100808354040283529160200191610bb1565b600b54600090819081908190819081906121e290600281810b9163010000009004900b613588565b600b54929550909350915061220690600281810b9163010000009004900b85613e18565b909550935061221e856001600160801b03841661352a565b9450612233846001600160801b03831661352a565b9350829550505050909192565b6000610bd061224d612d12565b84610d7f85604051806060016040528060258152602001614b176025913960016000612277612d12565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190613394565b6000610bd06122b5612d12565b8484613239565b6ec097ce7bc90715b34b9f100000000081565b600b54600160301b90046001600160a01b03163314612322576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b60008060008061236c6124ff565b925092505060008061237c6121ba565b600954604080516370a0823160e01b8152306004820152905193965091945061240a93508592611afe9289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156123d857600080fd5b505afa1580156123ec573d6000803e3d6000fd5b505050506040513d602081101561240257600080fd5b50519061352a565b600a54604080516370a0823160e01b81523060048201529051929850612464928492611afe9288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156123d857600080fd5b9450505050509091565b600b54600160301b90046001600160a01b031633146124c1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a54600160b81b900460020b81565b600a546001600160a01b031681565b600080600080600080612530600a601a9054906101000a900460020b600a601d9054906101000a900460020b613588565b600a54929550909350915061220690600160d01b8104600290810b91600160e81b9004900b85613e18565b6008546001600160a01b0316331461257257600080fd5b600f547501000000000000000000000000000000000000000000900460ff16151560011461259f57600080fd5b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905583156125e4576009546125e4906001600160a01b031633866136ca565b821561260157600a54612601906001600160a01b031633856136ca565b50505050565b8342111561265c576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906126a590613584565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061270e82613ec2565b9050600061271e82878787613f0e565b9050896001600160a01b0316816001600160a01b031614612786576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206127a790614083565b6127b28a8a8a612d16565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a54600160a01b900462ffffff1681565b600b54600160301b90046001600160a01b0316331461284e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b03811661286157600080fd5b600b80546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b6000806000806128b0614924565b600b54600160301b90046001600160a01b03163314612903576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b61290b612e02565b5050600a5461292f90600160d01b8104600290810b91600160e81b9004900b613588565b600b5491975095506129509150600281810b9163010000009004900b613588565b600854600a54604080516309e3d67b60e31b8152306004820152600160d01b909204600290810b900b6024830181905260448301526001600160801b03808c1660648401528a16608483015280519498509296506001600160a01b039091169350634f1eb3d89260a480830193928290030181600087803b1580156129d457600080fd5b505af11580156129e8573d6000803e3d6000fd5b505050506040513d60408110156129fe57600080fd5b5050600854600b54604080516309e3d67b60e31b8152306004820152600283810b810b60248301526301000000909304830b90920b60448301526001600160801b0380871660648401528516608483015280516001600160a01b0390931692634f1eb3d89260a48082019392918290030181600087803b158015612a8157600080fd5b505af1158015612a95573d6000803e3d6000fd5b505050506040513d6040811015612aab57600080fd5b5050600a54600954604080516370a0823160e01b815230600482018190529151612bd794600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612b1a57600080fd5b505afa158015612b2e573d6000803e3d6000fd5b505050506040513d6020811015612b4457600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612b9157600080fd5b505afa158015612ba5573d6000803e3d6000fd5b505050506040513d6020811015612bbb57600080fd5b5051604080518082019091528751815260208101886001611f71565b600b54600954604080516370a0823160e01b815230600482018190529151612cfb94600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612c3d57600080fd5b505afa158015612c51573d6000803e3d6000fd5b505050506040513d6020811015612c6757600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612cb457600080fd5b505afa158015612cc8573d6000803e3d6000fd5b505050506040513d6020811015612cde57600080fd5b505160408051808201825290880151815260208101886003611f71565b9091929394565b600a54600160d01b900460020b81565b3390565b6001600160a01b038316612d5b5760405162461bcd60e51b8152600401808060200182810382526024815260200180614ac96024913960400191505060405180910390fd5b6001600160a01b038216612da05760405162461bcd60e51b81526004018080602001828103825260228152602001806149886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600a546000908190612e2990600160d01b8104600290810b91600160e81b9004900b613588565b50909250506001600160801b03821615612ede57600854600a546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612eb157600080fd5b505af1158015612ec5573d6000803e3d6000fd5b505050506040513d6040811015612edb57600080fd5b50505b600b54612ef990600281810b9163010000009004900b613588565b50909150506001600160801b03811615612fa757600854600b546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612f7a57600080fd5b505af1158015612f8e573d6000803e3d6000fd5b505050506040513d6040811015612fa457600080fd5b50505b9091565b600080612fb88585613588565b50509050612fe2612fdd612fca610c08565b611a396001600160801b03851687613776565b61408c565b95945050505050565b6000806001600160801b0387161561322d576008546040805163a34123a760e01b815260028c810b60048301528b900b60248201526001600160801b038a166044820152815160009384936001600160a01b039091169263a34123a7926064808301939282900301818787803b15801561306457600080fd5b505af1158015613078573d6000803e3d6000fd5b505050506040513d604081101561308e57600080fd5b50805160209091015190925090508582108015906130ac5750848110155b6130e3576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b6000876130f8576130f38361408c565b613101565b6001600160801b035b9050600088613118576131138361408c565b613121565b6001600160801b035b90506000826001600160801b0316118061314457506000816001600160801b0316115b1561322857600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b1580156131e457600080fd5b505af11580156131f8573d6000803e3d6000fd5b505050506040513d604081101561320e57600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b6001600160a01b03831661327e5760405162461bcd60e51b8152600401808060200182810382526025815260200180614aa46025913960400191505060405180910390fd5b6001600160a01b0382166132c35760405162461bcd60e51b81526004018080602001828103825260238152602001806149436023913960400191505060405180910390fd5b6132ce838383610f22565b61330b816040518060600160405280602681526020016149aa602691396001600160a01b0386166000908152602081905260409020549190613394565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461333a908261352a565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134235760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133e85781810151838201526020016133d0565b50505050905090810190601f1680156134155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000613439878786866140a3565b90506134578787838886600060200201518760016020020151614149565b50505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000061348b61431c565b14156134b857507f0000000000000000000000000000000000000000000000000000000000000000610bb9565b6135237f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614320565b9050610bb9565b600082820183811015610d88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b604080513060601b602080830191909152600285810b60e890811b60348501529085900b901b60378301528251808303601a018152603a83018085528151919092012060085463514ea4bf60e01b909252603e830181905292516000938493849391926001600160a01b039092169163514ea4bf91605e8082019260a092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d60a081101561364757600080fd5b5080516060820151608090920151909891975095509350505050565b60008082116136b9576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816136c257fe5b049392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610f22908490614382565b600a54600090610bd490600160d01b8104600290810b91600160e81b9004900b84612fab565b600b54600090610bd490600281810b9163010000009004900b84612fab565b60008261378557506000610bd4565b8282028284828161379257fe5b0414610d885760405162461bcd60e51b8152600401808060200182810382526021815260200180614a3a6021913960400191505060405180910390fd5b6001600160a01b0382166138145760405162461bcd60e51b8152600401808060200182810382526021815260200180614a836021913960400191505060405180910390fd5b61382082600083610f22565b61385d81604051806060016040528060228152602001614966602291396001600160a01b0385166000908152602081905260409020549190613394565b6001600160a01b0383166000908152602081905260409020556002546138839082614433565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008060008360020b126138e2578260020b6138ea565b8260020b6000035b9050620d89e8811115613928576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166139495770010000000000000000000000000000000061395b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561398f576ffff97272373d413259a46990580e213a0260801c5b60048216156139ae576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156139cd576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156139ec576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613a0b576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613a2a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613a49576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613a69576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613a89576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613aa9576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ac9576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613ae9576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613b09576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613b29576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613b49576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613b6a576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613b8a576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613ba9576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613bc6576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613be1578060001981613bdd57fe5b0490505b640100000000810615613bf5576001613bf8565b60005b60ff16602082901c0192505050919050565b6000808060001985870986860292508281109083900303905080613c405760008411613c3557600080fd5b508290049050610d88565b808411613c4c57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052612601908590614382565b6001600160a01b038216613d83576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613d8f60008383610f22565b600254613d9c908261352a565b6002556001600160a01b038216600090815260208190526040902054613dc2908261352a565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613e6b57600080fd5b505afa158015613e7f573d6000803e3d6000fd5b505050506040513d60e0811015613e9557600080fd5b50519050613eb581613ea6886138cb565b613eaf886138cb565b87614490565b9250925050935093915050565b6000613ecc613460565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613f6f5760405162461bcd60e51b81526004018080602001828103825260228152602001806149d06022913960400191505060405180910390fd5b8360ff16601b1480613f8457508360ff16601c145b613fbf5760405162461bcd60e51b8152600401808060200182810382526022815260200180614a186022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561401b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612fe2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b60006001600160801b0382111561409f57fe5b5090565b600080600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156140f457600080fd5b505afa158015614108573d6000803e3d6000fd5b505050506040513d60e081101561411e57600080fd5b5051905061413f8161412f886138cb565b614138886138cb565b878761452c565b9695505050505050565b6001600160801b03841615614314576001600f60156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b0316633c8a7d8d308a8a8a8a60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561424357818101518382015260200161422b565b50505050905090810190601f1680156142705780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b15801561429257600080fd5b505af11580156142a6573d6000803e3d6000fd5b505050506040513d60408110156142bc57600080fd5b50805160209091015190925090508382108015906142da5750828110155b614311576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b50505b505050505050565b4690565b600083838361432d61431c565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b60006143d7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145e49092919063ffffffff16565b805190915015610f22578080602001905160208110156143f657600080fd5b5051610f225760405162461bcd60e51b815260040180806020018281038252602a815260200180614aed602a913960400191505060405180910390fd5b60008282111561448a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600080836001600160a01b0316856001600160a01b031611156144b1579293925b846001600160a01b0316866001600160a01b0316116144dc576144d58585856145fb565b9150614523565b836001600160a01b0316866001600160a01b03161015614515576145018685856145fb565b915061450e858785614664565b9050614523565b614520858585614664565b90505b94509492505050565b6000836001600160a01b0316856001600160a01b0316111561454c579293925b846001600160a01b0316866001600160a01b031611614577576145708585856146a7565b9050612fe2565b836001600160a01b0316866001600160a01b031610156145d957600061459e8786866146a7565b905060006145ad87898661470a565b9050806001600160801b0316826001600160801b0316106145ce57806145d0565b815b92505050612fe2565b61413f85858461470a565b60606145f38484600085614747565b949350505050565b6000826001600160a01b0316846001600160a01b0316111561461b579192915b836001600160a01b0316614654606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613c0a565b8161465b57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115614684579192915b6145f3826001600160801b03168585036001600160a01b0316600160601b613c0a565b6000826001600160a01b0316846001600160a01b031611156146c7579192915b60006146ea856001600160a01b0316856001600160a01b0316600160601b613c0a565b9050612fe261470584838888036001600160a01b0316613c0a565b6148a2565b6000826001600160a01b0316846001600160a01b0316111561472a579192915b6145f361470583600160601b8787036001600160a01b0316613c0a565b6060824710156147885760405162461bcd60e51b81526004018080602001828103825260268152602001806149f26026913960400191505060405180910390fd5b614791856148b8565b6147e2576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106148205780518252601f199092019160209182019101614801565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614882576040519150601f19603f3d011682016040523d82523d6000602084013e614887565b606091505b50915091506148978282866148be565b979650505050505050565b806001600160801b038116811461105157600080fd5b3b151590565b606083156148cd575081610d88565b8251156148dd5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156133e85781810151838201526020016133d0565b6040518060800160405280600490602082028036833750919291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a"; + "0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040516200526b3803806200526b833981810160405260808110156200005d57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200008957600080fd5b9083019060208201858111156200009f57600080fd5b8251640100000000811182820188101715620000ba57600080fd5b82525081516020918201929091019080838360005b83811015620000e9578181015183820152602001620000cf565b50505050905090810190601f168015620001175780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013b57600080fd5b9083019060208201858111156200015157600080fd5b82516401000000008111828201881017156200016c57600080fd5b82525081516020918201929091019080838360005b838110156200019b57818101518382015260200162000181565b50505050905090810190601f168015620001c95780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b8152508484816003908051906020019062000206929190620005f8565b5080516200021c906004906020840190620005f8565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200027562000590565b60a0526200028581848462000594565b60805261010052505060016007555050506001600160a01b038416620002aa57600080fd5b6001600160a01b038316620002be57600080fd5b600880546001600160a01b0319166001600160a01b03868116919091179182905560408051630dfe168160e01b815290519290911691630dfe168191600480820192602092909190829003018186803b1580156200031b57600080fd5b505afa15801562000330573d6000803e3d6000fd5b505050506040513d60208110156200034757600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b158015620003a357600080fd5b505afa158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617905560095416620003fb57600080fd5b600a546001600160a01b03166200041157600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d60208110156200048c57600080fd5b5051600a805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055600854604080516334324e9f60e21b815290516001600160a01b039092169163d0c93a7c91600480820192602092909190829003018186803b158015620004f657600080fd5b505afa1580156200050b573d6000803e3d6000fd5b505050506040513d60208110156200052257600080fd5b5051600a805460029290920b62ffffff16600160b81b0262ffffff60b81b199092169190911790555050600b80546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600e55600019600c819055600d55620006a4565b4690565b6000838383620005a362000590565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200063057600085556200067b565b82601f106200064b57805160ff19168380011785556200067b565b828001600101855582156200067b579182015b828111156200067b5782518255916020019190600101906200065e565b50620006899291506200068d565b5090565b5b808211156200068957600081556001016200068e565b60805160a05160c05160e0516101005161012051614b7d620006ee600039806126ab5250806134f25250806135345250806135135250806134995250806134c95250614b7d6000f3fe608060405234801561001057600080fd5b506004361061030a5760003560e01c806386a290811161019c578063c4a7761e116100ee578063d505accf11610097578063f2fde38b11610071578063f2fde38b14610a24578063f69e204614610a4a578063fa08274314610acd5761030a565b8063d505accf14610985578063dd62ed3e146109d6578063ddca3f4314610a045761030a565b8063d21220a7116100c8578063d21220a7146108f9578063d2eabcfc14610901578063d3487997146109095761030a565b8063c4a7761e146108e1578063c5241e29146108e9578063d0c93a7c146108f15761030a565b8063a049de6b11610150578063a9059cbb1161012a578063a9059cbb146108a5578063aaf5eb68146108d1578063b1a3d533146108d95761030a565b8063a049de6b146107c5578063a457c2d7146107f5578063a8559872146108215761030a565b80638da5cb5b116101815780638da5cb5b146107445780638e3c92e41461074c57806395d89b41146107bd5761030a565b806386a2908114610734578063888a91341461073c5761030a565b8063313ce56711610260578063648cab85116102095780637ecebe00116101e35780637ecebe001461063b578063854cff2f1461066157806385919c5d146106875761030a565b8063648cab85146106055780636d90a39c1461060d57806370a08231146106155761030a565b806349e8f1c21161023a57806349e8f1c21461059e5780634d461fbb146105f557806351e87af7146105fd5761030a565b8063313ce5671461054c5780633644e5151461056a57806339509351146105725761030a565b806316f0115b116102c257806323b872dd1161029c57806323b872dd146104b55780632527aa1d146104eb5780632ab4d052146105445761030a565b806316f0115b1461041757806318160ddd1461041f5780631bead8f3146104395761030a565b8063095ea7b3116102f3578063095ea7b3146103ab5780630dfe1681146103eb5780630f35bcac1461040f5761030a565b8063065e53601461030f57806306fdde031461032e575b600080fd5b610317610ad5565b6040805160029290920b8252519081900360200190f35b610336610b4e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360408110156103c157600080fd5b506001600160a01b038135169060200135610be5565b604080519115158252519081900360200190f35b6103f3610c03565b604080516001600160a01b039092168252519081900360200190f35b610317610c12565b6103f3610c22565b610427610c31565b60408051918252519081900360200190f35b61048f600480360360a081101561044f57600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610c379350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6103d7600480360360608110156104cb57600080fd5b506001600160a01b03813581169160208101359091169060400135610d34565b6105426004803603608081101561050157600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610dbc9350505050565b005b610427610f54565b610554610f5a565b6040805160ff9092168252519081900360200190f35b610427610f63565b6103d76004803603604081101561058857600080fd5b506001600160a01b038135169060200135610f72565b610542600480360360808110156105b457600080fd5b60408051808201825283359360208101359381019290916080830191808401906002908390839080828437600092019190915250919450610fc09350505050565b61042761103f565b610317611045565b61042761104e565b6103d7611054565b6104276004803603602081101561062b57600080fd5b50356001600160a01b0316611064565b6104276004803603602081101561065157600080fd5b50356001600160a01b0316611083565b6105426004803603602081101561067757600080fd5b50356001600160a01b03166110a4565b61054260048036036101a081101561069e57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506111269350505050565b6103f361183a565b610317611849565b6103f3611859565b610427600480360361010081101561076357600080fd5b60408051608081810183528435946020810135946001600160a01b039482013585169460608301351693908201926101008301919080840190600490839083908082843760009201919091525091945061186f9350505050565b610336611ded565b6107cd611e4e565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103d76004803603604081101561080b57600080fd5b506001600160a01b038135169060200135611ed4565b61088c600480360360e081101561083757600080fd5b60408051608081810183528435946001600160a01b036020820135811695948201351693810192909160e08301919060608401906004908390839080828437600092019190915250919450611f3c9350505050565b6040805192835260208301919091528051918290030190f35b6103d7600480360360408110156108bb57600080fd5b506001600160a01b0381351690602001356122dd565b6104276122f1565b610542612304565b61088c612393565b6105426124a3565b610317612515565b6103f3612525565b6107cd612534565b6105426004803603606081101561091f57600080fd5b81359160208101359181019060608101604082013564010000000081111561094657600080fd5b82018360208201111561095857600080fd5b8035906020019184600183028401116401000000008311171561097a57600080fd5b509092509050612590565b610542600480360360e081101561099b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561263c565b610427600480360360408110156109ec57600080fd5b506001600160a01b03813581169160200135166127f3565b610a0c61281e565b6040805162ffffff9092168252519081900360200190f35b61054260048036036020811015610a3a57600080fd5b50356001600160a01b0316612830565b610a526128d7565b60405180866001600160801b03168152602001856001600160801b03168152602001846001600160801b03168152602001836001600160801b0316815260200182600460200280838360005b83811015610ab6578181015183820152602001610a9e565b505050509050019550505050505060405180910390f35b610317612d37565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015610b1a57600080fd5b505afa158015610b2e573d6000803e3d6000fd5b505050506040513d60e0811015610b4457600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050505090505b90565b6000610bf9610bf2612d47565b8484612d4b565b5060015b92915050565b6009546001600160a01b031681565b600b546301000000900460020b81565b6008546001600160a01b031681565b60025490565b600080600080600b60069054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610ca5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b610cad612e37565b5050600a54610cf090600160d01b8104600290810b91600160e81b9004900b610cd782828b612fe0565b3060008a815b60200201518b60015b6020020151613020565b600b549195509350610d2990600281810b9163010000009004900b610d1682828b612fe0565b3060008a600260200201518b6003610ce6565b949793965094505050565b6000610d4184848461326e565b610db184610d4d612d47565b610dac85604051806060016040528060288152602001614a90602891396001600160a01b038a16600090815260016020526040812090610d8b612d47565b6001600160a01b0316815260208101919091526040016000205491906133c9565b612d4b565b5060015b9392505050565b600b54600160301b90046001600160a01b03163314610e0f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a54610f4f90600160d01b8104600290810b91600160e81b9004900b3086158015610e39575085155b610e435786610ebb565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8e57600080fd5b505afa158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b50515b87158015610ec7575086155b610ed15786610f49565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f1c57600080fd5b505afa158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b50515b86613460565b505050565b600e5481565b60055460ff1690565b6000610f6d613495565b905090565b6000610bf9610f7f612d47565b84610dac8560016000610f90612d47565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061355f565b600b54600160301b90046001600160a01b03163314611013576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600b54610f4f90600281810b9163010000009004900b3086158015610e3957508515610e435786610ebb565b600d5481565b600b5460020b81565b600c5481565b600f54600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610bfd906135b9565b600b54600160301b90046001600160a01b031633146110f7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6002600754141561117e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600b54600160301b90046001600160a01b031633146111d6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156112085750600a54600160b81b9004600290810b810b9088900b8161120257fe5b0760020b155b80156112315750600a54600160b81b9004600290810b810b9087900b8161122b57fe5b0760020b155b61123a57600080fd5b8360020b8560020b12801561126c5750600a54600160b81b9004600290810b810b9086900b8161126657fe5b0760020b155b80156112955750600a54600160b81b9004600290810b810b9085900b8161128f57fe5b0760020b155b61129e57600080fd5b8560020b8460020b1415806112b957508660020b8560020b14155b6112c257600080fd5b6001600160a01b0383166112d557600080fd5b6000806112e0612e37565b600a549193509150600090819061130c90600160d01b8104600290810b91600160e81b9004900b6135bd565b600b546001600160801b0392831695509116925060009150819061133e90600281810b9163010000009004900b6135bd565b6001600160801b0391821694501691506000905061135c838661355f565b9050600061136a838661355f565b600a5490915061138f90600160d01b8104600290810b91600160e81b9004900b6135bd565b5050600b549098506113af90600281810b9163010000009004900b6135bd565b5050600a549097506113e590600160d01b8104600290810b91600160e81b9004900b8a3060018e600060200201518f6001610ce6565b5050600b5460408a015161141391600281810b926301000000909204900b908a9030906001908f6003610ce6565b5050811561143d5761143d8b61142a84600a613698565b6009546001600160a01b031691906136ff565b8015611465576114658b61145283600a613698565b600a546001600160a01b031691906136ff565b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d61148e610ad5565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114d957600080fd5b505afa1580156114ed573d6000803e3d6000fd5b505050506040513d602081101561150357600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b50518585611586610c31565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a1600060405180604001604052808c6000600481106115d757fe5b602002015181526020018c6001600481106115ee57fe5b602002015181525090508f600a601a6101000a81548162ffffff021916908360020b62ffffff1602179055508e600a601d6101000a81548162ffffff021916908360020b62ffffff160217905550611739600a601a9054906101000a900460020b600a601d9054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116c257600080fd5b505afa1580156116d6573d6000803e3d6000fd5b505050506040513d60208110156116ec57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f1c57600080fd5b604080518082018252908c01518152602081018c6003602002015181525090508d600b60006101000a81548162ffffff021916908360020b62ffffff1602179055508c600b60036101000a81548162ffffff021916908360020b62ffffff160217905550611823600b60009054906101000a900460020b600b60039054906101000a900460020b30600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116c257600080fd5b505060016007555050505050505050505050505050565b600f546001600160a01b031681565b600a54600160e81b900460020b81565b600b54600160301b90046001600160a01b031681565b6000600260075414156118c9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755851515806118dc5750600085115b6118e557600080fd5b600c5486111580156118f95750600d548511155b61190257600080fd5b6001600160a01b0384161580159061192357506001600160a01b0384163014155b611959576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600f546001600160a01b0316331461199e576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b6119a6612e37565b505060006119ba6119b5610ad5565b613766565b90506000611a036119d46001600160a01b03841680613aa5565b6ec097ce7bc90715b34b9f10000000007801000000000000000000000000000000000000000000000000613afe565b9050600080611a10612393565b9092509050611a42611a3b6ec097ce7bc90715b34b9f1000000000611a358d87613aa5565b90613698565b8a9061355f565b94508915611a6257600954611a62906001600160a01b031688308d613bad565b8815611a8057600a54611a80906001600160a01b031688308c613bad565b6000611a8a610c31565b90508015611d37576000611ab16ec097ce7bc90715b34b9f1000000000611a358688613aa5565b9050611aca611ac0828561355f565b611a358985613aa5565b600f54909750600160a01b900460ff1615611d3557600a54600954604080516370a0823160e01b815230600482018190529151611c1194600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d6020811015611b7657600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611bc357600080fd5b505afa158015611bd7573d6000803e3d6000fd5b505050506040513d6020811015611bed57600080fd5b5051604080518082019091528e518152602081018f60015b60200201519052613460565b600b54600954604080516370a0823160e01b815230600482018190529151611d3594600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611c7757600080fd5b505afa158015611c8b573d6000803e3d6000fd5b505050506040513d6020811015611ca157600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d6020811015611d1857600080fd5b5051604080518082018252908f01518152602081018f6003611c05565b505b611d418987613c1c565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600e541580611da25750600e548111155b611dd9576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bda5780601f10610baf57610100808354040283529160200191610bda565b600b5460009081908190819081908190611e7690600281810b9163010000009004900b6135bd565b600b549295509093509150611e9a90600281810b9163010000009004900b85613d0c565b9095509350611eb2856001600160801b03841661355f565b9450611ec7846001600160801b03831661355f565b9350829550505050909192565b6000610bf9611ee1612d47565b84610dac85604051806060016040528060258152602001614b4c6025913960016000611f0b612d47565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906133c9565b60008060026007541415611f97576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585611fee576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03851661202e576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b612036612e37565b5050600a54600090819061206d90600160d01b8104600290810b91600160e81b9004900b6120638b613db6565b8a60008a81610cdd565b600b54919350915060009081906120a990600281810b9163010000009004900b6120968d613ddc565b8c60008c600260200201518d6003610ce6565b9150915060006121526120ba610c31565b611a358d600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d602081101561214a57600080fd5b505190613aa5565b905060006121c7612161610c31565b611a358e600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561212057600080fd5b905081156121e6576009546121e6906001600160a01b03168c846136ff565b801561220357600a54612203906001600160a01b03168c836136ff565b61221782612211888761355f565b9061355f565b975061222781612211878661355f565b96506001600160a01b038a16331461226c576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b6122768a8d613dfb565b604080518d8152602081018a905280820189905290516001600160a01b03808e1692908d16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a3505050505050600160078190555094509492505050565b6000610bf96122ea612d47565b848461326e565b6ec097ce7bc90715b34b9f100000000081565b600b54600160301b90046001600160a01b03163314612357576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000806000806123a1612534565b92509250506000806123b1611e4e565b600954604080516370a0823160e01b8152306004820152905193965091945061243f935085926122119289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561240d57600080fd5b505afa158015612421573d6000803e3d6000fd5b505050506040513d602081101561243757600080fd5b50519061355f565b600a54604080516370a0823160e01b815230600482015290519298506124999284926122119288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561240d57600080fd5b9450505050509091565b600b54600160301b90046001600160a01b031633146124f6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a54600160b81b900460020b81565b600a546001600160a01b031681565b600080600080600080612565600a601a9054906101000a900460020b600a601d9054906101000a900460020b6135bd565b600a549295509093509150611e9a90600160d01b8104600290810b91600160e81b9004900b85613d0c565b6008546001600160a01b031633146125a757600080fd5b600f547501000000000000000000000000000000000000000000900460ff1615156001146125d457600080fd5b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055831561261957600954612619906001600160a01b031633866136ff565b821561263657600a54612636906001600160a01b031633856136ff565b50505050565b83421115612691576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906126da906135b9565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061274382613ef7565b9050600061275382878787613f43565b9050896001600160a01b0316816001600160a01b0316146127bb576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206127dc906140b8565b6127e78a8a8a612d4b565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a54600160a01b900462ffffff1681565b600b54600160301b90046001600160a01b03163314612883576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b03811661289657600080fd5b600b80546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b6000806000806128e5614959565b600b54600160301b90046001600160a01b03163314612938576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b612940612e37565b5050600a5461296490600160d01b8104600290810b91600160e81b9004900b6135bd565b600b5491975095506129859150600281810b9163010000009004900b6135bd565b600854600a54604080516309e3d67b60e31b8152306004820152600160d01b909204600290810b900b6024830181905260448301526001600160801b03808c1660648401528a16608483015280519498509296506001600160a01b039091169350634f1eb3d89260a480830193928290030181600087803b158015612a0957600080fd5b505af1158015612a1d573d6000803e3d6000fd5b505050506040513d6040811015612a3357600080fd5b5050600854600b54604080516309e3d67b60e31b8152306004820152600283810b810b60248301526301000000909304830b90920b60448301526001600160801b0380871660648401528516608483015280516001600160a01b0390931692634f1eb3d89260a48082019392918290030181600087803b158015612ab657600080fd5b505af1158015612aca573d6000803e3d6000fd5b505050506040513d6040811015612ae057600080fd5b5050600a54600954604080516370a0823160e01b815230600482018190529151612c0c94600160d01b8104600290810b95600160e81b909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612b4f57600080fd5b505afa158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612bc657600080fd5b505afa158015612bda573d6000803e3d6000fd5b505050506040513d6020811015612bf057600080fd5b5051604080518082019091528751815260208101886001611c05565b600b54600954604080516370a0823160e01b815230600482018190529151612d3094600281810b956301000000909204900b93926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015612c7257600080fd5b505afa158015612c86573d6000803e3d6000fd5b505050506040513d6020811015612c9c57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612ce957600080fd5b505afa158015612cfd573d6000803e3d6000fd5b505050506040513d6020811015612d1357600080fd5b505160408051808201825290880151815260208101886003611c05565b9091929394565b600a54600160d01b900460020b81565b3390565b6001600160a01b038316612d905760405162461bcd60e51b8152600401808060200182810382526024815260200180614afe6024913960400191505060405180910390fd5b6001600160a01b038216612dd55760405162461bcd60e51b81526004018080602001828103825260228152602001806149bd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600a546000908190612e5e90600160d01b8104600290810b91600160e81b9004900b6135bd565b50909250506001600160801b03821615612f1357600854600a546040805163a34123a760e01b8152600160d01b8304600290810b810b6004830152600160e81b909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612ee657600080fd5b505af1158015612efa573d6000803e3d6000fd5b505050506040513d6040811015612f1057600080fd5b50505b600b54612f2e90600281810b9163010000009004900b6135bd565b50909150506001600160801b03811615612fdc57600854600b546040805163a34123a760e01b8152600283810b810b60048301526301000000909304830b90920b602483015260006044830181905281516001600160a01b039094169363a34123a79360648082019493918390030190829087803b158015612faf57600080fd5b505af1158015612fc3573d6000803e3d6000fd5b505050506040513d6040811015612fd957600080fd5b50505b9091565b600080612fed85856135bd565b50509050613017613012612fff610c31565b611a356001600160801b03851687613aa5565b6140c1565b95945050505050565b6000806001600160801b03871615613262576008546040805163a34123a760e01b815260028c810b60048301528b900b60248201526001600160801b038a166044820152815160009384936001600160a01b039091169263a34123a7926064808301939282900301818787803b15801561309957600080fd5b505af11580156130ad573d6000803e3d6000fd5b505050506040513d60408110156130c357600080fd5b50805160209091015190925090508582108015906130e15750848110155b613118576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b60008761312d57613128836140c1565b613136565b6001600160801b035b905060008861314d57613148836140c1565b613156565b6001600160801b035b90506000826001600160801b0316118061317957506000816001600160801b0316115b1561325d57600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b15801561321957600080fd5b505af115801561322d573d6000803e3d6000fd5b505050506040513d604081101561324357600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b6001600160a01b0383166132b35760405162461bcd60e51b8152600401808060200182810382526025815260200180614ad96025913960400191505060405180910390fd5b6001600160a01b0382166132f85760405162461bcd60e51b81526004018080602001828103825260238152602001806149786023913960400191505060405180910390fd5b613303838383610f4f565b613340816040518060600160405280602681526020016149df602691396001600160a01b03861660009081526020819052604090205491906133c9565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461336f908261355f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134585760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561341d578181015183820152602001613405565b50505050905090810190601f16801561344a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061346e878786866140d8565b905061348c878783888660006020020151876001602002015161417e565b50505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006134c0614351565b14156134ed57507f0000000000000000000000000000000000000000000000000000000000000000610be2565b6135587f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614355565b9050610be2565b600082820183811015610db5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b5490565b604080513060601b602080830191909152600285810b60e890811b60348501529085900b901b60378301528251808303601a018152603a83018085528151919092012060085463514ea4bf60e01b909252603e830181905292516000938493849391926001600160a01b039092169163514ea4bf91605e8082019260a092909190829003018186803b15801561365257600080fd5b505afa158015613666573d6000803e3d6000fd5b505050506040513d60a081101561367c57600080fd5b5080516060820151608090920151909891975095509350505050565b60008082116136ee576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816136f757fe5b049392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052610f4f9084906143b7565b60008060008360020b1261377d578260020b613785565b8260020b6000035b9050620d89e88111156137c3576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166137e4577001000000000000000000000000000000006137f6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561382a576ffff97272373d413259a46990580e213a0260801c5b6004821615613849576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613868576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613887576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156138a6576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156138c5576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156138e4576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613904576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613924576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613944576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613964576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613984576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156139a4576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156139c4576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156139e4576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613a05576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613a25576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613a44576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613a61576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613a7c578060001981613a7857fe5b0490505b640100000000810615613a90576001613a93565b60005b60ff16602082901c0192505050919050565b600082613ab457506000610bfd565b82820282848281613ac157fe5b0414610db55760405162461bcd60e51b8152600401808060200182810382526021815260200180614a6f6021913960400191505060405180910390fd5b6000808060001985870986860292508281109083900303905080613b345760008411613b2957600080fd5b508290049050610db5565b808411613b4057600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b1790526126369085906143b7565b6001600160a01b038216613c77576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613c8360008383610f4f565b600254613c90908261355f565b6002556001600160a01b038216600090815260208190526040902054613cb6908261355f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613d5f57600080fd5b505afa158015613d73573d6000803e3d6000fd5b505050506040513d60e0811015613d8957600080fd5b50519050613da981613d9a88613766565b613da388613766565b87614468565b9250925050935093915050565b600a54600090610bfd90600160d01b8104600290810b91600160e81b9004900b84612fe0565b600b54600090610bfd90600281810b9163010000009004900b84612fe0565b6001600160a01b038216613e405760405162461bcd60e51b8152600401808060200182810382526021815260200180614ab86021913960400191505060405180910390fd5b613e4c82600083610f4f565b613e898160405180606001604052806022815260200161499b602291396001600160a01b03851660009081526020819052604090205491906133c9565b6001600160a01b038316600090815260208190526040902055600254613eaf9082614504565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000613f01613495565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fa45760405162461bcd60e51b8152600401808060200182810382526022815260200180614a056022913960400191505060405180910390fd5b8360ff16601b1480613fb957508360ff16601c145b613ff45760405162461bcd60e51b8152600401808060200182810382526022815260200180614a4d6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614050573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613017576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b60006001600160801b038211156140d457fe5b5090565b600080600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561412957600080fd5b505afa15801561413d573d6000803e3d6000fd5b505050506040513d60e081101561415357600080fd5b505190506141748161416488613766565b61416d88613766565b8787614561565b9695505050505050565b6001600160801b03841615614349576001600f60156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b0316633c8a7d8d308a8a8a8a60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614278578181015183820152602001614260565b50505050905090810190601f1680156142a55780820380516001836020036101000a031916815260200191505b5096505050505050506040805180830381600087803b1580156142c757600080fd5b505af11580156142db573d6000803e3d6000fd5b505050506040513d60408110156142f157600080fd5b508051602090910151909250905083821080159061430f5750828110155b614346576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b50505b505050505050565b4690565b6000838383614362614351565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b600061440c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146199092919063ffffffff16565b805190915015610f4f5780806020019051602081101561442b57600080fd5b5051610f4f5760405162461bcd60e51b815260040180806020018281038252602a815260200180614b22602a913960400191505060405180910390fd5b600080836001600160a01b0316856001600160a01b03161115614489579293925b846001600160a01b0316866001600160a01b0316116144b4576144ad858585614630565b91506144fb565b836001600160a01b0316866001600160a01b031610156144ed576144d9868585614630565b91506144e6858785614699565b90506144fb565b6144f8858585614699565b90505b94509492505050565b60008282111561455b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000836001600160a01b0316856001600160a01b03161115614581579293925b846001600160a01b0316866001600160a01b0316116145ac576145a58585856146dc565b9050613017565b836001600160a01b0316866001600160a01b0316101561460e5760006145d38786866146dc565b905060006145e287898661473f565b9050806001600160801b0316826001600160801b0316106146035780614605565b815b92505050613017565b61417485858461473f565b6060614628848460008561477c565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614650579192915b836001600160a01b0316614689606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613afe565b8161469057fe5b04949350505050565b6000826001600160a01b0316846001600160a01b031611156146b9579192915b614628826001600160801b03168585036001600160a01b0316600160601b613afe565b6000826001600160a01b0316846001600160a01b031611156146fc579192915b600061471f856001600160a01b0316856001600160a01b0316600160601b613afe565b905061301761473a84838888036001600160a01b0316613afe565b6148d7565b6000826001600160a01b0316846001600160a01b0316111561475f579192915b61462861473a83600160601b8787036001600160a01b0316613afe565b6060824710156147bd5760405162461bcd60e51b8152600401808060200182810382526026815260200180614a276026913960400191505060405180910390fd5b6147c6856148ed565b614817576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106148555780518252601f199092019160209182019101614836565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146148b7576040519150601f19603f3d011682016040523d82523d6000602084013e6148bc565b606091505b50915091506148cc8282866148f3565b979650505050505050565b806001600160801b038116811461107e57600080fd5b3b151590565b60608315614902575081610db5565b8251156149125782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561341d578181015183820152602001613405565b6040518060800160405280600490602082028036833750919291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a"; export class Hypervisor__factory extends ContractFactory { constructor( diff --git a/typechain/factories/IHypervisor__factory.ts b/typechain/factories/IHypervisor__factory.ts index 51c810f..42f68fe 100644 --- a/typechain/factories/IHypervisor__factory.ts +++ b/typechain/factories/IHypervisor__factory.ts @@ -458,14 +458,9 @@ const _abi = [ type: "address", }, { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "uint256", + internalType: "uint256[4]", name: "", - type: "uint256", + type: "uint256[4]", }, ], name: "withdraw",