[ { "inputs": [ { "internalType": "address", "name": "_weth", "type": "address" }, { "internalType": "address", "name": "_want", "type": "address" }, { "internalType": "address", "name": "_accessManager", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fees", "type": "uint256" } ], "name": "InstantWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "formerFeeRate", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFeeRate", "type": "uint256" } ], "name": "InstantWithdrawFeeRateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "formerLendingManager", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newLendingManager", "type": "address" } ], "name": "LendingManagerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "RequestWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldVault", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newVault", "type": "address" } ], "name": "ReserveVaultMigrated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldVault", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newVault", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SuperChargerVaultMigrated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lendingBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "reserveBalance", "type": "uint256" } ], "name": "WeeklySettleEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "totalRequestedShares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "weeklyRepayAmount", "type": "uint256" } ], "name": "WeeklySettleStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "formerWithdrawManager", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newWithdrawManager", "type": "address" } ], "name": "WithdrawManagerUpdated", "type": "event" }, { "inputs": [], "name": "accessManager", "outputs": [ { "internalType": "contract IWooAccessManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "available", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "balance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "fundAddr", "type": "address" } ], "name": "borrowFromLendingManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "costSharePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "endWeeklySettle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getPricePerFullShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "stuckToken", "type": "address" } ], "name": "inCaseTokenGotStuck", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_reserveVault", "type": "address" }, { "internalType": "address", "name": "_lendingManager", "type": "address" }, { "internalType": "address payable", "name": "_withdrawManager", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "instantWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "instantWithdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "instantWithdrawCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "instantWithdrawFeeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "instantWithdrawnAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isSettling", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lendingBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lendingManager", "outputs": [ { "internalType": "contract WooLendingManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "masterChef", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBorrowableAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWithdrawCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_vault", "type": "address" } ], "name": "migrateReserveVault", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrateToNewVault", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrationVault", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "repayFromLendingManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "requestWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestWithdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestedTotalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "requestedTotalShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "requestedWithdrawAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "requestedWithdrawShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserveBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserveVault", "outputs": [ { "internalType": "contract IVaultV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_instantWithdrawCap", "type": "uint256" } ], "name": "setInstantWithdrawCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeRate", "type": "uint256" } ], "name": "setInstantWithdrawFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_lendingManager", "type": "address" } ], "name": "setLendingManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_masterChef", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" } ], "name": "setMasterChef", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWithdrawCount", "type": "uint256" } ], "name": "setMaxWithdrawCount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_vault", "type": "address" } ], "name": "setMigrationVault", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_withdrawManager", "type": "address" } ], "name": "setWithdrawManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "stakedShares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startWeeklySettle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRequestedUserNumber", "outputs": [ { "internalType": "uint256", "name": "totalNumber", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "want", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "weeklyNeededAmountForWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "weth", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawManager", "outputs": [ { "internalType": "contract WooWithdrawManagerV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60e060405260128054610100600160a81b03191674815d4517427fc940a90a5653cdcea1544c6283c900179055601e60135561012c6014553480156200004457600080fd5b506040516200619938038062006199833981016040819052620000679162000425565b816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620000a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000d09190810190620004b8565b604051602001620000e2919062000570565b604051602081830303815290604052826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000130573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200015a9190810190620004b8565b6040516020016200016c9190620005b7565b60408051601f1981840301815291905281516200019190600390602085019062000362565b508051620001a790600490602084019062000362565b505050620001c4620001be6200030c60201b60201c565b62000310565b6005805460ff60a01b1916905560016006556001600160a01b038316620002325760405162461bcd60e51b815260206004820152601b60248201527f576f6f5375706572436861726765725661756c743a202177657468000000000060448201526064015b60405180910390fd5b6001600160a01b0382166200028a5760405162461bcd60e51b815260206004820152601b60248201527f576f6f5375706572436861726765725661756c743a202177616e740000000000604482015260640162000229565b6001600160a01b038116620002ee5760405162461bcd60e51b8152602060048201526024808201527f576f6f5375706572436861726765725661756c743a20216163636573734d616e60448201526330b3b2b960e11b606482015260840162000229565b6001600160a01b0392831660a0529082166080521660c0526200061f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200037090620005e3565b90600052602060002090601f016020900481019282620003945760008555620003df565b82601f10620003af57805160ff1916838001178555620003df565b82800160010185558215620003df579182015b82811115620003df578251825591602001919060010190620003c2565b50620003ed929150620003f1565b5090565b5b80821115620003ed5760008155600101620003f2565b80516001600160a01b03811681146200042057600080fd5b919050565b6000806000606084860312156200043b57600080fd5b620004468462000408565b9250620004566020850162000408565b9150620004666040850162000408565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004a257818101518382015260200162000488565b83811115620004b2576000848401525b50505050565b600060208284031215620004cb57600080fd5b81516001600160401b0380821115620004e357600080fd5b818401915084601f830112620004f857600080fd5b8151818111156200050d576200050d6200046f565b604051601f8201601f19908116603f011681019083821181831017156200053857620005386200046f565b816040528281528760208487010111156200055257600080fd5b6200056583602083016020880162000485565b979650505050505050565b7f574f4f4669205375706572204368617267657220000000000000000000000000815260008251620005aa81601485016020870162000485565b9190910160140192915050565b61776560f01b815260008251620005d681600285016020870162000485565b9190910160020192915050565b600181811c90821680620005f857607f821691505b6020821081036200061957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c051615a2b6200076e60003960008181610c54015281816115a50152818161226b0152818161239101528181612dab01526146850152600081816106430152818161134f015281816113a8015281816116d20152818161181a015281816119c10152818161287c015281816129020152818161302c015281816130850152818161403b015281816147260152614c8c015260008181610531015281816110390152818161137901528181611420015281816116fc01528181611844015281816118f7015281816119eb01528181611a9f01528181611bb901528181611c9d01528181612853015281816128a6015281816129eb01528181613056015281816132450152818161405e0152818161417d015281816141ad01528181614750015281816147b9015281816147f201528181614a0c01528181614cb60152614d6a0152615a2b6000f3fe6080604052600436106104335760003560e01c80637ab7cbb111610228578063b69ef8a811610128578063e14224f3116100bb578063f10684541161008a578063fac6182f1161006f578063fac6182f14610c0d578063fd92bff214610c22578063fdcb606814610c4257600080fd5b8063f106845414610bd7578063f2fde38b14610bed57600080fd5b8063e14224f314610b61578063e1a4e72a14610b77578063ec3e9da514610b97578063f0f4426014610bb757600080fd5b8063cef062fc116100f7578063cef062fc14610ad0578063dadb6c1d14610af0578063dc692cd714610b05578063dd62ed3e14610b1b57600080fd5b8063b69ef8a814610a72578063b6b55f2514610a87578063c869d0ed14610a9a578063cecdb96114610aba57600080fd5b80638e400570116101bb5780639e3b77af1161018a578063a457c2d71161016f578063a457c2d714610a12578063a9059cbb14610a32578063b5589fad14610a5257600080fd5b80639e3b77af146109dd578063a10954fe146109fd57600080fd5b80638e4005701461098457806395d89b411461099957806396f25d42146109ae5780639d46c009146109c857600080fd5b80638542783f116101f75780638542783f1461090e578063864a897f14610923578063882c127e146109395780638da5cb5b1461096657600080fd5b80637ab7cbb1146108a45780637f293228146108b957806383165e59146108d95780638456cb59146108f957600080fd5b806348cdc14111610333578063672f1490116102c65780636e553f6511610295578063715018a61161027a578063715018a61461085a578063745400c91461086f57806377c7b8fc1461088f57600080fd5b80636e553f651461081157806370a082311461082457600080fd5b8063672f1490146107a65780636a7855fd146107c65780636aa9eda2146107dc5780636d67d5d4146107f157600080fd5b80635c975abb116103025780635c975abb1461070457806360773a2c1461073457806361d027b314610754578063622639911461077957600080fd5b806348cdc1411461069a5780634bb2dcea146106ba5780634d9b4894146106cf578063575a86b2146106e457600080fd5b80632ea9239e116103c65780633bfb5c14116103955780633fc8cef31161037a5780633fc8cef3146106315780634069ab681461066557806348a0d7541461068557600080fd5b80633bfb5c14146105fc5780633f4ba83a1461061c57600080fd5b80632ea9239e1461058b578063313ce567146105ab57806336ea4344146105c757806339509351146105dc57600080fd5b806318160ddd1161040257806318160ddd146104ea578063184b9559146104ff5780631f1fcd511461051f57806323b872dd1461056b57600080fd5b806306fdde031461043f578063095ea7b31461046a5780630eb0c8f31461049a57806317e3e2e8146104c857600080fd5b3661043a57005b600080fd5b34801561044b57600080fd5b50610454610c76565b6040516104619190615594565b60405180910390f35b34801561047657600080fd5b5061048a6104853660046155fa565b610d08565b6040519015158152602001610461565b3480156104a657600080fd5b506104ba6104b5366004615626565b610d22565b604051908152602001610461565b3480156104d457600080fd5b506104e86104e3366004615626565b610dd5565b005b3480156104f657600080fd5b506002546104ba565b34801561050b57600080fd5b506104e861051a366004615643565b610e57565b34801561052b57600080fd5b506105537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610461565b34801561057757600080fd5b5061048a61058636600461568e565b611105565b34801561059757600080fd5b506104e86105a63660046156cf565b611129565b3480156105b757600080fd5b5060405160128152602001610461565b3480156105d357600080fd5b506104e861144b565b3480156105e857600080fd5b5061048a6105f73660046155fa565b6114cf565b34801561060857600080fd5b506104e86106173660046156ff565b61150e565b34801561062857600080fd5b506104e8611554565b34801561063d57600080fd5b506105537f000000000000000000000000000000000000000000000000000000000000000081565b34801561067157600080fd5b506104e8610680366004615626565b611670565b34801561069157600080fd5b506104ba611b88565b3480156106a657600080fd5b506104e86106b5366004615626565b611c31565b3480156106c657600080fd5b506104ba611d8d565b3480156106db57600080fd5b506104ba611dcd565b3480156106f057600080fd5b50601554610553906001600160a01b031681565b34801561071057600080fd5b5060055474010000000000000000000000000000000000000000900460ff1661048a565b34801561074057600080fd5b506104ba61074f366004615626565b611e30565b34801561076057600080fd5b506012546105539061010090046001600160a01b031681565b34801561078557600080fd5b506104ba610794366004615626565b600b6020526000908152604090205481565b3480156107b257600080fd5b506104e86107c13660046155fa565b611e52565b3480156107d257600080fd5b506104ba60115481565b3480156107e857600080fd5b506104ba611fcf565b3480156107fd57600080fd5b506104e861080c3660046156ff565b61204b565b6104e861081f3660046156cf565b612058565b34801561083057600080fd5b506104ba61083f366004615626565b6001600160a01b031660009081526020819052604090205490565b34801561086657600080fd5b506104e86120ca565b34801561087b57600080fd5b506104e861088a3660046156ff565b6120dc565b34801561089b57600080fd5b506104ba61214f565b3480156108b057600080fd5b506104e8612193565b3480156108c557600080fd5b506104e86108d43660046156ff565b61220d565b3480156108e557600080fd5b50600854610553906001600160a01b031681565b34801561090557600080fd5b506104e861221a565b34801561091a57600080fd5b506104ba612334565b34801561092f57600080fd5b506104ba60105481565b34801561094557600080fd5b506104ba610954366004615626565b600c6020526000908152604090205481565b34801561097257600080fd5b506005546001600160a01b0316610553565b34801561099057600080fd5b506104e8612340565b3480156109a557600080fd5b50610454612597565b3480156109ba57600080fd5b5060125461048a9060ff1681565b3480156109d457600080fd5b506104e86125a6565b3480156109e957600080fd5b50600954610553906001600160a01b031681565b348015610a0957600080fd5b506104ba61260e565b348015610a1e57600080fd5b5061048a610a2d3660046155fa565b612716565b348015610a3e57600080fd5b5061048a610a4d3660046155fa565b6127c0565b348015610a5e57600080fd5b506104e8610a6d3660046156ff565b6127ce565b348015610a7e57600080fd5b506104ba612a95565b6104e8610a953660046156ff565b612ac3565b348015610aa657600080fd5b506104e8610ab5366004615626565b612b2c565b348015610ac657600080fd5b506104ba60135481565b348015610adc57600080fd5b50600754610553906001600160a01b031681565b348015610afc57600080fd5b506104ba612ba6565b348015610b1157600080fd5b506104ba60145481565b348015610b2757600080fd5b506104ba610b36366004615718565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b6d57600080fd5b506104ba600d5481565b348015610b8357600080fd5b506104e8610b92366004615626565b612bb3565b348015610ba357600080fd5b50600a54610553906001600160a01b031681565b348015610bc357600080fd5b506104e8610bd2366004615626565b612c86565b348015610be357600080fd5b506104ba60165481565b348015610bf957600080fd5b506104e8610c08366004615626565b612ccd565b348015610c1957600080fd5b506104e8612d5a565b348015610c2e57600080fd5b506104e8610c3d3660046156ff565b613360565b348015610c4e57600080fd5b506105537f000000000000000000000000000000000000000000000000000000000000000081565b606060038054610c8590615746565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb190615746565b8015610cfe5780601f10610cd357610100808354040283529160200191610cfe565b820191906000526020600020905b815481529060010190602001808311610ce157829003601f168201915b5050505050905090565b600033610d168185856133cb565b60019150505b92915050565b6015546000906001600160a01b0316610d3d57506000919050565b6015546016546040517f93f1a40b00000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038481166024830152909116906393f1a40b906044016040805180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190615799565b5092915050565b610ddd613523565b600a80546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f68b42fcf63f2d28ae477b4539c3101ade5142acdcc91191a106d867f3554f28a91015b60405180910390a15050565b610e5f613523565b6001600160a01b038316610edf5760405162461bcd60e51b8152602060048201526024808201527f576f6f5375706572436861726765725661756c743a20215f726573657276655660448201527f61756c740000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216610f5b5760405162461bcd60e51b815260206004820152602660248201527f576f6f5375706572436861726765725661756c743a20215f6c656e64696e674d60448201527f616e6167657200000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b038116610fd75760405162461bcd60e51b815260206004820152602760248201527f576f6f5375706572436861726765725661756c743a20215f776974686472617760448201527f4d616e61676572000000000000000000000000000000000000000000000000006064820152608401610ed6565b600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03858116918217909255604080517f1f1fcd5100000000000000000000000000000000000000000000000000000000815290517f000000000000000000000000000000000000000000000000000000000000000090931692631f1fcd51916004808201926020929091908290030181865afa158015611087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ab91906157bd565b6001600160a01b0316146110be57600080fd5b600980546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600a805492909316911617905550565b60003361111385828561357d565b61111e85858561362d565b506001949350505050565b6009546001600160a01b031633146111a95760405162461bcd60e51b815260206004820152602560248201527f576f6f5375706572436861726765725661756c743a20216c656e64696e674d6160448201527f6e616765720000000000000000000000000000000000000000000000000000006064820152608401610ed6565b60125460ff16156111fc5760405162461bcd60e51b815260206004820152600b60248201527f494e20534554544c494e470000000000000000000000000000000000000000006044820152606401610ed6565b611204611d8d565b8211156112535760405162461bcd60e51b815260206004820152601860248201527f494e535546465f414d4f554e545f464f525f424f52524f5700000000000000006044820152606401610ed6565b60006112d583600760009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d091906157da565b613844565b6007546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561133557600080fd5b505af1158015611349573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03160361141b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561140157600080fd5b505af1158015611415573d6000803e3d6000fd5b50505050505b6114467f00000000000000000000000000000000000000000000000000000000000000008385613890565b505050565b6114536139f8565b6002600654036114a55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b6002600655336000908152602081905260409020546114c890613a63565b613a63565b6001600655565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610d169082908690611509908790615822565b6133cb565b611516613523565b601380549082905560408051828152602081018490527f2f0bfd95e6bf57fab22ace02a57c77bdabde00f81ccf61034ae4a915d3a47f4d9101610e4b565b336115676005546001600160a01b031690565b6001600160a01b0316148061161a57506040517faf5b052b0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063af5b052b906024016020604051808303816000875af11580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a919061583a565b6116665760405162461bcd60e51b815260206004820152601c60248201527f576f6f5375706572436861726765725661756c743a202141444d494e000000006044820152606401610ed6565b61166e613cd7565b565b611678613523565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152600760248201527f215f7661756c74000000000000000000000000000000000000000000000000006044820152606401610ed6565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461173657611731611b88565b611738565b475b6007546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529192506001600160a01b031690632e1a7d4d9082906370a0823190602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906157da565b6040518263ffffffff1660e01b81526004016117e491815260200190565b600060405180830381600087803b1580156117fe57600080fd5b505af1158015611812573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461187e57611879611b88565b611880565b475b9050600061188e838361585c565b600780546001600160a01b038781167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080517f1f1fcd510000000000000000000000000000000000000000000000000000000081529051949550918116937f00000000000000000000000000000000000000000000000000000000000000009091169291631f1fcd519160048083019260209291908290030181865afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196991906157bd565b6001600160a01b0316146119bf5760405162461bcd60e51b815260206004820152600c60248201527f494e56414c49445f57414e5400000000000000000000000000000000000000006044820152606401610ed6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603611a96576007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063b6b55f259084906024016000604051808303818588803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b5050505050611b46565b600754611ace907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031684613d47565b6007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050505b6040516001600160a01b03808716919083169033907f548fe255eb14d86b43af1c165d3a356a85be79136670fa5ff20aa3e0284afde790600090a45050505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2c91906157da565b905090565b611c39613523565b600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03838116918217909255604080517f1f1fcd51000000000000000000000000000000000000000000000000000000008152905184937f0000000000000000000000000000000000000000000000000000000000000000169291631f1fcd519160048083019260209291908290030181865afa158015611ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0d91906157bd565b6001600160a01b031614611d895760405162461bcd60e51b815260206004820152602160248201527f576f6f5375706572436861726765725661756c743a202157414e545f7661756c60448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b5050565b600080611d9861260e565b90506000601154601054611dac919061585c565b9050808211611dbc576000611dc6565b611dc6818361585c565b9250505090565b600954604080517fd83e6b3800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163d83e6b389160048083019260209291908290030181865afa158015611c08573d6000803e3d6000fd5b6001600160a01b0381166000908152600c6020526040812054610d1c90613eaf565b611e5a613523565b6001600160a01b038216611eb05760405162461bcd60e51b815260206004820152600c60248201527f215f6d61737465724368656600000000000000000000000000000000000000006044820152606401610ed6565b601580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841690811790915560168290556040517f1526fe270000000000000000000000000000000000000000000000000000000081526004810183905260009190631526fe279060240160a060405180830381865afa158015611f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f669190615873565b505050509050306001600160a01b0316816001600160a01b0316146114465760405162461bcd60e51b8152600401610ed69060208082526004908201527f2170696400000000000000000000000000000000000000000000000000000000604082015260600190565b600080611fda61260e565b90506000611fe6612ba6565b9050600081611ff3612a95565b611ffd919061585c565b905061200a600a826158cb565b6120149083615822565b8310156120405782612027600a836158cb565b6120319084615822565b61203b919061585c565b612043565b60005b935050505090565b612053613523565b601455565b6120606139f8565b6002600654036120b25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b60026006556120c18282613ebd565b50506001600655565b6120d2613523565b61166e60006142c7565b6120e46139f8565b6002600654036121365760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b60026006556121476114c382614331565b506001600655565b600061215a60025490565b156121865760025461216a612a95565b61217c90670de0b6b3a7640000615906565b611c2c91906158cb565b50670de0b6b3a764000090565b61219b6139f8565b6002600654036121ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b6002600655336000908152602081905260409020546114c8905b336143b3565b612215613523565b601055565b3361222d6005546001600160a01b031690565b6001600160a01b031614806122e057506040517faf5b052b0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063af5b052b906024016020604051808303816000875af11580156122bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e0919061583a565b61232c5760405162461bcd60e51b815260206004820152601c60248201527f576f6f5375706572436861726765725661756c743a202141444d494e000000006044820152606401610ed6565b61166e614885565b6000611c2c600e6148f4565b336123536005546001600160a01b031690565b6001600160a01b0316148061240657506040517faf5b052b0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063af5b052b906024016020604051808303816000875af11580156123e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612406919061583a565b6124525760405162461bcd60e51b815260206004820152601c60248201527f576f6f5375706572436861726765725661756c743a202141444d494e000000006044820152606401610ed6565b60125460ff16156124a55760405162461bcd60e51b815260206004820152600b60248201527f494e5f534554544c494e470000000000000000000000000000000000000000006044820152606401610ed6565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600954604080517fa373ed4e00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169163a373ed4e9160048082019260009290919082900301818387803b15801561252f57600080fd5b505af1158015612543573d6000803e3d6000fd5b50505050336001600160a01b03167ffce7d682dc90b7cc945fb8cfff947668bcf6d304aa58823b24d2c06dec38df6e600d5461257d611fcf565b6040805192835260208301919091520160405180910390a2565b606060048054610c8590615746565b6125ae6139f8565b6002600654036126005760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b60026006556114c8336148fe565b6007546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091611c2c916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a91906157da565b600760009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271191906157da565b614e6a565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156127b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ed6565b61111e82868684036133cb565b600033610d1681858561362d565b6009546001600160a01b0316331461284e5760405162461bcd60e51b815260206004820152602560248201527f576f6f5375706572436861726765725661756c743a20216c656e64696e674d6160448201527f6e616765720000000000000000000000000000000000000000000000000000006064820152608401610ed6565b61287a7f0000000000000000000000000000000000000000000000000000000000000000333084614e90565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036129e2576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b50506007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116925063b6b55f25915083906024016000604051808303818588803b1580156129c657600080fd5b505af11580156129da573d6000803e3d6000fd5b505050505050565b600754612a1a907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683613d47565b6007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015612a7957600080fd5b505af1158015612a8d573d6000803e3d6000fd5b505050505b50565b6000612a9f611dcd565b612aa761260e565b612aaf611b88565b612ab99190615822565b611c2c9190615822565b612acb6139f8565b600260065403612b1d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b60026006556121478133613ebd565b612b34613523565b600980546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f9ed29eb74f1356c602e59670cf82bfe8b0f564216ce091e163fbf7f0376aa1979101610e4b565b6000611c2c600d54613eaf565b612bbb613523565b7fffffffffffffffffffffffff11111111111111111111111111111111111111126001600160a01b03821601612bf557612a923347615000565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7991906157da565b9050611d89823383613890565b612c8e613523565b601280546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b612cd5613523565b6001600160a01b038116612d515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ed6565b612a92816142c7565b33612d6d6005546001600160a01b031690565b6001600160a01b03161480612e2057506040517faf5b052b0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063af5b052b906024016020604051808303816000875af1158015612dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e20919061583a565b612e6c5760405162461bcd60e51b815260206004820152601c60248201527f576f6f5375706572436861726765725661756c743a202141444d494e000000006044820152606401610ed6565b60125460ff16612ebe5760405162461bcd60e51b815260206004820152600960248201527f21534554544c494e4700000000000000000000000000000000000000000000006044820152606401610ed6565b612ec6611fcf565b15612f135760405162461bcd60e51b815260206004820152601860248201527f5745454b4c595f52455041595f4e4f545f434c454152454400000000000000006044820152606401610ed6565b6000612f1d61214f565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590506000612f51612ba6565b90508015613277576000612fb282600760009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b6007546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036130f8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130de57600080fd5b505af11580156130f2573d6000803e3d6000fd5b50505050505b81613101611b88565b101561310c57600080fd5b6000613118600e6148f4565b905060005b8181101561322a576000613132600e826150e3565b600a546001600160a01b038083166000908152600c60205260409020549293501690639b927a91908390670de0b6b3a764000090613171908b90615906565b61317b91906158cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156131d957600080fd5b505af11580156131ed573d6000803e3d6000fd5b5050506001600160a01b0382166000908152600c602052604081205550613215600e826150ef565b5050808061322290615943565b91505061311d565b5061323730600d54615104565b6000600d55600a54613274907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031685613890565b50505b60006011819055600954604080517fa373ed4e00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a373ed4e9260048084019382900301818387803b1580156132d757600080fd5b505af11580156132eb573d6000803e3d6000fd5b5050505060006132f9612a95565b9050613306600a826158cb565b601055337f805ee433ea4242be6315bc317b1bf10e767ad8beb03ee547773b3ee1f842c20682613334611dcd565b61333c61260e565b604080519384526020840192909252908201526060015b60405180910390a2505050565b6133686139f8565b6002600654036133ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ed6565b600260065561214761220782614331565b6001600160a01b0383166134465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b0382166134c25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b0316331461166e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ed6565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114613627578181101561361a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ed6565b61362784848484036133cb565b50505050565b6001600160a01b0383166136a95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b0382166137255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b038316600090815260208190526040902054818110156137b45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906137eb908490615822565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161383791815260200190565b60405180910390a3613627565b6000808261385a85670de0b6b3a7640000615906565b61386491906158cb565b9050836138718285614e6a565b1461388657613881816001615822565b613888565b805b949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161391a919061597b565b6000604051808303816000865af19150503d8060008114613957576040519150601f19603f3d011682016040523d82523d6000602084013e61395c565b606091505b5091509150818015613986575080511580613986575080806020019051810190613986919061583a565b612a8d5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610ed6565b60055474010000000000000000000000000000000000000000900460ff161561166e5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ed6565b60008111613ab35760405162461bcd60e51b815260206004820152601d60248201527f576f6f5375706572436861726765725661756c743a2021616d6f756e740000006044820152606401610ed6565b60125460ff1615613b2c5760405162461bcd60e51b815260206004820152603160248201527f576f6f5375706572436861726765725661756c743a2043414e4e4f545f57495460448201527f48445241575f494e5f534554544c494e470000000000000000000000000000006064820152608401610ed6565b601454613b39600e6148f4565b1115613bad5760405162461bcd60e51b815260206004820152602860248201527f576f6f5375706572436861726765725661756c743a204d41585f57495448445260448201527f41575f434f554e540000000000000000000000000000000000000000000000006064820152608401610ed6565b600954604080517fa373ed4e000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163a373ed4e91600480830192600092919082900301818387803b158015613c0b57600080fd5b505af1158015613c1f573d6000803e3d6000fd5b505050506000613c2e83613eaf565b9050613c3c30833086614e90565b6001600160a01b0382166000908152600c6020526040902054613c60908490615822565b6001600160a01b0383166000908152600c6020526040902055600d54613c87908490615822565b600d55613c95600e83615289565b5060408051828152602081018590526001600160a01b038416917febeaa8785285a4f7c37a305351997dceebabc3c357dab98023dc37514a1b6ed69101613353565b613cdf61529e565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529151600092839290871691613dd1919061597b565b6000604051808303816000865af19150503d8060008114613e0e576040519150601f19603f3d011682016040523d82523d6000602084013e613e13565b606091505b5091509150818015613e3d575080511580613e3d575080806020019051810190613e3d919061583a565b612a8d5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c65640000000000000000000000000000000000000000006064820152608401610ed6565b6000610d1c8261271161214f565b81600003613ec9575050565b600960009054906101000a90046001600160a01b03166001600160a01b031663a373ed4e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f1957600080fd5b505af1158015613f2d573d6000803e3d6000fd5b505050506000613f4483613f3f61214f565b615308565b905060008111613f965760405162461bcd60e51b815260206004820152600760248201527f21736861726573000000000000000000000000000000000000000000000000006044820152606401610ed6565b6000613fa183610d22565b6001600160a01b038416600090815260208190526040902054613fc49190615822565b6001600160a01b0384166000908152600b6020526040812054919250613fea8484615822565b613ffc87670de0b6b3a7640000615906565b6140068486615906565b6140109190615822565b61401a91906158cb565b6001600160a01b038087166000908152600b602052604090208290559091507f000000000000000000000000000000000000000000000000000000000000000081167f000000000000000000000000000000000000000000000000000000000000000090911603614178573486146140fa5760405162461bcd60e51b815260206004820152602c60248201527f576f6f5375706572436861726765725661756c743a206d73672e76616c75655f60448201527f494e53554646494349454e5400000000000000000000000000000000000000006064820152608401610ed6565b6007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169063b6b55f259034906024016000604051808303818588803b15801561415a57600080fd5b505af115801561416e573d6000803e3d6000fd5b5050505050614254565b6141a47f0000000000000000000000000000000000000000000000000000000000000000333089614e90565b6007546141dc907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031688613d47565b6007546040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b15801561423b57600080fd5b505af115801561424f573d6000803e3d6000fd5b505050505b61425e858561531d565b614269600a876158cb565b6010546142769190615822565b60105560408051878152602081018690526001600160a01b0387169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a3505050505050565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600954604080517fa373ed4e00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163a373ed4e916004808301928692919082900301818387803b15801561438f57600080fd5b505af11580156143a3573d6000803e3d6000fd5b50505050610d1c826112d061214f565b600082116144035760405162461bcd60e51b815260206004820152601d60248201527f576f6f5375706572436861726765725661756c743a2021616d6f756e740000006044820152606401610ed6565b60125460ff161561447c5760405162461bcd60e51b815260206004820152602d60248201527f576f6f5375706572436861726765725661756c743a204e4f545f414c4c4f574560448201527f445f494e5f534554544c494e47000000000000000000000000000000000000006064820152608401610ed6565b6010546011541061448b575050565b600960009054906101000a90046001600160a01b03166001600160a01b031663a373ed4e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156144db57600080fd5b505af11580156144ef573d6000803e3d6000fd5b5050505060006144fe83613eaf565b9050601154601054614510919061585c565b81111561455f5760405162461bcd60e51b815260206004820181905260248201527f576f6f5375706572436861726765725661756c743a204f55545f4f465f4341506044820152606401610ed6565b336001600160a01b0383161461457a5761457a82338561357d565b6145848284615104565b60006145dd82600760009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b6007546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561463d57600080fd5b505af1158015614651573d6000803e3d6000fd5b50506040517f871e6ca6000000000000000000000000000000000000000000000000000000008152336004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063871e6ca6906024016020604051808303816000875af11580156146d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146fb919061583a565b61471f57612710601354846147109190615906565b61471a91906158cb565b614722565b60005b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036147b0576012546147989061010090046001600160a01b031682615000565b6147ab846147a6838661585c565b615000565b614821565b6012546147ed907f00000000000000000000000000000000000000000000000000000000000000009061010090046001600160a01b031683613890565b6148217f00000000000000000000000000000000000000000000000000000000000000008561481c848761585c565b613890565b8260115461482f9190615822565b60115560408051848152602081018490529081018290526001600160a01b038516907f672004d35ad2124f90299371ade95cf5594500e40705a7cf6eaf7c00b55a07ac9060600160405180910390a25050505050565b61488d6139f8565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613d2a3390565b6000610d1c825490565b6001600160a01b0381166149545760405162461bcd60e51b815260206004820152601c60248201527f576f6f5375706572436861726765725661756c743a20216f776e6572000000006044820152606401610ed6565b6008546001600160a01b03166149d25760405162461bcd60e51b815260206004820152602560248201527f576f6f5375706572436861726765725661756c743a20216d6967726174696f6e60448201527f5661756c740000000000000000000000000000000000000000000000000000006064820152608401610ed6565b600854604080517f1f1fcd5100000000000000000000000000000000000000000000000000000000815290516001600160a01b03928316927f000000000000000000000000000000000000000000000000000000000000000016918391631f1fcd51916004808201926020929091908290030181865afa158015614a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a7e91906157bd565b6001600160a01b031614614af95760405162461bcd60e51b8152602060048201526024808201527f576f6f5375706572436861726765725661756c743a202157414e545f6e65775660448201527f61756c74000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b03821660009081526020819052604081205490819003614b1f57505050565b600960009054906101000a90046001600160a01b03166001600160a01b031663a373ed4e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614b6f57600080fd5b505af1158015614b83573d6000803e3d6000fd5b505050506000614b9282613eaf565b9050336001600160a01b03851614614baf57614baf84338461357d565b614bb98483615104565b6000614c1282600760009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b6007546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015614c7257600080fd5b505af1158015614c86573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603614d65576040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b038681166024830152851690636e553f659084906044016000604051808303818588803b158015614d4757600080fd5b505af1158015614d5b573d6000803e3d6000fd5b5050505050614e0c565b614d907f00000000000000000000000000000000000000000000000000000000000000008584613d47565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b038681166024830152851690636e553f6590604401600060405180830381600087803b158015614df357600080fd5b505af1158015614e07573d6000803e3d6000fd5b505050505b836001600160a01b0316306001600160a01b0316866001600160a01b03167f2f003beff7d020bbaf25c7b278041e72cadccf9e4eaad1805835be384f19df5f85604051614e5b91815260200190565b60405180910390a45050505050565b6000670de0b6b3a7640000614e7f8385615906565b614e8991906158cb565b9392505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614f22919061597b565b6000604051808303816000865af19150503d8060008114614f5f576040519150601f19603f3d011682016040523d82523d6000602084013e614f64565b606091505b5091509150818015614f8e575080511580614f8e575080806020019051810190614f8e919061583a565b6129da5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610ed6565b604080516000808252602082019092526001600160a01b03841690839060405161502a919061597b565b60006040518083038185875af1925050503d8060008114615067576040519150601f19603f3d011682016040523d82523d6000602084013e61506c565b606091505b50509050806114465760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610ed6565b6000614e8983836153fc565b6000614e89836001600160a01b038416615426565b6001600160a01b0382166151805760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b0382166000908152602081905260409020548181101561520f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610ed6565b6001600160a01b038316600090815260208190526040812083830390556002805484929061523e90849061585c565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000614e89836001600160a01b038416615519565b60055474010000000000000000000000000000000000000000900460ff1661166e5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ed6565b600081614e7f84670de0b6b3a7640000615906565b6001600160a01b0382166153735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ed6565b80600260008282546153859190615822565b90915550506001600160a01b038216600090815260208190526040812080548392906153b2908490615822565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600082600001828154811061541357615413615997565b9060005260206000200154905092915050565b6000818152600183016020526040812054801561550f57600061544a60018361585c565b855490915060009061545e9060019061585c565b90508181146154c357600086600001828154811061547e5761547e615997565b90600052602060002001549050808760000184815481106154a1576154a1615997565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806154d4576154d46159c6565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d1c565b6000915050610d1c565b600081815260018301602052604081205461556057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d1c565b506000610d1c565b60005b8381101561558357818101518382015260200161556b565b838111156136275750506000910152565b60208152600082518060208401526155b3816040850160208701615568565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6001600160a01b0381168114612a9257600080fd5b6000806040838503121561560d57600080fd5b8235615618816155e5565b946020939093013593505050565b60006020828403121561563857600080fd5b8135613886816155e5565b60008060006060848603121561565857600080fd5b8335615663816155e5565b92506020840135615673816155e5565b91506040840135615683816155e5565b809150509250925092565b6000806000606084860312156156a357600080fd5b83356156ae816155e5565b925060208401356156be816155e5565b929592945050506040919091013590565b600080604083850312156156e257600080fd5b8235915060208301356156f4816155e5565b809150509250929050565b60006020828403121561571157600080fd5b5035919050565b6000806040838503121561572b57600080fd5b8235615736816155e5565b915060208301356156f4816155e5565b600181811c9082168061575a57607f821691505b602082108103615793577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600080604083850312156157ac57600080fd5b505080516020909101519092909150565b6000602082840312156157cf57600080fd5b8151613886816155e5565b6000602082840312156157ec57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115615835576158356157f3565b500190565b60006020828403121561584c57600080fd5b8151801515811461388657600080fd5b60008282101561586e5761586e6157f3565b500390565b600080600080600060a0868803121561588b57600080fd5b8551615896816155e5565b8095505060208601519350604086015192506060860151915060808601516158bd816155e5565b809150509295509295909350565b600082615901577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561593e5761593e6157f3565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615974576159746157f3565b5060010190565b6000825161598d818460208701615568565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122046c2722a5435f4da8f39a026f5f639eb9a518b1ebfcdf8b4f5be3c4bc58963c364736f6c634300080e0033000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000003f93eced5ad8185f1c197acd17f8a2eb06051365