[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtShare", "type": "uint256" } ], "name": "AddDebt", "type": "event" }, { "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": "uint256", "name": "id", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "killer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "prize", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "left", "type": "uint256" } ], "name": "Kill", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtShare", "type": "uint256" } ], "name": "RemoveDebt", "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": true, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "loan", "type": "uint256" } ], "name": "Work", "type": "event" }, { "constant": false, "inputs": [], "name": "acceptGovernor", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" } ], "name": "additionalApprove", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "bankCurrencyBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "bankcurrency", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "config", "outputs": [ { "internalType": "contract BankConfig", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "debtShare", "type": "uint256" } ], "name": "debtShareToVal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "debtVal", "type": "uint256" } ], "name": "debtValToShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "deposit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "emergencyWithdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "getPricePerFullShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "glbDebtShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "glbDebtVal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "governor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "graveyard", "outputs": [ { "internalType": "uint256", "name": "height", "type": "uint256" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "debt", "type": "uint256" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint256", "name": "returned", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "contract BankConfig", "name": "_config", "type": "address" }, { "internalType": "address", "name": "_bankToken", "type": "address" }, { "internalType": "address", "name": "_vault", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" } ], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "insideVaultBankCurrency", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "kill", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "lastAccrueTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "nextPositionID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "pendingGovernor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "pendingInterest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "positionInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "positions", "outputs": [ { "internalType": "address", "name": "bigfoot", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "debtShare", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "recover", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "reduceReserve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "reservePool", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_pendingGovernor", "type": "address" } ], "name": "setPendingGovernor", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalBankCurrency", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "contract BankConfig", "name": "_config", "type": "address" } ], "name": "updateConfig", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "vault", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "share", "type": "uint256" }, { "internalType": "uint8", "name": "", "type": "uint8" } ], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "withdrawReserve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "address", "name": "bigfoot", "type": "address" }, { "internalType": "uint256", "name": "loan", "type": "uint256" }, { "internalType": "uint256", "name": "maxReturn", "type": "uint256" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "work", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50613b27806100206000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80636cc919c811610151578063a9059cbb116100c3578063e3056a3411610087578063e3056a3414610940578063e58bb63914610948578063ea7d530f14610950578063f235757f1461096d578063f60290e414610993578063fbfa77cf146109b057610274565b8063a9059cbb146107e2578063c6f7a6eb1461080e578063d29a0025146108ed578063db2e21bc1461090a578063dd62ed3e1461091257610274565b8063903d429611610115578063903d42961461073157806395d89b411461075757806399fbab881461075f5780639ffe7973146107a6578063a457c2d7146107ae578063a6cb8f7d146107da57610274565b80636cc919c81461069f57806370a08231146106c557806377c7b8fc146106eb57806379502c55146106f357806389097a6a146106fb57610274565b806323af9b2f116101ea578063313ce567116101ae578063313ce567146105ba57806339509351146105d857806342294bfe14610604578063598b8e711461060c5780636b6216ad1461067a5780636b735cca1461069757610274565b806323af9b2f1461052957806323b872dd1461053157806329a1f362146105675780632da7271b146105955780632fc11c0f1461059d57610274565b806315b994871161023c57806315b994871461037c57806318160ddd146103d35780631c58ce14146103db5780631c824905146104095780631ec82cb814610411578063238b4bc51461044757610274565b80630266f0441461027957806306fdde0314610293578063095ea7b3146103105780630c340a24146103505780630f82519914610374575b600080fd5b6102816109b8565b60408051918252519081900360200190f35b61029b6109be565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d55781810151838201526020016102bd565b50505050905090810190601f1680156103025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033c6004803603604081101561032657600080fd5b506001600160a01b038135169060200135610a4c565b604080519115158252519081900360200190f35b610358610a63565b604080516001600160a01b039092168252519081900360200190f35b610281610a72565b6103a86004803603604081101561039257600080fd5b506001600160a01b038135169060200135610a78565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610281610ac3565b610407600480360360408110156103f157600080fd5b506001600160a01b038135169060200135610aca565b005b610281610bdf565b6104076004803603606081101561042757600080fd5b506001600160a01b03813581169160208101359091169060400135610be5565b610407600480360360c081101561045d57600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b919390929091602081019035600160201b8111156104e857600080fd5b8201836020820111156104fa57600080fd5b803590602001918460018302840111600160201b8311171561051b57600080fd5b91935091503560ff16610ca6565b610281610dea565b61033c6004803603606081101561054757600080fd5b506001600160a01b03813581169160208101359091169060400135610e1d565b6104076004803603604081101561057d57600080fd5b506001600160a01b0381358116916020013516610e74565b610281610f55565b610281600480360360208110156105b357600080fd5b503561101e565b6105c261113a565b6040805160ff9092168252519081900360200190f35b61033c600480360360408110156105ee57600080fd5b506001600160a01b038135169060200135611143565b61035861117f565b6104076004803603602081101561062257600080fd5b810190602081018135600160201b81111561063c57600080fd5b82018360208201111561064e57600080fd5b803590602001918460208302840111600160201b8311171561066f57600080fd5b50909250905061118e565b6104076004803603602081101561069057600080fd5b50356113b0565b61028161141b565b610407600480360360208110156106b557600080fd5b50356001600160a01b0316611431565b610281600480360360208110156106db57600080fd5b50356001600160a01b03166114ab565b6102816114c6565b6103586114f3565b6107186004803603602081101561071157600080fd5b5035611507565b6040805192835260208301919091528051918290030190f35b6104076004803603604081101561074757600080fd5b508035906020013560ff166115a4565b61029b611790565b61077c6004803603602081101561077557600080fd5b50356117eb565b604080516001600160a01b0394851681529290931660208301528183015290519081900360600190f35b610281611819565b61033c600480360360408110156107c457600080fd5b506001600160a01b03813516906020013561181f565b61028161185b565b61033c600480360360408110156107f857600080fd5b506001600160a01b038135169060200135611861565b610407600480360360c081101561082457600080fd5b8135916001600160a01b036020820135169160408201359160608101359181019060a081016080820135600160201b81111561085f57600080fd5b82018360208201111561087157600080fd5b803590602001918460208302840111600160201b8311171561089257600080fd5b919390929091602081019035600160201b8111156108af57600080fd5b8201836020820111156108c157600080fd5b803590602001918460018302840111600160201b831117156108e257600080fd5b50909250905061186e565b6104076004803603602081101561090357600080fd5b5035612185565b6104076126cd565b6102816004803603604081101561092857600080fd5b506001600160a01b0381358116916020013516612708565b610358612733565b610407612742565b6102816004803603602081101561096657600080fd5b50356127c1565b6104076004803603602081101561098357600080fd5b50356001600160a01b03166127f0565b610281600480360360208110156109a957600080fd5b5035612864565b610358612898565b60445481565b603c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a445780601f10610a1957610100808354040283529160200191610a44565b820191906000526020600020905b815481529060010190602001808311610a2757829003601f168201915b505050505081565b6000610a593384846128a7565b5060015b92915050565b6037546001600160a01b031681565b60415481565b60396020528160005260406000208181548110610a9157fe5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b6003545b90565b6037546001600160a01b03163314610b1c576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b6004805460010190819055604454610b3a908363ffffffff61299316565b604455610b45610dea565b821115610b8c576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b610b9683836129f0565b6004548114610bda576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b505050565b60405481565b6037546001600160a01b03163314610c37576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b6004805460010190819055610c5c6001600160a01b038516848463ffffffff612a7f16565b6004548114610ca0576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b50505050565b600054610100900460ff1680610cbf5750610cbf612bd9565b80610ccd575060005460ff16155b610d085760405162461bcd60e51b815260040180806020018281038252602e8152602001806139c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610d33576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b03808b166001600160a01b031992831617909255603b8054928a1692909116919091179055610d6b612bdf565b610d73612c9f565b603e8054610100600160a81b0319166101006001600160a01b038c1602179055426043556001604055610da8603c87876138a1565b50610db5603d85856138a1565b50603e805460ff191660ff8416179055610dcd612d45565b8015610ddf576000805461ff00191690555b505050505050505050565b6000610e18610df7610f55565b603a54610e0c906001600160a01b0316612d6c565b9063ffffffff612de816565b905090565b6000610e2a848484612e49565b6001600160a01b038416600090815260026020908152604080832033808552925290912054610e6a918691610e65908663ffffffff61299316565b6128a7565b5060019392505050565b6037546001600160a01b03163314610ec6576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b603a546001600160a01b03838116911614801590610ef25750603b546001600160a01b03838116911614155b610f35576040805162461bcd60e51b815260206004820152600f60248201526e1b9bc81c9d59dcc8185b1b1bddd959608a1b604482015290519081900360640190fd5b610f516001600160a01b0383168260001963ffffffff612f8d16565b5050565b603b546000908190610f6f906001600160a01b0316612d6c565b90506000603b60009054906101000a90046001600160a01b03166001600160a01b03166377c7b8fc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc157600080fd5b505afa158015610fd5573d6000803e3d6000fd5b505050506040513d6020811015610feb57600080fd5b50519050611017670de0b6b3a764000061100b848463ffffffff6130df16565b9063ffffffff61313816565b9250505090565b60006043544211156111315760006110416043544261299390919063ffffffff16565b9050600061105d84611051610dea565b9063ffffffff61299316565b90506000603e60019054906101000a90046001600160a01b03166001600160a01b031663c6dfa13f604254846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156110c457600080fd5b505afa1580156110d8573d6000803e3d6000fd5b505050506040513d60208110156110ee57600080fd5b505160425490915061112790670de0b6b3a76400009061100b90869061111b90869063ffffffff6130df16565b9063ffffffff6130df16565b9350505050611135565b5060005b919050565b603e5460ff1681565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610a59918590610e65908663ffffffff612de816565b603a546001600160a01b031681565b600060435442111561126f5760006111a58261101e565b9050600061123961271061100b603e60019054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561120057600080fd5b505afa158015611214573d6000803e3d6000fd5b505050506040513d602081101561122a57600080fd5b5051859063ffffffff6130df16565b60445490915061124f908263ffffffff612de816565b604455604254611265908363ffffffff612de816565b6042555050426043555b6004805460010190819055600061128461141b565b905060006112c48686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506131a292505050565b9050600082156112ef576112ea8361100b6112dd610ac3565b859063ffffffff6130df16565b6112f1565b815b90506112fd3382613244565b67016345785d8a000061130e610ac3565b1015611361576040805162461bcd60e51b815260206004820152601d60248201527f6465706f7369743a20746f74616c20737570706c7920746f6f206c6f77000000604482015290519081900360640190fd5b611369613336565b5050506004548114610ca0576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b6037546001600160a01b03163314611402576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b604454611415908263ffffffff61299316565b60445550565b6000610e18604454611051604254610e0c610dea565b6037546001600160a01b03163314611483576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b603e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526001602052604090205490565b6000610e186114d3610ac3565b61100b6114de61141b565b670de0b6b3a76400009063ffffffff6130df16565b603e5461010090046001600160a01b031681565b6000818152603f60209081526040808320805482516303c1db6b60e51b8152600481018790529251859492936001600160a01b039092169263783b6d609260248082019391829003018186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d602081101561158a57600080fd5b5051600282015461159a906127c1565b9250925050915091565b600060435442111561164c5760006115bb8261101e565b9050600061161661271061100b603e60019054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561120057600080fd5b60445490915061162c908263ffffffff612de816565b604455604254611642908363ffffffff612de816565b6042555050426043555b6004805460010190819055600061167c611664610ac3565b61100b61166f61141b565b889063ffffffff6130df16565b9050611686610dea565b8111156116c45760405162461bcd60e51b8152600401808060200182810382526030815260200180613a9f6030913960400191505060405180910390fd5b6116ce338661339a565b6116d833826129f0565b60006116e2610ac3565b90508015806116f9575067016345785d8a00008110155b61174a576040805162461bcd60e51b815260206004820152601e60248201527f77697468647261773a20746f74616c20737570706c7920746f6f206c6f770000604482015290519081900360640190fd5b50506004548114610ca0576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b603d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a445780601f10610a1957610100808354040283529160200191610a44565b603f602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b60435481565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610a59918590610e65908663ffffffff61299316565b60425481565b6000610a59338484612e49565b3332146118ac576040805162461bcd60e51b81526020600482015260076024820152666e6f7420656f6160c81b604482015290519081900360640190fd5b60048054600101908190556043546000904211156119605760006118cf8261101e565b9050600061192a61271061100b603e60019054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561120057600080fd5b604454909150611940908263ffffffff612de816565b604455604254611956908363ffffffff612de816565b6042555050426043555b896119ac5760408054600180820183556000828152603f6020529290922080546001600160a01b038d166001600160a01b03199182161782559201805490921633179091559950611abc565b6040548a106119f4576040805162461bcd60e51b815260206004820152600f60248201526e189859081c1bdcda5d1a5bdb881a59608a1b604482015290519081900360640190fd5b60008a8152603f60205260409020546001600160a01b038a8116911614611a59576040805162461bcd60e51b8152602060048201526014602482015273189859081c1bdcda5d1a5bdb88189a59d99bdbdd60621b604482015290519081900360640190fd5b60008a8152603f60205260409020600101546001600160a01b03163314611abc576040805162461bcd60e51b81526020600482015260126024820152713737ba103837b9b4ba34b7b71037bbb732b960711b604482015290519081900360640190fd5b6040805189815290518b917f73c4ef442856bea52a6b34a83f35484ee65828010254ec27766c5a8c13db6c84919081900360200190a2603e546040805163c530054960e01b81526001600160a01b038c8116600483015291516101009093049091169163c530054991602480820192602092909190829003018186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d6020811015611b6f57600080fd5b5051611bb2576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081848189a59d99bdbdd609a1b604482015290519081900360640190fd5b871580611c375750603e546040805161237f60e41b81526001600160a01b038c81166004830152915161010090930490911691620237f091602480820192602092909190829003018186803b158015611c0a57600080fd5b505afa158015611c1e573d6000803e3d6000fd5b505050506040513d6020811015611c3457600080fd5b50515b611c88576040805162461bcd60e51b815260206004820152601c60248201527f626967666f6f74206e6f7420616363657074206d6f7265206465627400000000604482015290519081900360640190fd5b6000611c9789610e0c8d613475565b9050600080611cdc8b610e0c8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506131a292505050565b9050611ce6610dea565b811115611d245760405162461bcd60e51b815260040180806020018281038252602181526020018061393a6021913960400191505060405180910390fd5b6000611d3282611051610dea565b9050611d3e8d836129f0565b8c6001600160a01b03166348db8cc48f33878c8c6040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015611dda57600080fd5b505af1158015611dee573d6000803e3d6000fd5b50505050611dfe81611051610dea565b925050506000611e1783611e12848d61351a565b61351a565b9050611e29838263ffffffff61299316565b9250821561208f57603e60019054906101000a90046001600160a01b03166001600160a01b031663e1ed42866040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7f57600080fd5b505afa158015611e93573d6000803e3d6000fd5b505050506040513d6020811015611ea957600080fd5b5051831015611ef5576040805162461bcd60e51b8152602060048201526013602482015272746f6f20736d616c6c20646562742073697a6560681b604482015290519081900360640190fd5b60008c6001600160a01b031663783b6d608f6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611f3b57600080fd5b505afa158015611f4f573d6000803e3d6000fd5b505050506040513d6020811015611f6557600080fd5b810190808051906020019092919050505090506000603e60019054906101000a90046001600160a01b03166001600160a01b031663ad58e5738f876040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b158015611fed57600080fd5b505afa158015612001573d6000803e3d6000fd5b505050506040513d602081101561201757600080fd5b5051905061202d8561271063ffffffff6130df16565b61203d838363ffffffff6130df16565b1015612082576040805162461bcd60e51b815260206004820152600f60248201526e3130b2103bb7b935903330b1ba37b960891b604482015290519081900360640190fd5b61208c8f86613530565b50505b808211156120a3576120a3338284036129f0565b6120ab613336565b67016345785d8a000060415410156120f45760405162461bcd60e51b81526004018080602001828103825260258152602001806139ee6025913960400191505060405180910390fd5b67016345785d8a0000604254101561213d5760405162461bcd60e51b8152600401808060200182810382526025815260200180613a136025913960400191505060405180910390fd5b505050506004548114610ddf576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b3332146121c3576040805162461bcd60e51b81526020600482015260076024820152666e6f7420656f6160c81b604482015290519081900360640190fd5b600060435442111561226b5760006121da8261101e565b9050600061223561271061100b603e60019054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b15801561120057600080fd5b60445490915061224b908263ffffffff612de816565b604455604254612261908363ffffffff612de816565b6042555050426043555b60048054600101908190556000838152603f6020526040902060028101546122c4576040805162461bcd60e51b81526020600482015260076024820152661b9bc81919589d60ca1b604482015290519081900360640190fd5b60006122cf85613475565b8254604080516303c1db6b60e51b81526004810189905290519293506000926001600160a01b039092169163783b6d6091602480820192602092909190829003018186803b15801561232057600080fd5b505afa158015612334573d6000803e3d6000fd5b505050506040513d602081101561234a57600080fd5b5051603e548454604080516313f6321b60e01b81526001600160a01b039283166004820152602481018790529051939450600093610100909304909116916313f6321b91604480820192602092909190829003018186803b1580156123ae57600080fd5b505afa1580156123c2573d6000803e3d6000fd5b505050506040513d60208110156123d857600080fd5b505190506123ee8361271063ffffffff6130df16565b6123fe838363ffffffff6130df16565b10612442576040805162461bcd60e51b815260206004820152600f60248201526e63616e2774206c697175696461746560881b604482015290519081900360640190fd5b600061244c610dea565b8554604080516301057c4960e61b8152600481018c905290519293506001600160a01b039091169163415f12409160248082019260009290919082900301818387803b15801561249b57600080fd5b505af11580156124af573d6000803e3d6000fd5b5050505060006124c182611051610dea565b9050600061251c61271061100b603e60019054906101000a90046001600160a01b03166001600160a01b03166328ae433e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120057600080fd5b90506000612530838363ffffffff61299316565b905081156125425761254233836129f0565b6000878211612552576000612556565b8782035b90508015612576576001890154612576906001600160a01b0316826129f0565b61257e613336565b6040805184815260208101839052815133928f927fa150a1ba7e1c4b72a15f8cb872406ce63950404709b67fbfe52b36792f483a39929081900390910190a3603960008a60010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206040518060a001604052804381526020018e81526020018a8152602001898152602001838152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401555050505050505050505050506004548114610bda576040805162461bcd60e51b815260206004820152601f602482015260008051602061397e833981519152604482015290519081900360640190fd5b60006126d8336114ab565b905060006126f26126e7610ac3565b61100b6112dd61141b565b90506126fe338361339a565b610f5133826129f0565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6038546001600160a01b031681565b6038546001600160a01b031633146127a1576040805162461bcd60e51b815260206004820152601860248201527f6e6f74207468652070656e64696e6720676f7665726e6f720000000000000000604482015290519081900360640190fd5b603880546001600160a01b03199081169091556037805490911633179055565b6000604154600014156127d5575080611135565b610a5d60415461100b604254856130df90919063ffffffff16565b6037546001600160a01b03163314612842576040805162461bcd60e51b815260206004820152601060248201526f3737ba103a34329033b7bb32b93737b960811b604482015290519081900360640190fd5b603880546001600160a01b0319166001600160a01b0392909216919091179055565b600060415460001415612878575080611135565b610a5d6001610e0c60425461100b604154876130df90919063ffffffff16565b603b546001600160a01b031681565b6001600160a01b0383166128ec5760405162461bcd60e51b8152600401808060200182810382526024815260200180613acf6024913960400191505060405180910390fd5b6001600160a01b0382166129315760405162461bcd60e51b815260040180806020018281038252602281526020018061399e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156129ea576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b603a54600090612a08906001600160a01b0316612d6c565b9050818110612a3357603a54612a2e906001600160a01b0316848463ffffffff612a7f16565b610bda565b612a4b612a46838363ffffffff61299316565b6135cd565b603a54610bda908490612a66906001600160a01b0316612d6c565b603a546001600160a01b0316919063ffffffff612a7f16565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612afc5780518252601f199092019160209182019101612add565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b5e576040519150601f19603f3d011682016040523d82523d6000602084013e612b63565b606091505b5091509150818015612b91575080511580612b915750808060200190516020811015612b8e57600080fd5b50515b612bd2576040805162461bcd60e51b815260206004820152600d60248201526c10b9b0b332aa3930b739b332b960991b604482015290519081900360640190fd5b5050505050565b303b1590565b600054610100900460ff1680612bf85750612bf8612bd9565b80612c06575060005460ff16155b612c415760405162461bcd60e51b815260040180806020018281038252602e8152602001806139c0602e913960400191505060405180910390fd5b600054610100900460ff16158015612c6c576000805460ff1961ff0019909116610100171660011790555b603780546001600160a01b031990811633179091556038805490911690558015612c9c576000805461ff00191690555b50565b600054610100900460ff1680612cb85750612cb8612bd9565b80612cc6575060005460ff16155b612d015760405162461bcd60e51b815260040180806020018281038252602e8152602001806139c0602e913960400191505060405180910390fd5b600054610100900460ff16158015612d2c576000805460ff1961ff0019909116610100171660011790555b60016004558015612c9c576000805461ff001916905550565b603b54603a54612d6a916001600160a01b03918216911660001963ffffffff612f8d16565b565b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015612db657600080fd5b505afa158015612dca573d6000803e3d6000fd5b505050506040513d6020811015612de057600080fd5b505192915050565b600082820183811015612e42576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038316612e8e5760405162461bcd60e51b8152600401808060200182810382526025815260200180613a7a6025913960400191505060405180910390fd5b6001600160a01b038216612ed35760405162461bcd60e51b815260040180806020018281038252602381526020018061395b6023913960400191505060405180910390fd5b6001600160a01b038316600090815260016020526040902054612efc908263ffffffff61299316565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612f31908263ffffffff612de816565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b6020831061300a5780518252601f199092019160209182019101612feb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461306c576040519150601f19603f3d011682016040523d82523d6000602084013e613071565b606091505b509150915081801561309f57508051158061309f575080806020019051602081101561309c57600080fd5b50515b612bd2576040805162461bcd60e51b815260206004820152600c60248201526b2173616665417070726f766560a01b604482015290519081900360640190fd5b6000826130ee57506000610a5d565b828202828482816130fb57fe5b0414612e425760405162461bcd60e51b8152600401808060200182810382526021815260200180613a386021913960400191505060405180910390fd5b600080821161318e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161319957fe5b04949350505050565b603a5460009081906131bc906001600160a01b0316612d6c565b90506000836000815181106131cd57fe5b60200260200101511115613212576132123330856000815181106131ed57fe5b6020908102919091010151603a546001600160a01b031692919063ffffffff61373a16565b603a5460009061322a906001600160a01b0316612d6c565b905061323c818363ffffffff61299316565b949350505050565b6001600160a01b03821661329f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546132b2908263ffffffff612de816565b6003556001600160a01b0382166000908152600160205260409020546132de908263ffffffff612de816565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b603b60009054906101000a90046001600160a01b03166001600160a01b031663de5f62686040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561338657600080fd5b505af1158015610ca0573d6000803e3d6000fd5b6001600160a01b0382166133df5760405162461bcd60e51b8152600401808060200182810382526021815260200180613a596021913960400191505060405180910390fd5b6003546133f2908263ffffffff61299316565b6003556001600160a01b03821660009081526001602052604090205461341e908263ffffffff61299316565b6001600160a01b0383166000818152600160209081526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6000818152603f602052604081206002810154801561350f576000613499826127c1565b600060028501556041549091506134b6908363ffffffff61299316565b6041556042546134cc908263ffffffff61299316565b60425560408051838152905186917fc141cd58846e97354928242dcc7ddd92a6a0ecf03bdb5d3a411d260b9abc3272919081900360200190a29250611135915050565b600092505050611135565b60008183106135295781612e42565b5090919050565b6000828152603f602052604081209061354883612864565b6002830154909150613560908263ffffffff612de816565b6002830155604154613578908263ffffffff612de816565b60415560425461358e908463ffffffff612de816565b60425560408051828152905185917f43b70d61bab6f8bfcf27c791452876c7da386b19652e19b8f21e8927aa6577ab919081900360200190a250505050565b6135d5610f55565b8110156136d657603b5460408051631df1ee3f60e21b815290516001600160a01b0390921691632e1a7d4d916136839161366b9160019186916377c7b8fc916004808301926020929190829003018186803b15801561363357600080fd5b505afa158015613647573d6000803e3d6000fd5b505050506040513d602081101561365d57600080fd5b50519063ffffffff612de816565b61100b85670de0b6b3a764000063ffffffff6130df16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156136b957600080fd5b505af11580156136cd573d6000803e3d6000fd5b50505050612c9c565b603b60009054906101000a90046001600160a01b03166001600160a01b031663853828b66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561372657600080fd5b505af1158015612bd2573d6000803e3d6000fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106137bf5780518252601f1990920191602091820191016137a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613821576040519150601f19603f3d011682016040523d82523d6000602084013e613826565b606091505b5091509150818015613854575080511580613854575080806020019051602081101561385157600080fd5b50515b613899576040805162461bcd60e51b815260206004820152601160248201527021736166655472616e7366657246726f6d60781b604482015290519081900360640190fd5b505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138e25782800160ff1982351617855561390f565b8280016001018555821561390f579182015b8281111561390f5782358255916020019190600101906138f4565b5061391b92915061391f565b5090565b610ac791905b8082111561391b576000815560010161392556fe696e73756666696369656e742043555252454e435920696e207468652062616e6b45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c0045524332303a20617070726f766520746f20746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656472656d61696e696e6720676c6f62616c206465627420736861726520746f6f20736d616c6c72656d61696e696e6720676c6f62616c20646562742076616c756520746f6f20736d616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735574696c697a6174696f6e20746f6f20686967682c20776974686472617720616e20736d616c6c657220616d6f756e7445524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a7231582060f0a06de0dd00768b395865c03002551f4c4e725000931a3773bb4205046ad964736f6c63430005110032