0x6080604052600436106101f25760003560e01c806370a082311161010d578063a457c2d7116100a0578063bbec4c451161006f578063bbec4c4514610596578063c0246668146105a9578063dd62ed3e146105c9578063e2f456051461060f578063f2fde38b1461062557600080fd5b8063a457c2d714610510578063a5f3d00314610530578063a9059cbb14610546578063b62496f51461056657600080fd5b80638b424267116100dc5780638b424267146104a75780638da5cb5b146104bd57806395d89b41146104db5780639a7a23d6146104f057600080fd5b806370a082311461043d578063715018a61461045d57806388bdd9be146104725780638a8c523c1461049257600080fd5b806339509351116101855780634fbee193116101545780634fbee193146103a457806365b8dbc0146103dd5780636bcb411a146103fd5780636f972cd21461041d57600080fd5b8063395093511461032457806341a2ac701461034457806342966c681461036457806349bd5a5e1461038457600080fd5b80631df4ccfc116101c15780631df4ccfc146102b057806323b872dd146102c657806329b1c15c146102e6578063313ce5671461030857600080fd5b806306fdde03146101fe578063095ea7b3146102295780631694505e1461025957806318160ddd1461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610645565b6040516102209190611dbd565b60405180910390f35b34801561023557600080fd5b50610249610244366004611d37565b6106d7565b6040519015158152602001610220565b34801561026557600080fd5b50600654610279906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561029d57600080fd5b506002545b604051908152602001610220565b3480156102bc57600080fd5b506102a2600d5481565b3480156102d257600080fd5b506102496102e1366004611cc6565b6106ed565b3480156102f257600080fd5b50610306610301366004611c56565b61079c565b005b34801561031457600080fd5b5060405160128152602001610220565b34801561033057600080fd5b5061024961033f366004611d37565b6107e8565b34801561035057600080fd5b5061030661035f366004611d62565b610824565b34801561037057600080fd5b5061030661037f366004611d62565b610853565b34801561039057600080fd5b50600754610279906001600160a01b031681565b3480156103b057600080fd5b506102496103bf366004611c56565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156103e957600080fd5b506103066103f8366004611c56565b6108d9565b34801561040957600080fd5b50600854610279906001600160a01b031681565b34801561042957600080fd5b50610306610438366004611d62565b6109cf565b34801561044957600080fd5b506102a2610458366004611c56565b6109fe565b34801561046957600080fd5b50610306610a19565b34801561047e57600080fd5b5061030661048d366004611c56565b610a4f565b34801561049e57600080fd5b50610306610b53565b3480156104b357600080fd5b506102a2600b5481565b3480156104c957600080fd5b506005546001600160a01b0316610279565b3480156104e757600080fd5b50610213610b92565b3480156104fc57600080fd5b5061030661050b366004611d06565b610ba1565b34801561051c57600080fd5b5061024961052b366004611d37565b610c6c565b34801561053c57600080fd5b506102a2600c5481565b34801561055257600080fd5b50610249610561366004611d37565b610d05565b34801561057257600080fd5b50610249610581366004611c56565b600f6020526000908152604090205460ff1681565b6103066105a4366004611d37565b610d12565b3480156105b557600080fd5b506103066105c4366004611d06565b610dab565b3480156105d557600080fd5b506102a26105e4366004611c8e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561061b57600080fd5b506102a2600a5481565b34801561063157600080fd5b50610306610640366004611c56565b610ebb565b60606003805461065490611fac565b80601f016020809104026020016040519081016040528092919081815260200182805461068090611fac565b80156106cd5780601f106106a2576101008083540402835291602001916106cd565b820191906000526020600020905b8154815290600101906020018083116106b057829003601f168201915b5050505050905090565b60006106e4338484610f56565b50600192915050565b60006106fa84848461107a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107918533858403610f56565b506001949350505050565b6005546001600160a01b031633146107c65760405162461bcd60e51b815260040161077b90611e53565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106e491859061081f908690611f3e565b610f56565b6005546001600160a01b0316331461084e5760405162461bcd60e51b815260040161077b90611e53565b600b55565b61085d3382611400565b6008546001600160a01b031663e30443bc33610878816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050565b6005546001600160a01b031633146109035760405162461bcd60e51b815260040161077b90611e53565b6006546001600160a01b03828116911614156109725760405162461bcd60e51b815260206004820152602860248201527f494d543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b606482015260840161077b565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109f95760405162461bcd60e51b815260040161077b90611e53565b600c55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610a435760405162461bcd60e51b815260040161077b90611e53565b610a4d600061154e565b565b6005546001600160a01b03163314610a795760405162461bcd60e51b815260040161077b90611e53565b6008546001600160a01b0382811691161415610af25760405162461bcd60e51b815260206004820152603260248201527f494d543a20546865206469766964656e6420747261636b657220616c7265616460448201527179206861732074686174206164647265737360701b606482015260840161077b565b60085460405182916001600160a01b0390811691908316907f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b6005546001600160a01b03163314610b7d5760405162461bcd60e51b815260040161077b90611e53565b6007805460ff60b01b1916600160b01b179055565b60606004805461065490611fac565b6005546001600160a01b03163314610bcb5760405162461bcd60e51b815260040161077b90611e53565b6007546001600160a01b0383811691161415610c5e5760405162461bcd60e51b815260206004820152604660248201527f494d543a2054686520556e695377617020706169722063616e6e6f742062652060448201527f72656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6560648201526572506169727360d01b608482015260a40161077b565b610c6882826115a0565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610cee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161077b565b610cfb3385858403610f56565b5060019392505050565b60006106e433848461107a565b6008546001600160a01b03163314610d7b5760405162461bcd60e51b815260206004820152602660248201527f494d543a204f6e6c792063616c6c61626c65206279206469766964656e6420746044820152653930b1b5b2b960d11b606482015260840161077b565b6007805460ff60a81b1916600160a81b179055610d99348284611689565b50506007805460ff60a81b1916905550565b6005546001600160a01b03163314610dd55760405162461bcd60e51b815260040161077b90611e53565b6001600160a01b0382166000908152600e602052604090205460ff1615158115151415610e5c5760405162461bcd60e51b815260206004820152602f60248201527f494d543a204163636f756e7420697320616c7265616479207468652076616c7560448201526e65206f6620276578636c756465642760881b606482015260840161077b565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee55760405162461bcd60e51b815260040161077b90611e53565b6001600160a01b038116610f4a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077b565b610f538161154e565b50565b6001600160a01b038316610fb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161077b565b6001600160a01b0382166110195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161077b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110a05760405162461bcd60e51b815260040161077b90611e88565b6001600160a01b0382166110c65760405162461bcd60e51b815260040161077b90611e10565b600754600160b01b900460ff16611148576005546001600160a01b038481169116146111485760405162461bcd60e51b815260206004820152602b60248201527f494d543a2043616e6e6f74207472616e73666572206265666f7265207472616460448201526a1a5b99c8195b98589b195960aa1b606482015260840161077b565b8061115e5761115983836000611843565b505050565b600d5415611307576001600160a01b0383166000908152600e602052604081205460ff16806111a557506001600160a01b0383166000908152600e602052604090205460ff165b90506000600a546111b5306109fe565b11905060008180156111d15750600754600160a01b900460ff16155b80156111e75750600754600160a81b900460ff16155b801561120b57506001600160a01b0385166000908152600f602052604090205460ff165b8015611215575082155b90508015611246576007805460ff60a01b1916600160a01b179055611238611998565b6007805460ff60a01b191690555b600754600090600160a01b900460ff1615801561126d5750600754600160a81b900460ff16155b8015611277575083155b80156112bd57506001600160a01b0387166000908152600f602052604090205460ff16806112bd57506001600160a01b0386166000908152600f602052604090205460ff165b905080156113025760006112e760646112e1600d5489611aa690919063ffffffff16565b90611ab9565b90506112f38682611ac5565b9550611300883083611843565b505b505050505b611312838383611843565b6008546001600160a01b031663e30443bc8461132d816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561137357600080fd5b505af1925050508015611384575060015b506008546001600160a01b031663e30443bc836113a0816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156113e657600080fd5b505af19250505080156113f7575060015b61115957505050565b6001600160a01b0382166114605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161077b565b6001600160a01b038216600090815260208190526040902054818110156114d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161077b565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611503908490611f95565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152600f602052604090205460ff16151581151514156116355760405162461bcd60e51b815260206004820152603d60248201527f494d543a204175746f6d61746564206d61726b6574206d616b6572207061697260448201527f20697320616c72656164792073657420746f20746861742076616c7565000000606482015260840161077b565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b604080516002808252606082018352600092839291906020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156116f257600080fd5b505afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611c72565b8160008151811061174b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061178d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060006117b8846109fe565b60065460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de959088906117f190899087908a904290600401611ecd565b6000604051808303818588803b15801561180a57600080fd5b505af115801561181e573d6000803e3d6000fd5b5050505050600061183882611832876109fe565b90611ac5565b979650505050505050565b6001600160a01b0383166118695760405162461bcd60e51b815260040161077b90611e88565b6001600160a01b03821661188f5760405162461bcd60e51b815260040161077b90611e10565b6001600160a01b038316600090815260208190526040902054818110156119075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161077b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061193e908490611f3e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161198a91815260200190565b60405180910390a350505050565b60006119a3306109fe565b90506119ae81611ad1565b600047905060006119d0600d546112e1600c5485611aa690919063ffffffff16565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611a0b573d6000803e3d6000fd5b5060085460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611a5d576040519150601f19603f3d011682016040523d82523d6000602084013e611a62565b606091505b5050905080156108d2576040518281527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a15050505050565b6000611ab28284611f76565b9392505050565b6000611ab28284611f56565b6000611ab28284611f95565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b6857600080fd5b505afa158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190611c72565b81600181518110611bc157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600654611be79130911684610f56565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c20908590600090869030904290600401611f02565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505050565b600060208284031215611c67578081fd5b8135611ab281611ffd565b600060208284031215611c83578081fd5b8151611ab281611ffd565b60008060408385031215611ca0578081fd5b8235611cab81611ffd565b91506020830135611cbb81611ffd565b809150509250929050565b600080600060608486031215611cda578081fd5b8335611ce581611ffd565b92506020840135611cf581611ffd565b929592945050506040919091013590565b60008060408385031215611d18578182fd5b8235611d2381611ffd565b915060208301358015158114611cbb578182fd5b60008060408385031215611d49578182fd5b8235611d5481611ffd565b946020939093013593505050565b600060208284031215611d73578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611db25781516001600160a01b031687529582019590820190600101611d8d565b509495945050505050565b6000602080835283518082850152825b81811015611de957858101830151858201604001528201611dcd565b81811115611dfa5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b848152608060208201526000611ee66080830186611d7a565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000611f2160a0830186611d7a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611f5157611f51611fe7565b500190565b600082611f7157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611f9057611f90611fe7565b500290565b600082821015611fa757611fa7611fe7565b500390565b600181811c90821680611fc057607f821691505b60208210811415611fe157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f5357600080fdfea2646970667358221220db3b9da968dbe61bcec3d8f7ef11a4d97fb146079edbbb5854f0df5af7bf59c464736f6c63430008040033
0x6080604052600980546001600160a01b03191673410a8da09db8a550436653f0834e33743f4cf647179055692a5a058fc295ed000000600a556005600b9081556006600c55600d553480156200005457600080fd5b506040518060400160405280601581526020017f496e66696e697479204d696e696e6720546f6b656e00000000000000000000008152506040518060400160405280600381526020016212535560ea1b8152508160039080519060200190620000bf929190620009a4565b508051620000d5906004906020840190620009a4565b505050620000f2620000ec6200063660201b60201c565b6200063a565b30604051620001019062000a33565b60608082526012908201527124a6aa102932bbb0b932102a3930b1b5b2b960711b608082015260a060208201819052600490820152631c92535560e21b60c08201526001600160a01b03909116604082015260e001604051809103906000f08015801562000173573d6000803e3d6000fd5b50600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a919062000a58565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027357600080fd5b505afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000a58565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000332919062000a58565b600680546001600160a01b038086166001600160a01b03199283161790925560078054928416929091169190911790559050620003718160016200068c565b60085460405163031e79db60e41b81526001600160a01b0390911660048201819052906331e79db090602401600060405180830381600087803b158015620003b857600080fd5b505af1158015620003cd573d6000803e3d6000fd5b505060085460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b1580156200041757600080fd5b505af11580156200042c573d6000803e3d6000fd5b50506008546001600160a01b031691506331e79db09050620004566005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200049857600080fd5b505af1158015620004ad573d6000803e3d6000fd5b505060085460405163031e79db60e41b81526001600160a01b03868116600483015290911692506331e79db09150602401600060405180830381600087803b158015620004f957600080fd5b505af11580156200050e573d6000803e3d6000fd5b505060085460405163031e79db60e41b81526001600160a01b03858116600483015290911692506331e79db09150602401600060405180830381600087803b1580156200055a57600080fd5b505af11580156200056f573d6000803e3d6000fd5b505060085460405163f2fde38b60e01b81523360048201526001600160a01b03909116925063f2fde38b9150602401600060405180830381600087803b158015620005b957600080fd5b505af1158015620005ce573d6000803e3d6000fd5b50505050620005e53060016200077b60201b60201c565b62000604620005fc6005546001600160a01b031690565b60016200077b565b6200062e6200061b6005546001600160a01b031690565b6b1027e72f1f12813088000000620008bf565b505062000aea565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152600f602052604090205460ff1615158115151415620007275760405162461bcd60e51b815260206004820152603d60248201527f494d543a204175746f6d61746564206d61726b6574206d616b6572207061697260448201527f20697320616c72656164792073657420746f20746861742076616c756500000060648201526084015b60405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620007d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200071e565b6001600160a01b0382166000908152600e602052604090205460ff1615158115151415620008605760405162461bcd60e51b815260206004820152602f60248201527f494d543a204163636f756e7420697320616c7265616479207468652076616c7560448201526e65206f6620276578636c756465642760881b60648201526084016200071e565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620009175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200071e565b80600260008282546200092b919062000a88565b90915550506001600160a01b038216600090815260208190526040812080548392906200095a90849062000a88565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620009b29062000aad565b90600052602060002090601f016020900481019282620009d6576000855562000a21565b82601f10620009f157805160ff191683800117855562000a21565b8280016001018555821562000a21579182015b8281111562000a2157825182559160200191906001019062000a04565b5062000a2f92915062000a41565b5090565b611a168062002b4283390190565b5b8082111562000a2f576000815560010162000a42565b60006020828403121562000a6a578081fd5b81516001600160a01b038116811462000a81578182fd5b9392505050565b6000821982111562000aa857634e487b7160e01b81526011600452602481fd5b500190565b600181811c9082168062000ac257607f821691505b6020821081141562000ae457634e487b7160e01b600052602260045260246000fd5b50919050565b6120488062000afa6000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a457c2d7116100a0578063bbec4c451161006f578063bbec4c4514610596578063c0246668146105a9578063dd62ed3e146105c9578063e2f456051461060f578063f2fde38b1461062557600080fd5b8063a457c2d714610510578063a5f3d00314610530578063a9059cbb14610546578063b62496f51461056657600080fd5b80638b424267116100dc5780638b424267146104a75780638da5cb5b146104bd57806395d89b41146104db5780639a7a23d6146104f057600080fd5b806370a082311461043d578063715018a61461045d57806388bdd9be146104725780638a8c523c1461049257600080fd5b806339509351116101855780634fbee193116101545780634fbee193146103a457806365b8dbc0146103dd5780636bcb411a146103fd5780636f972cd21461041d57600080fd5b8063395093511461032457806341a2ac701461034457806342966c681461036457806349bd5a5e1461038457600080fd5b80631df4ccfc116101c15780631df4ccfc146102b057806323b872dd146102c657806329b1c15c146102e6578063313ce5671461030857600080fd5b806306fdde03146101fe578063095ea7b3146102295780631694505e1461025957806318160ddd1461029157600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610213610645565b6040516102209190611dbd565b60405180910390f35b34801561023557600080fd5b50610249610244366004611d37565b6106d7565b6040519015158152602001610220565b34801561026557600080fd5b50600654610279906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561029d57600080fd5b506002545b604051908152602001610220565b3480156102bc57600080fd5b506102a2600d5481565b3480156102d257600080fd5b506102496102e1366004611cc6565b6106ed565b3480156102f257600080fd5b50610306610301366004611c56565b61079c565b005b34801561031457600080fd5b5060405160128152602001610220565b34801561033057600080fd5b5061024961033f366004611d37565b6107e8565b34801561035057600080fd5b5061030661035f366004611d62565b610824565b34801561037057600080fd5b5061030661037f366004611d62565b610853565b34801561039057600080fd5b50600754610279906001600160a01b031681565b3480156103b057600080fd5b506102496103bf366004611c56565b6001600160a01b03166000908152600e602052604090205460ff1690565b3480156103e957600080fd5b506103066103f8366004611c56565b6108d9565b34801561040957600080fd5b50600854610279906001600160a01b031681565b34801561042957600080fd5b50610306610438366004611d62565b6109cf565b34801561044957600080fd5b506102a2610458366004611c56565b6109fe565b34801561046957600080fd5b50610306610a19565b34801561047e57600080fd5b5061030661048d366004611c56565b610a4f565b34801561049e57600080fd5b50610306610b53565b3480156104b357600080fd5b506102a2600b5481565b3480156104c957600080fd5b506005546001600160a01b0316610279565b3480156104e757600080fd5b50610213610b92565b3480156104fc57600080fd5b5061030661050b366004611d06565b610ba1565b34801561051c57600080fd5b5061024961052b366004611d37565b610c6c565b34801561053c57600080fd5b506102a2600c5481565b34801561055257600080fd5b50610249610561366004611d37565b610d05565b34801561057257600080fd5b50610249610581366004611c56565b600f6020526000908152604090205460ff1681565b6103066105a4366004611d37565b610d12565b3480156105b557600080fd5b506103066105c4366004611d06565b610dab565b3480156105d557600080fd5b506102a26105e4366004611c8e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561061b57600080fd5b506102a2600a5481565b34801561063157600080fd5b50610306610640366004611c56565b610ebb565b60606003805461065490611fac565b80601f016020809104026020016040519081016040528092919081815260200182805461068090611fac565b80156106cd5780601f106106a2576101008083540402835291602001916106cd565b820191906000526020600020905b8154815290600101906020018083116106b057829003601f168201915b5050505050905090565b60006106e4338484610f56565b50600192915050565b60006106fa84848461107a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107918533858403610f56565b506001949350505050565b6005546001600160a01b031633146107c65760405162461bcd60e51b815260040161077b90611e53565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106e491859061081f908690611f3e565b610f56565b6005546001600160a01b0316331461084e5760405162461bcd60e51b815260040161077b90611e53565b600b55565b61085d3382611400565b6008546001600160a01b031663e30443bc33610878816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156108be57600080fd5b505af11580156108d2573d6000803e3d6000fd5b5050505050565b6005546001600160a01b031633146109035760405162461bcd60e51b815260040161077b90611e53565b6006546001600160a01b03828116911614156109725760405162461bcd60e51b815260206004820152602860248201527f494d543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b606482015260840161077b565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109f95760405162461bcd60e51b815260040161077b90611e53565b600c55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610a435760405162461bcd60e51b815260040161077b90611e53565b610a4d600061154e565b565b6005546001600160a01b03163314610a795760405162461bcd60e51b815260040161077b90611e53565b6008546001600160a01b0382811691161415610af25760405162461bcd60e51b815260206004820152603260248201527f494d543a20546865206469766964656e6420747261636b657220616c7265616460448201527179206861732074686174206164647265737360701b606482015260840161077b565b60085460405182916001600160a01b0390811691908316907f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b6005546001600160a01b03163314610b7d5760405162461bcd60e51b815260040161077b90611e53565b6007805460ff60b01b1916600160b01b179055565b60606004805461065490611fac565b6005546001600160a01b03163314610bcb5760405162461bcd60e51b815260040161077b90611e53565b6007546001600160a01b0383811691161415610c5e5760405162461bcd60e51b815260206004820152604660248201527f494d543a2054686520556e695377617020706169722063616e6e6f742062652060448201527f72656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6560648201526572506169727360d01b608482015260a40161077b565b610c6882826115a0565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610cee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161077b565b610cfb3385858403610f56565b5060019392505050565b60006106e433848461107a565b6008546001600160a01b03163314610d7b5760405162461bcd60e51b815260206004820152602660248201527f494d543a204f6e6c792063616c6c61626c65206279206469766964656e6420746044820152653930b1b5b2b960d11b606482015260840161077b565b6007805460ff60a81b1916600160a81b179055610d99348284611689565b50506007805460ff60a81b1916905550565b6005546001600160a01b03163314610dd55760405162461bcd60e51b815260040161077b90611e53565b6001600160a01b0382166000908152600e602052604090205460ff1615158115151415610e5c5760405162461bcd60e51b815260206004820152602f60248201527f494d543a204163636f756e7420697320616c7265616479207468652076616c7560448201526e65206f6620276578636c756465642760881b606482015260840161077b565b6001600160a01b0382166000818152600e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ee55760405162461bcd60e51b815260040161077b90611e53565b6001600160a01b038116610f4a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077b565b610f538161154e565b50565b6001600160a01b038316610fb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161077b565b6001600160a01b0382166110195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161077b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110a05760405162461bcd60e51b815260040161077b90611e88565b6001600160a01b0382166110c65760405162461bcd60e51b815260040161077b90611e10565b600754600160b01b900460ff16611148576005546001600160a01b038481169116146111485760405162461bcd60e51b815260206004820152602b60248201527f494d543a2043616e6e6f74207472616e73666572206265666f7265207472616460448201526a1a5b99c8195b98589b195960aa1b606482015260840161077b565b8061115e5761115983836000611843565b505050565b600d5415611307576001600160a01b0383166000908152600e602052604081205460ff16806111a557506001600160a01b0383166000908152600e602052604090205460ff165b90506000600a546111b5306109fe565b11905060008180156111d15750600754600160a01b900460ff16155b80156111e75750600754600160a81b900460ff16155b801561120b57506001600160a01b0385166000908152600f602052604090205460ff165b8015611215575082155b90508015611246576007805460ff60a01b1916600160a01b179055611238611998565b6007805460ff60a01b191690555b600754600090600160a01b900460ff1615801561126d5750600754600160a81b900460ff16155b8015611277575083155b80156112bd57506001600160a01b0387166000908152600f602052604090205460ff16806112bd57506001600160a01b0386166000908152600f602052604090205460ff165b905080156113025760006112e760646112e1600d5489611aa690919063ffffffff16565b90611ab9565b90506112f38682611ac5565b9550611300883083611843565b505b505050505b611312838383611843565b6008546001600160a01b031663e30443bc8461132d816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561137357600080fd5b505af1925050508015611384575060015b506008546001600160a01b031663e30443bc836113a0816109fe565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156113e657600080fd5b505af19250505080156113f7575060015b61115957505050565b6001600160a01b0382166114605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161077b565b6001600160a01b038216600090815260208190526040902054818110156114d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161077b565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611503908490611f95565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152600f602052604090205460ff16151581151514156116355760405162461bcd60e51b815260206004820152603d60248201527f494d543a204175746f6d61746564206d61726b6574206d616b6572207061697260448201527f20697320616c72656164792073657420746f20746861742076616c7565000000606482015260840161077b565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b604080516002808252606082018352600092839291906020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156116f257600080fd5b505afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611c72565b8160008151811061174b57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061178d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060006117b8846109fe565b60065460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de959088906117f190899087908a904290600401611ecd565b6000604051808303818588803b15801561180a57600080fd5b505af115801561181e573d6000803e3d6000fd5b5050505050600061183882611832876109fe565b90611ac5565b979650505050505050565b6001600160a01b0383166118695760405162461bcd60e51b815260040161077b90611e88565b6001600160a01b03821661188f5760405162461bcd60e51b815260040161077b90611e10565b6001600160a01b038316600090815260208190526040902054818110156119075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161077b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061193e908490611f3e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161198a91815260200190565b60405180910390a350505050565b60006119a3306109fe565b90506119ae81611ad1565b600047905060006119d0600d546112e1600c5485611aa690919063ffffffff16565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611a0b573d6000803e3d6000fd5b5060085460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611a5d576040519150601f19603f3d011682016040523d82523d6000602084013e611a62565b606091505b5050905080156108d2576040518281527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a15050505050565b6000611ab28284611f76565b9392505050565b6000611ab28284611f56565b6000611ab28284611f95565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611b6857600080fd5b505afa158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba09190611c72565b81600181518110611bc157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600654611be79130911684610f56565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c20908590600090869030904290600401611f02565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505050565b600060208284031215611c67578081fd5b8135611ab281611ffd565b600060208284031215611c83578081fd5b8151611ab281611ffd565b60008060408385031215611ca0578081fd5b8235611cab81611ffd565b91506020830135611cbb81611ffd565b809150509250929050565b600080600060608486031215611cda578081fd5b8335611ce581611ffd565b92506020840135611cf581611ffd565b929592945050506040919091013590565b60008060408385031215611d18578182fd5b8235611d2381611ffd565b915060208301358015158114611cbb578182fd5b60008060408385031215611d49578182fd5b8235611d5481611ffd565b946020939093013593505050565b600060208284031215611d73578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611db25781516001600160a01b031687529582019590820190600101611d8d565b509495945050505050565b6000602080835283518082850152825b81811015611de957858101830151858201604001528201611dcd565b81811115611dfa5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b848152608060208201526000611ee66080830186611d7a565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000611f2160a0830186611d7a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611f5157611f51611fe7565b500190565b600082611f7157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611f9057611f90611fe7565b500290565b600082821015611fa757611fa7611fe7565b500390565b600181811c90821680611fc057607f821691505b60208210811415611fe157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610f5357600080fdfea2646970667358221220db3b9da968dbe61bcec3d8f7ef11a4d97fb146079edbbb5854f0df5af7bf59c464736f6c6343000804003360806040523480156200001157600080fd5b5060405162001a1638038062001a16833981016040819052620000349162000258565b8251839083906200004d906003906020850190620000ff565b50805162000063906004906020840190620000ff565b505050620000806200007a620000a960201b60201c565b620000ad565b600a80546001600160a01b0319166001600160a01b039290921691909117905550620003349050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200010d90620002e1565b90600052602060002090601f0160209004810192826200013157600085556200017c565b82601f106200014c57805160ff19168380011785556200017c565b828001600101855582156200017c579182015b828111156200017c5782518255916020019190600101906200015f565b506200018a9291506200018e565b5090565b5b808211156200018a57600081556001016200018f565b600082601f830112620001b6578081fd5b81516001600160401b0380821115620001d357620001d36200031e565b604051601f8301601f19908116603f01168101908282118183101715620001fe57620001fe6200031e565b816040528381526020925086838588010111156200021a578485fd5b8491505b838210156200023d57858201830151818301840152908201906200021e565b838211156200024e57848385830101525b9695505050505050565b6000806000606084860312156200026d578283fd5b83516001600160401b038082111562000284578485fd5b6200029287838801620001a5565b94506020860151915080821115620002a8578384fd5b50620002b786828701620001a5565b604086015190935090506001600160a01b0381168114620002d6578182fd5b809150509250925092565b600181811c90821680620002f657607f821691505b602082108114156200031857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6116d280620003446000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063a8b9d24011610095578063cbb9390111610064578063cbb9390114610536578063dd62ed3e14610556578063e30443bc1461059c578063f2fde38b146105bc57600080fd5b8063a8b9d240146104a0578063a9059cbb146104c0578063aafd847a146104e0578063c0f306ef1461051657600080fd5b806391b89fba116100d157806391b89fba1461041057806395d89b4114610430578063a457c2d714610445578063a7310b581461046557600080fd5b8063715018a6146103b357806385a6b3ae146103c85780638da5cb5b146103de57600080fd5b8063313ce567116101645780634e7b827f1161013e5780634e7b827f146103185780636a474002146103485780636aff3c4f1461035d57806370a082311461037d57600080fd5b8063313ce567146102bc57806331e79db0146102d857806339509351146102f857600080fd5b8063144fa6d7116101a0578063144fa6d71461023d57806318160ddd1461025d57806323b872dd1461027c57806327ce01471461029c57600080fd5b806303c83302146101da57806306fdde03146101e2578063095ea7b31461020d57600080fd5b366101d5576101d36105dc565b005b600080fd5b6101d36105dc565b3480156101ee57600080fd5b506101f761066f565b60405161020491906114c0565b60405180910390f35b34801561021957600080fd5b5061022d610228366004611496565b610701565b6040519015158152602001610204565b34801561024957600080fd5b506101d36102583660046113d7565b610717565b34801561026957600080fd5b506002545b604051908152602001610204565b34801561028857600080fd5b5061022d610297366004611456565b61076c565b3480156102a857600080fd5b5061026e6102b73660046113d7565b610816565b3480156102c857600080fd5b5060405160128152602001610204565b3480156102e457600080fd5b506101d36102f33660046113d7565b610878565b34801561030457600080fd5b5061022d610313366004611496565b61092d565b34801561032457600080fd5b5061022d6103333660046113d7565b600b6020526000908152604090205460ff1681565b34801561035457600080fd5b506101d3610969565b34801561036957600080fd5b506101d36103783660046114a8565b610972565b34801561038957600080fd5b5061026e6103983660046113d7565b6001600160a01b031660009081526020819052604090205490565b3480156103bf57600080fd5b506101d361097f565b3480156103d457600080fd5b5061026e60095481565b3480156103ea57600080fd5b506005546001600160a01b03165b6040516001600160a01b039091168152602001610204565b34801561041c57600080fd5b5061026e61042b3660046113d7565b6109b3565b34801561043c57600080fd5b506101f76109be565b34801561045157600080fd5b5061022d610460366004611496565b6109cd565b34801561047157600080fd5b506104856104803660046113d7565b610a66565b60408051938452602084019290925290820152606001610204565b3480156104ac57600080fd5b5061026e6104bb3660046113d7565b610abe565b3480156104cc57600080fd5b5061022d6104db366004611496565b610aea565b3480156104ec57600080fd5b5061026e6104fb3660046113d7565b6001600160a01b031660009081526008602052604090205490565b34801561052257600080fd5b506101d36105313660046113d7565b610af7565b34801561054257600080fd5b50600a546103f8906001600160a01b031681565b34801561056257600080fd5b5061026e61057136600461141e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105a857600080fd5b506101d36105b73660046113f3565b610b67565b3480156105c857600080fd5b506101d36105d73660046113d7565b610bed565b60006105e760025490565b116105f157600080fd5b341561066d5761062461060360025490565b61061134600160801b610c85565b61061b91906115a1565b60065490610c98565b60065560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26009546106699034610c98565b6009555b565b60606003805461067e90611636565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa90611636565b80156106f75780601f106106cc576101008083540402835291602001916106f7565b820191906000526020600020905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b600061070e338484610ca4565b50600192915050565b6005546001600160a01b0316331461074a5760405162461bcd60e51b815260040161074190611513565b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610779848484610dc8565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107fe5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610741565b61080b8533858403610ca4565b506001949350505050565b6001600160a01b03811660009081526007602090815260408083205491839052822054600654600160801b92610868926108639261085d916108589190610c85565b610e0c565b90610e1c565b610e5a565b61087291906115a1565b92915050565b6005546001600160a01b031633146108a25760405162461bcd60e51b815260040161074190611513565b6001600160a01b0381166000908152600b602052604090205460ff16156108c857600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191660011790556108f6908290610e6d565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161070e918590610964908690611589565b610ca4565b61066d33610ecc565b61097c3382610faf565b50565b6005546001600160a01b031633146109a95760405162461bcd60e51b815260040161074190611513565b61066d6000611067565b600061087282610abe565b60606004805461067e90611636565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a4f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610741565b610a5c3385858403610ca4565b5060019392505050565b6000806000610a7484610abe565b9250610a95846001600160a01b031660009081526008602052604090205490565b9150610ab6846001600160a01b031660009081526020819052604090205490565b929491935050565b6001600160a01b03811660009081526008602052604081205461087290610ae484610816565b906110b9565b600061070e338484610dc8565b6005546001600160a01b03163314610b215760405162461bcd60e51b815260040161074190611513565b6001600160a01b0381166000908152600b602052604090205460ff16610b4657600080fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b600a546001600160a01b03163314610bba5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c903a37b5b2b760511b6044820152606401610741565b6001600160a01b0382166000908152600b602052604090205460ff1615610bdf575050565b610be98282610e6d565b5050565b6005546001600160a01b03163314610c175760405162461bcd60e51b815260040161074190611513565b6001600160a01b038116610c7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610741565b61097c81611067565b6000610c9182846115c1565b9392505050565b6000610c918284611589565b6001600160a01b038316610d065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610741565b6001600160a01b038216610d675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610741565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405162461bcd60e51b8152602060048201526014602482015273139bc81d1c985b9cd9995c9cc8185b1b1bddd95960621b6044820152606401610741565b505050565b6000818181121561087257600080fd5b600080610e298385611548565b905060008312158015610e3c5750838112155b80610e515750600083128015610e5157508381125b610c9157600080fd5b600080821215610e6957600080fd5b5090565b6001600160a01b03821660009081526020819052604090205480821115610eac576000610e9a83836110b9565b9050610ea684826110c5565b50505050565b80821015610e07576000610ec082846110b9565b9050610ea68482611129565b6000610ed782610abe565b90508015610be9576001600160a01b038216600090815260086020526040902054610f029082610c98565b6001600160a01b038316600081815260086020526040808220939093559151610bb890849084818181858888f193505050503d8060008114610f60576040519150601f19603f3d011682016040523d82523d6000602084013e610f65565b606091505b5050905080610e07576001600160a01b038316600090815260086020526040902054610f9190836110b9565b6001600160a01b038416600090815260086020526040902055505050565b6000610fba83610abe565b90508015610e07576001600160a01b038316600090815260086020526040902054610fe59082610c98565b6001600160a01b038481166000818152600860205260409081902093909355600a54925163bbec4c4560e01b815260048101919091526024810185905291169063bbec4c459083906044016000604051808303818588803b15801561104957600080fd5b505af115801561105d573d6000803e3d6000fd5b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610c91828461161f565b6110cf828261116d565b6111096110ea61085883600654610c8590919063ffffffff16565b6001600160a01b0384166000908152600760205260409020549061124c565b6001600160a01b0390921660009081526007602052604090209190915550565b6111338282611289565b61110961114e61085883600654610c8590919063ffffffff16565b6001600160a01b03841660009081526007602052604090205490610e1c565b6001600160a01b0382166111c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610741565b80600260008282546111d59190611589565b90915550506001600160a01b03821660009081526020819052604081208054839290611202908490611589565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061125983856115e0565b90506000831215801561126c5750838113155b80610e515750600083128015610e515750838113610c9157600080fd5b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610741565b6001600160a01b0382166000908152602081905260409020548181101561135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610741565b6001600160a01b038316600090815260208190526040812083830390556002805484929061138c90849061161f565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000602082840312156113e8578081fd5b8135610c9181611687565b60008060408385031215611405578081fd5b823561141081611687565b946020939093013593505050565b60008060408385031215611430578182fd5b823561143b81611687565b9150602083013561144b81611687565b809150509250929050565b60008060006060848603121561146a578081fd5b833561147581611687565b9250602084013561148581611687565b929592945050506040919091013590565b60008060408385031215611405578182fd5b6000602082840312156114b9578081fd5b5035919050565b6000602080835283518082850152825b818110156114ec578581018301518582016040015282016114d0565b818111156114fd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600080821280156001600160ff1b038490038513161561156a5761156a611671565b600160ff1b839003841281161561158357611583611671565b50500190565b6000821982111561159c5761159c611671565b500190565b6000826115bc57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115db576115db611671565b500290565b60008083128015600160ff1b8501841216156115fe576115fe611671565b6001600160ff1b038401831381161561161957611619611671565b50500390565b60008282101561163157611631611671565b500390565b600181811c9082168061164a57607f821691505b6020821081141561166b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461097c57600080fdfea264697066735822122005b28afe3a7881a387d0c59b37c9686a1278d2d3e2ebe3a18c1d24a8cd92955d64736f6c63430008040033