0x6080604052600436106102765760003560e01c80636bc87c3a1161014f578063b1ec2164116100c1578063ec28438a1161007a578063ec28438a146107a6578063efe8a45e146107c6578063f2fde38b146107e6578063f429389014610806578063f8ace3f41461081b578063ffecf5161461083b57600080fd5b8063b1ec2164146106df578063bfa31ff9146106ff578063c0b0fda214610715578063cdda3e541461072b578063dd62ed3e14610740578063ea2f0b371461078657600080fd5b806391ff8d481161011357806391ff8d481461061a57806395d89b41146106305780639edf96cb1461065f5780639f92aa9c1461067f578063a9059cbb1461069f578063abda6292146106bf57600080fd5b80636bc87c3a146105855780636c0a24eb1461059b57806370a08231146105b157806385c7b67b146105e75780638da5cb5b146105fc57600080fd5b80633bbac579116101e857806359175c76116101ac57806359175c76146104cd5780635e3d3007146104ee5780635fcefa42146105105780635fecd9261461053057806367243482146105505780636ac56ced1461057057600080fd5b80633bbac57914610407578063437823ec1461044057806349bd5a5e1461046057806351bc3c851461049857806356209b29146104ad57600080fd5b80632369bf831161023a5780632369bf831461034b57806323b872dd1461036b57806327a14fc21461038b5780632b929aa8146103ab578063313ce567146103cb57806334596c16146103e757600080fd5b80630286ac171461028257806306fdde0314610299578063095ea7b3146102e057806318160ddd1461031057806322976e0d1461033557600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761085b565b005b3480156102a557600080fd5b5060408051808201909152600c81526b2a3937b63639902a37b5b2b760a11b60208201525b6040516102d79190612d44565b60405180910390f35b3480156102ec57600080fd5b506103006102fb366004612dae565b6108f1565b60405190151581526020016102d7565b34801561031c57600080fd5b5067340aad21b3b700005b6040519081526020016102d7565b34801561034157600080fd5b50610327600e5481565b34801561035757600080fd5b50610297610366366004612dda565b610908565b34801561037757600080fd5b50610300610386366004612df7565b610954565b34801561039757600080fd5b506102976103a6366004612e38565b6109bd565b3480156103b757600080fd5b506102976103c6366004612e38565b610a88565b3480156103d757600080fd5b50604051600981526020016102d7565b3480156103f357600080fd5b50610297610402366004612e51565b610bc2565b34801561041357600080fd5b50610300610422366004612dda565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561044c57600080fd5b5061029761045b366004612dda565b610c0a565b34801561046c57600080fd5b50602054610480906001600160a01b031681565b6040516001600160a01b0390911681526020016102d7565b3480156104a457600080fd5b50610297610c58565b3480156104b957600080fd5b506102976104c8366004612dda565b610ca4565b3480156104d957600080fd5b5060225461030090600160281b900460ff1681565b3480156104fa57600080fd5b5060225461030090640100000000900460ff1681565b34801561051c57600080fd5b5061029761052b366004612e73565b610cf0565b34801561053c57600080fd5b5061029761054b366004612dda565b610e8b565b34801561055c57600080fd5b5061029761056b366004612f84565b610ed6565b34801561057c57600080fd5b50610297610fdd565b34801561059157600080fd5b50610327600c5481565b3480156105a757600080fd5b5061032760085481565b3480156105bd57600080fd5b506103276105cc366004612dda565b6001600160a01b031660009081526002602052604090205490565b3480156105f357600080fd5b5061029761106c565b34801561060857600080fd5b506000546001600160a01b0316610480565b34801561062657600080fd5b5061032760105481565b34801561063c57600080fd5b5060408051808201909152600681526554524f4c4c5360d01b60208201526102ca565b34801561066b57600080fd5b5061029761067a366004612e38565b6110f8565b34801561068b57600080fd5b5061032761069a366004612e38565b6111cd565b3480156106ab57600080fd5b506103006106ba366004612dae565b611672565b3480156106cb57600080fd5b506102976106da366004612e38565b61167f565b3480156106eb57600080fd5b506102976106fa366004613046565b61170e565b34801561070b57600080fd5b5061032760055481565b34801561072157600080fd5b5061032760145481565b34801561073757600080fd5b50610297611789565b34801561074c57600080fd5b5061032761075b366004613068565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079257600080fd5b506102976107a1366004612dda565b611815565b3480156107b257600080fd5b506102976107c1366004612e38565b611860565b3480156107d257600080fd5b506102976107e13660046130a1565b61195d565b3480156107f257600080fd5b50610297610801366004612dda565b6119dc565b34801561081257600080fd5b50610297611a74565b34801561082757600080fd5b50610297610836366004612dda565b611aae565b34801561084757600080fd5b50610297610856366004612dda565b611afa565b6000546001600160a01b0316331461088e5760405162461bcd60e51b8152600401610885906130cd565b60405180910390fd5b602254600160281b900460ff16156108da5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916600160281b179055565b60006108fe338484611b91565b5060015b92915050565b6000546001600160a01b031633146109325760405162461bcd60e51b8152600401610885906130cd565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610961848484611cb5565b6109b384336109ae8560405180606001604052806028815260200161350f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061248c565b611b91565b5060019392505050565b6000546001600160a01b031633146109e75760405162461bcd60e51b8152600401610885906130cd565b6109fa67340aad21b3b7000060c8611b48565b8111610a5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b6064820152608401610885565b67340aad21b3b70000811115610a835760405162461bcd60e51b815260040161088590613102565b600855565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610885906130cd565b6064811115610b1e5760405162461bcd60e51b815260206004820152603260248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152710616e206f7220657175616c20746f203130360741b6064820152608401610885565b60008111610b865760405162461bcd60e51b815260206004820152602f60248201527f63616e742070726576656e742073656c6c732c2063686f6f73652076616c756560448201526e02067726561746572207468616e203608c1b6064820152608401610885565b60058190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b03163314610bec5760405162461bcd60e51b8152600401610885906130cd565b6022805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b8152600401610885906130cd565b306000908152600260205260409020548015610ca157610ca1816124c6565b50565b6000546001600160a01b03163314610cce5760405162461bcd60e51b8152600401610885906130cd565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610885906130cd565b6000610d3482610d2e858188818c8c61263a565b9061263a565b90506032610d4382600a611b48565b10610d905760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2035306044820152606401610885565b600e869055600c859055601084905560128390556014829055600f869055600d8590556011849055601383905560158290556000610dd284610d2e898861263a565b9050610df581610def6103e8600e5461269990919063ffffffff16565b90611b48565b601655601054610e0d908290610def906103e8612699565b601755601254610e25908290610def906103e8612699565b601855600e54600c546010546012546014546040805195865260208601949094528484019290925260608401526080830152517f96b67df2c4648b38ada47da86f80d0a256df93150752a7b365ca487cab934e649181900360a00190a150505050505050565b6000546001600160a01b03163314610eb55760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19169055565b6000546001600160a01b03163314610f005760405162461bcd60e51b8152600401610885906130cd565b60c8825110610f705760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610885565b60005b8251811015610fd8576000838281518110610f9057610f90613152565b602002602001015190506000838381518110610fae57610fae613152565b60200260200101519050610fc3338383611cb5565b50508080610fd09061317e565b915050610f73565b505050565b6000546001600160a01b031633146110075760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff16156110545760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916640100000000179055565b6000546001600160a01b031633146110965760405162461bcd60e51b8152600401610885906130cd565b602254600160281b900460ff1615156001146110e75760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805465ff000000000019169055565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610885906130cd565b60225462010000900460ff1615156001146111775760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b6044820152606401610885565b6022805442600655600783905562ff00ff191660011790556022546040516201000090910460ff16151581527fbad30b8287730cfd8b6df18f878abbd745dc20365bfec848056cad8e6c17b91b90602001610bb7565b6020805460408051630dfe168160e01b8152905160009384936001600160a01b031692630dfe168192600480830193928290030181865afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613199565b602080546040805163d21220a760e01b815290519394506000936001600160a01b039092169263d21220a7926004808401938290030181865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613199565b9050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d91906131b6565b60ff1661135c5760405162461bcd60e51b815260206004820152601c60248201527f4552523a20646563696d616c732063616e6e6f74206265207a65726f000000006044820152606401610885565b600080602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906131f5565b5060225491935091506301000000900460ff161561154f57602080546040805163d21220a760e01b815290516001600160a01b039092169263d21220a7926004808401938290030181865afa158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190613199565b9350602060009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d09190613199565b9250602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154991906131f5565b50925090505b6000846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b391906131b6565b6115be90600a613329565b6115d1906001600160701b038416613338565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163591906131b6565b61164090600a613329565b611653906001600160701b038516613338565b61165d8289613338565b6116679190613357565b979650505050505050565b60006108fe338484611cb5565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610885906130cd565b633b9aca008110156117095760405162461bcd60e51b8152602060048201526024808201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20316044820152630408aa8960e31b6064820152608401610885565b600955565b6000546001600160a01b031633146117385760405162461bcd60e51b8152600401610885906130cd565b6298968082111561175b5760405162461bcd60e51b815260040161088590613379565b6298968081111561177e5760405162461bcd60e51b815260040161088590613379565b600a91909155600b55565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff1615156001146118055760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805464ff0000000019169055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461188a5760405162461bcd60e51b8152600401610885906130cd565b61189e67340aad21b3b70000612710611b48565b81116119005760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b6064820152608401610885565b67340aad21b3b700008111156119285760405162461bcd60e51b815260040161088590613102565b60218190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610bb7565b6000546001600160a01b031633146119875760405162461bcd60e51b8152600401610885906130cd565b60168390556017829055601881905560408051848152602081018490529081018290527f27224e2696b8b5ac8d85f4e227d20f3116a7d3b066e62b3d355dfeebd302231a9060600160405180910390a1505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b038116611a6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ca181612718565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610885906130cd565b478015610ca157610ca181612768565b6000546001600160a01b03163314611ad85760405162461bcd60e51b8152600401610885906130cd565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b245760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19166001179055565b6000611b8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612861565b9392505050565b6001600160a01b038316611bf35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610885565b6001600160a01b038216611d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610885565b60008111611ddd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610885565b6001611df16000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015611e2057506000546001600160a01b03848116911614155b8015611e35575060225462010000900460ff16155b8015611e4a57506001600160a01b0384163014155b8015611e5f57506001600160a01b0383163014155b156123175760225460ff16611e7357600080fd5b601d546001600160a01b03858116911614801590611e9f5750601e546001600160a01b03858116911614155b15611eb357602154821115611eb357600080fd5b6020546001600160a01b038581169116148015611ede5750601f546001600160a01b03848116911614155b1561206457600754600654611ef29161263a565b4211158015611f0f5750601d546001600160a01b03858116911614155b8015611f295750601e546001600160a01b03858116911614155b15611f52576001600160a01b0383166000908152601960205260409020805460ff191660011790555b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015611f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb591906133c0565b9050600a5481101561201e5760405162461bcd60e51b815260206004820152602c60248201527f796f75206d75737420627579206174206c65617374206d696e2045544820776f60448201526b393a341037b3103a37b5b2b760a11b6064820152608401610885565b60085461204484610d2e876001600160a01b031660009081526002602052604090205490565b11156120625760405162461bcd60e51b8152600401610885906133d9565b505b602254610100900460ff1615801561208a57506020546001600160a01b03858116911614155b15612317576001600160a01b03841660009081526019602052604090205460ff161580156120d157506001600160a01b03831660009081526019602052604090205460ff16155b6120da57600080fd5b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d91906133c0565b9050600b548110156121ab5760405162461bcd60e51b815260206004820152603160248201527f796f75206d7573742073656c6c206174206c6561737420746865206d696e20456044820152702a24103bb7b93a341037b3103a37b5b2b760791b6064820152608401610885565b602254600160281b900460ff161561223a576009548111156122355760405162461bcd60e51b815260206004820152603c60248201527f796f752063616e6e6f742073656c6c206d6f7265207468616e20746865206d6160448201527f782045544820616d6f756e7420706572207472616e73616374696f6e000000006064820152608401610885565b61228b565b602254640100000000900460ff161561228b57600554602080546001600160a01b031660009081526002909152604090205461227f91606491610def91905b90612699565b83111561228b57600080fd5b6020546001600160a01b038581169116146122e4576008546122c684610d2e876001600160a01b031660009081526002602052604090205490565b11156122e45760405162461bcd60e51b8152600401610885906133d9565b306000908152600260205260409020548015612303576123038161288f565b4780156123135761231347612768565b5050505b6001600160a01b03841660009081526004602052604090205460ff168061235657506001600160a01b03831660009081526004602052604090205460ff165b80612369575060225462010000900460ff165b15612376575060006123fc565b6001600160a01b03841660009081526019602052604090205460ff16806123b557506001600160a01b03831660009081526019602052604090205460ff165b156123fc576123f8600e8054600f55600c8054600d5560108054601155601280546013556014805460155561012c94859055939092558190556000908190559055565b5060015b60225462010000900460ff1615612457576000546001600160a01b03858116911614806124365750601d546001600160a01b038581169116145b8061244e5750601e546001600160a01b038581169116145b61245757600080fd5b61246384848484612919565b612486600f54600e55600d54600c55601154601055601354601255601554601455565b50505050565b600081848411156124b05760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613440565b95945050505050565b6022805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061250a5761250a613152565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125879190613199565b8160018151811061259a5761259a613152565b6001600160a01b039283166020918202929092010152601f546125c09130911684611b91565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125f9908590600090869030904290600401613457565b600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b50506022805461ff001916905550505050565b60008061264783856134c8565b905083811015611b8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610885565b6000826126a857506000610902565b60006126b48385613338565b9050826126c18583613357565b14611b8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610885565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601b546017546001600160a01b03909116906108fc90612791906103e890610def908690612699565b6040518115909202916000818181858888f193505050501580156127b9573d6000803e3d6000fd5b50601c546018546001600160a01b03909116906108fc906127e3906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561280b573d6000803e3d6000fd5b50601a546016546001600160a01b03909116906108fc90612835906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561285d573d6000803e3d6000fd5b5050565b600081836128825760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613357565b6022805461ff001916610100179055600c54601254601054600e546000936128d0936128c3939192610d2e9283919061263a565b600c54610def9085612699565b905060006128df826002611b48565b905060006128ed8483612931565b9050476128f9826124c6565b600061290d83610def866122794787612931565b90506126278482612973565b8061292657612926612a48565b612463848484612aba565b6000611b8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248c565b601f5461298b9030906001600160a01b031684611b91565b601f546001600160a01b031663f305d7198230856000806129b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a4191906134e0565b5050505050565b600e54158015612a585750600c54155b8015612a645750601054155b8015612a705750601254155b8015612a7c5750601454155b15612a8357565b600e8054600f55600c8054600d55601080546011556012805460135560148054601555600094859055928490559083905582905555565b612af36040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612b0e6103e8610def600e548561269990919063ffffffff16565b6020820152600c54612b29906103e890610def908590612699565b8152601054612b41906103e890610def908590612699565b6040820152601254612b5c906103e890610def908590612699565b6060820152601454612b77906103e890610def908590612699565b608082018190526060820151604083015183516020850151612bae9493612ba8939092849283919082908b90612931565b90612931565b60a08201526001600160a01b038416600090815260026020526040902054612bd69083612931565b6001600160a01b038086166000908152600260205260408082209390935560a084015191861681529190912054612c0c9161263a565b60026000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550612c79612c638260600151610d2e8460400151610d2e8660000151876020015161263a90919063ffffffff16565b306000908152600260205260409020549061263a565b30600090815260026020526040812091909155608082015161dead9091527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612cc29161263a565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5560a08101516040516001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612d369190815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612d7157858101830151858201604001528201612d55565b81811115612d83576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ca157600080fd5b60008060408385031215612dc157600080fd5b8235612dcc81612d99565b946020939093013593505050565b600060208284031215612dec57600080fd5b8135611b8a81612d99565b600080600060608486031215612e0c57600080fd5b8335612e1781612d99565b92506020840135612e2781612d99565b929592945050506040919091013590565b600060208284031215612e4a57600080fd5b5035919050565b600060208284031215612e6357600080fd5b81358015158114611b8a57600080fd5b600080600080600060a08688031215612e8b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eed57612eed612eae565b604052919050565b600067ffffffffffffffff821115612f0f57612f0f612eae565b5060051b60200190565b600082601f830112612f2a57600080fd5b81356020612f3f612f3a83612ef5565b612ec4565b82815260059290921b84018101918181019086841115612f5e57600080fd5b8286015b84811015612f795780358352918301918301612f62565b509695505050505050565b60008060408385031215612f9757600080fd5b823567ffffffffffffffff80821115612faf57600080fd5b818501915085601f830112612fc357600080fd5b81356020612fd3612f3a83612ef5565b82815260059290921b84018101918181019089841115612ff257600080fd5b948201945b8386101561301957853561300a81612d99565b82529482019490820190612ff7565b9650508601359250508082111561302f57600080fd5b5061303c85828601612f19565b9150509250929050565b6000806040838503121561305957600080fd5b50508035926020909101359150565b6000806040838503121561307b57600080fd5b823561308681612d99565b9150602083013561309681612d99565b809150509250929050565b6000806000606084860312156130b657600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561319257613192613168565b5060010190565b6000602082840312156131ab57600080fd5b8151611b8a81612d99565b6000602082840312156131c857600080fd5b815160ff81168114611b8a57600080fd5b80516001600160701b03811681146131f057600080fd5b919050565b60008060006060848603121561320a57600080fd5b613213846131d9565b9250613221602085016131d9565b9150604084015163ffffffff8116811461323a57600080fd5b809150509250925092565b600181815b8085111561328057816000190482111561326657613266613168565b8085161561327357918102915b93841c939080029061324a565b509250929050565b60008261329757506001610902565b816132a457506000610902565b81600181146132ba57600281146132c4576132e0565b6001915050610902565b60ff8411156132d5576132d5613168565b50506001821b610902565b5060208310610133831016604e8410600b8410161715613303575081810a610902565b61330d8383613245565b806000190482111561332157613321613168565b029392505050565b6000611b8a60ff841683613288565b600081600019048311821515161561335257613352613168565b500290565b60008261337457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526027908201527f63616e74206d616b6520746865206c696d697420686967686572207468616e206040820152660605c62408aa8960cb1b606082015260800190565b6000602082840312156133d257600080fd5b5051919050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b60008282101561345257613452613168565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134a75784516001600160a01b031683529383019391830191600101613482565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134db576134db613168565b500190565b6000806000606084860312156134f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016e7a5d32834e3ec1476f0e1ff0c1397ad0b4703df208310e213b949e5b52b2364736f6c634300080a0033
0x6080604052600260055564012a05f2006009556000600a818155600b8290556028600c819055600d819055600e819055600f5560108190556011819055601281905560135560148190556015556102ee601655607d6017819055601855601a80546001600160a01b031990811673e85ec5e9b863eecd8efe12b77eca2e2cc8fd115517909155601b8054909116732008fbc22476fe372a8a449a832cea4e3b517b1c1790556022805465ffffffffffff191662010000179055348015620000c557600080fd5b5060405162003c1338038062003c13833981016040819052620000e891620005cd565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915562000167308267340aad21b3b7000062000414565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc9190620005cd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002409190620005cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b49190620005cd565b602080546001600160a01b0319166001600160a01b03928316908117909155601f5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003429190620005f8565b5067340aad21b3b7000060218190555062000375600167340aad21b3b700006200054060201b62001b481790919060201c565b6008556064600555601c5433600081815260026020908152604080832067340aad21b3b700009081905583546001600160a01b039081168552600484528285208054600160ff19918216811790925530875284872080549091169091179055915190815294169550919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000697565b6001600160a01b0383166200047c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004df5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000473565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200058a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200059160201b60201c565b9392505050565b60008183620005b55760405162461bcd60e51b81526004016200047391906200061c565b506000620005c4848662000674565b95945050505050565b600060208284031215620005e057600080fd5b81516001600160a01b03811681146200058a57600080fd5b6000602082840312156200060b57600080fd5b815180151581146200058a57600080fd5b600060208083528351808285015260005b818110156200064b578581018301518582016040015282016200062d565b818111156200065e576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200069257634e487b7160e01b600052601260045260246000fd5b500490565b61356c80620006a76000396000f3fe6080604052600436106102765760003560e01c80636bc87c3a1161014f578063b1ec2164116100c1578063ec28438a1161007a578063ec28438a146107a6578063efe8a45e146107c6578063f2fde38b146107e6578063f429389014610806578063f8ace3f41461081b578063ffecf5161461083b57600080fd5b8063b1ec2164146106df578063bfa31ff9146106ff578063c0b0fda214610715578063cdda3e541461072b578063dd62ed3e14610740578063ea2f0b371461078657600080fd5b806391ff8d481161011357806391ff8d481461061a57806395d89b41146106305780639edf96cb1461065f5780639f92aa9c1461067f578063a9059cbb1461069f578063abda6292146106bf57600080fd5b80636bc87c3a146105855780636c0a24eb1461059b57806370a08231146105b157806385c7b67b146105e75780638da5cb5b146105fc57600080fd5b80633bbac579116101e857806359175c76116101ac57806359175c76146104cd5780635e3d3007146104ee5780635fcefa42146105105780635fecd9261461053057806367243482146105505780636ac56ced1461057057600080fd5b80633bbac57914610407578063437823ec1461044057806349bd5a5e1461046057806351bc3c851461049857806356209b29146104ad57600080fd5b80632369bf831161023a5780632369bf831461034b57806323b872dd1461036b57806327a14fc21461038b5780632b929aa8146103ab578063313ce567146103cb57806334596c16146103e757600080fd5b80630286ac171461028257806306fdde0314610299578063095ea7b3146102e057806318160ddd1461031057806322976e0d1461033557600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029761085b565b005b3480156102a557600080fd5b5060408051808201909152600c81526b2a3937b63639902a37b5b2b760a11b60208201525b6040516102d79190612d44565b60405180910390f35b3480156102ec57600080fd5b506103006102fb366004612dae565b6108f1565b60405190151581526020016102d7565b34801561031c57600080fd5b5067340aad21b3b700005b6040519081526020016102d7565b34801561034157600080fd5b50610327600e5481565b34801561035757600080fd5b50610297610366366004612dda565b610908565b34801561037757600080fd5b50610300610386366004612df7565b610954565b34801561039757600080fd5b506102976103a6366004612e38565b6109bd565b3480156103b757600080fd5b506102976103c6366004612e38565b610a88565b3480156103d757600080fd5b50604051600981526020016102d7565b3480156103f357600080fd5b50610297610402366004612e51565b610bc2565b34801561041357600080fd5b50610300610422366004612dda565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561044c57600080fd5b5061029761045b366004612dda565b610c0a565b34801561046c57600080fd5b50602054610480906001600160a01b031681565b6040516001600160a01b0390911681526020016102d7565b3480156104a457600080fd5b50610297610c58565b3480156104b957600080fd5b506102976104c8366004612dda565b610ca4565b3480156104d957600080fd5b5060225461030090600160281b900460ff1681565b3480156104fa57600080fd5b5060225461030090640100000000900460ff1681565b34801561051c57600080fd5b5061029761052b366004612e73565b610cf0565b34801561053c57600080fd5b5061029761054b366004612dda565b610e8b565b34801561055c57600080fd5b5061029761056b366004612f84565b610ed6565b34801561057c57600080fd5b50610297610fdd565b34801561059157600080fd5b50610327600c5481565b3480156105a757600080fd5b5061032760085481565b3480156105bd57600080fd5b506103276105cc366004612dda565b6001600160a01b031660009081526002602052604090205490565b3480156105f357600080fd5b5061029761106c565b34801561060857600080fd5b506000546001600160a01b0316610480565b34801561062657600080fd5b5061032760105481565b34801561063c57600080fd5b5060408051808201909152600681526554524f4c4c5360d01b60208201526102ca565b34801561066b57600080fd5b5061029761067a366004612e38565b6110f8565b34801561068b57600080fd5b5061032761069a366004612e38565b6111cd565b3480156106ab57600080fd5b506103006106ba366004612dae565b611672565b3480156106cb57600080fd5b506102976106da366004612e38565b61167f565b3480156106eb57600080fd5b506102976106fa366004613046565b61170e565b34801561070b57600080fd5b5061032760055481565b34801561072157600080fd5b5061032760145481565b34801561073757600080fd5b50610297611789565b34801561074c57600080fd5b5061032761075b366004613068565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561079257600080fd5b506102976107a1366004612dda565b611815565b3480156107b257600080fd5b506102976107c1366004612e38565b611860565b3480156107d257600080fd5b506102976107e13660046130a1565b61195d565b3480156107f257600080fd5b50610297610801366004612dda565b6119dc565b34801561081257600080fd5b50610297611a74565b34801561082757600080fd5b50610297610836366004612dda565b611aae565b34801561084757600080fd5b50610297610856366004612dda565b611afa565b6000546001600160a01b0316331461088e5760405162461bcd60e51b8152600401610885906130cd565b60405180910390fd5b602254600160281b900460ff16156108da5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916600160281b179055565b60006108fe338484611b91565b5060015b92915050565b6000546001600160a01b031633146109325760405162461bcd60e51b8152600401610885906130cd565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610961848484611cb5565b6109b384336109ae8560405180606001604052806028815260200161350f602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061248c565b611b91565b5060019392505050565b6000546001600160a01b031633146109e75760405162461bcd60e51b8152600401610885906130cd565b6109fa67340aad21b3b7000060c8611b48565b8111610a5b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b6064820152608401610885565b67340aad21b3b70000811115610a835760405162461bcd60e51b815260040161088590613102565b600855565b6000546001600160a01b03163314610ab25760405162461bcd60e51b8152600401610885906130cd565b6064811115610b1e5760405162461bcd60e51b815260206004820152603260248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152710616e206f7220657175616c20746f203130360741b6064820152608401610885565b60008111610b865760405162461bcd60e51b815260206004820152602f60248201527f63616e742070726576656e742073656c6c732c2063686f6f73652076616c756560448201526e02067726561746572207468616e203608c1b6064820152608401610885565b60058190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b03163314610bec5760405162461bcd60e51b8152600401610885906130cd565b6022805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610c825760405162461bcd60e51b8152600401610885906130cd565b306000908152600260205260409020548015610ca157610ca1816124c6565b50565b6000546001600160a01b03163314610cce5760405162461bcd60e51b8152600401610885906130cd565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610885906130cd565b6000610d3482610d2e858188818c8c61263a565b9061263a565b90506032610d4382600a611b48565b10610d905760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2035306044820152606401610885565b600e869055600c859055601084905560128390556014829055600f869055600d8590556011849055601383905560158290556000610dd284610d2e898861263a565b9050610df581610def6103e8600e5461269990919063ffffffff16565b90611b48565b601655601054610e0d908290610def906103e8612699565b601755601254610e25908290610def906103e8612699565b601855600e54600c546010546012546014546040805195865260208601949094528484019290925260608401526080830152517f96b67df2c4648b38ada47da86f80d0a256df93150752a7b365ca487cab934e649181900360a00190a150505050505050565b6000546001600160a01b03163314610eb55760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19169055565b6000546001600160a01b03163314610f005760405162461bcd60e51b8152600401610885906130cd565b60c8825110610f705760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610885565b60005b8251811015610fd8576000838281518110610f9057610f90613152565b602002602001015190506000838381518110610fae57610fae613152565b60200260200101519050610fc3338383611cb5565b50508080610fd09061317e565b915050610f73565b505050565b6000546001600160a01b031633146110075760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff16156110545760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b6044820152606401610885565b6022805465ffff000000001916640100000000179055565b6000546001600160a01b031633146110965760405162461bcd60e51b8152600401610885906130cd565b602254600160281b900460ff1615156001146110e75760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805465ff000000000019169055565b6000546001600160a01b031633146111225760405162461bcd60e51b8152600401610885906130cd565b60225462010000900460ff1615156001146111775760405162461bcd60e51b81526020600482015260156024820152741c1c995cd85b1948185b1c9958591e48195b991959605a1b6044820152606401610885565b6022805442600655600783905562ff00ff191660011790556022546040516201000090910460ff16151581527fbad30b8287730cfd8b6df18f878abbd745dc20365bfec848056cad8e6c17b91b90602001610bb7565b6020805460408051630dfe168160e01b8152905160009384936001600160a01b031692630dfe168192600480830193928290030181865afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613199565b602080546040805163d21220a760e01b815290519394506000936001600160a01b039092169263d21220a7926004808401938290030181865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613199565b9050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130d91906131b6565b60ff1661135c5760405162461bcd60e51b815260206004820152601c60248201527f4552523a20646563696d616c732063616e6e6f74206265207a65726f000000006044820152606401610885565b600080602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906131f5565b5060225491935091506301000000900460ff161561154f57602080546040805163d21220a760e01b815290516001600160a01b039092169263d21220a7926004808401938290030181865afa158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190613199565b9350602060009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d09190613199565b9250602060009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154991906131f5565b50925090505b6000846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b391906131b6565b6115be90600a613329565b6115d1906001600160701b038416613338565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163591906131b6565b61164090600a613329565b611653906001600160701b038516613338565b61165d8289613338565b6116679190613357565b979650505050505050565b60006108fe338484611cb5565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610885906130cd565b633b9aca008110156117095760405162461bcd60e51b8152602060048201526024808201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20316044820152630408aa8960e31b6064820152608401610885565b600955565b6000546001600160a01b031633146117385760405162461bcd60e51b8152600401610885906130cd565b6298968082111561175b5760405162461bcd60e51b815260040161088590613379565b6298968081111561177e5760405162461bcd60e51b815260040161088590613379565b600a91909155600b55565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610885906130cd565b602254640100000000900460ff1615156001146118055760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48191a5cd8589b195960821b6044820152606401610885565b6022805464ff0000000019169055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461188a5760405162461bcd60e51b8152600401610885906130cd565b61189e67340aad21b3b70000612710611b48565b81116119005760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e303160448201526a25206f6620737570706c7960a81b6064820152608401610885565b67340aad21b3b700008111156119285760405162461bcd60e51b815260040161088590613102565b60218190556040518181527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf90602001610bb7565b6000546001600160a01b031633146119875760405162461bcd60e51b8152600401610885906130cd565b60168390556017829055601881905560408051848152602081018490529081018290527f27224e2696b8b5ac8d85f4e227d20f3116a7d3b066e62b3d355dfeebd302231a9060600160405180910390a1505050565b6000546001600160a01b03163314611a065760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b038116611a6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610885565b610ca181612718565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610885906130cd565b478015610ca157610ca181612768565b6000546001600160a01b03163314611ad85760405162461bcd60e51b8152600401610885906130cd565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b245760405162461bcd60e51b8152600401610885906130cd565b6001600160a01b03166000908152601960205260409020805460ff19166001179055565b6000611b8a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612861565b9392505050565b6001600160a01b038316611bf35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610885565b6001600160a01b038216611c545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610885565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610885565b6001600160a01b038216611d7b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610885565b60008111611ddd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610885565b6001611df16000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015611e2057506000546001600160a01b03848116911614155b8015611e35575060225462010000900460ff16155b8015611e4a57506001600160a01b0384163014155b8015611e5f57506001600160a01b0383163014155b156123175760225460ff16611e7357600080fd5b601d546001600160a01b03858116911614801590611e9f5750601e546001600160a01b03858116911614155b15611eb357602154821115611eb357600080fd5b6020546001600160a01b038581169116148015611ede5750601f546001600160a01b03848116911614155b1561206457600754600654611ef29161263a565b4211158015611f0f5750601d546001600160a01b03858116911614155b8015611f295750601e546001600160a01b03858116911614155b15611f52576001600160a01b0383166000908152601960205260409020805460ff191660011790555b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015611f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb591906133c0565b9050600a5481101561201e5760405162461bcd60e51b815260206004820152602c60248201527f796f75206d75737420627579206174206c65617374206d696e2045544820776f60448201526b393a341037b3103a37b5b2b760a11b6064820152608401610885565b60085461204484610d2e876001600160a01b031660009081526002602052604090205490565b11156120625760405162461bcd60e51b8152600401610885906133d9565b505b602254610100900460ff1615801561208a57506020546001600160a01b03858116911614155b15612317576001600160a01b03841660009081526019602052604090205460ff161580156120d157506001600160a01b03831660009081526019602052604090205460ff16155b6120da57600080fd5b6040516327e4aaa760e21b8152600481018390526000903090639f92aa9c90602401602060405180830381865afa158015612119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213d91906133c0565b9050600b548110156121ab5760405162461bcd60e51b815260206004820152603160248201527f796f75206d7573742073656c6c206174206c6561737420746865206d696e20456044820152702a24103bb7b93a341037b3103a37b5b2b760791b6064820152608401610885565b602254600160281b900460ff161561223a576009548111156122355760405162461bcd60e51b815260206004820152603c60248201527f796f752063616e6e6f742073656c6c206d6f7265207468616e20746865206d6160448201527f782045544820616d6f756e7420706572207472616e73616374696f6e000000006064820152608401610885565b61228b565b602254640100000000900460ff161561228b57600554602080546001600160a01b031660009081526002909152604090205461227f91606491610def91905b90612699565b83111561228b57600080fd5b6020546001600160a01b038581169116146122e4576008546122c684610d2e876001600160a01b031660009081526002602052604090205490565b11156122e45760405162461bcd60e51b8152600401610885906133d9565b306000908152600260205260409020548015612303576123038161288f565b4780156123135761231347612768565b5050505b6001600160a01b03841660009081526004602052604090205460ff168061235657506001600160a01b03831660009081526004602052604090205460ff165b80612369575060225462010000900460ff165b15612376575060006123fc565b6001600160a01b03841660009081526019602052604090205460ff16806123b557506001600160a01b03831660009081526019602052604090205460ff165b156123fc576123f8600e8054600f55600c8054600d5560108054601155601280546013556014805460155561012c94859055939092558190556000908190559055565b5060015b60225462010000900460ff1615612457576000546001600160a01b03858116911614806124365750601d546001600160a01b038581169116145b8061244e5750601e546001600160a01b038581169116145b61245757600080fd5b61246384848484612919565b612486600f54600e55600d54600c55601154601055601354601255601554601455565b50505050565b600081848411156124b05760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613440565b95945050505050565b6022805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061250a5761250a613152565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125879190613199565b8160018151811061259a5761259a613152565b6001600160a01b039283166020918202929092010152601f546125c09130911684611b91565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125f9908590600090869030904290600401613457565b600060405180830381600087803b15801561261357600080fd5b505af1158015612627573d6000803e3d6000fd5b50506022805461ff001916905550505050565b60008061264783856134c8565b905083811015611b8a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610885565b6000826126a857506000610902565b60006126b48385613338565b9050826126c18583613357565b14611b8a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610885565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b601b546017546001600160a01b03909116906108fc90612791906103e890610def908690612699565b6040518115909202916000818181858888f193505050501580156127b9573d6000803e3d6000fd5b50601c546018546001600160a01b03909116906108fc906127e3906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561280b573d6000803e3d6000fd5b50601a546016546001600160a01b03909116906108fc90612835906103e890610def908690612699565b6040518115909202916000818181858888f1935050505015801561285d573d6000803e3d6000fd5b5050565b600081836128825760405162461bcd60e51b81526004016108859190612d44565b5060006124bd8486613357565b6022805461ff001916610100179055600c54601254601054600e546000936128d0936128c3939192610d2e9283919061263a565b600c54610def9085612699565b905060006128df826002611b48565b905060006128ed8483612931565b9050476128f9826124c6565b600061290d83610def866122794787612931565b90506126278482612973565b8061292657612926612a48565b612463848484612aba565b6000611b8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061248c565b601f5461298b9030906001600160a01b031684611b91565b601f546001600160a01b031663f305d7198230856000806129b46000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a1c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a4191906134e0565b5050505050565b600e54158015612a585750600c54155b8015612a645750601054155b8015612a705750601254155b8015612a7c5750601454155b15612a8357565b600e8054600f55600c8054600d55601080546011556012805460135560148054601555600094859055928490559083905582905555565b612af36040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612b0e6103e8610def600e548561269990919063ffffffff16565b6020820152600c54612b29906103e890610def908590612699565b8152601054612b41906103e890610def908590612699565b6040820152601254612b5c906103e890610def908590612699565b6060820152601454612b77906103e890610def908590612699565b608082018190526060820151604083015183516020850151612bae9493612ba8939092849283919082908b90612931565b90612931565b60a08201526001600160a01b038416600090815260026020526040902054612bd69083612931565b6001600160a01b038086166000908152600260205260408082209390935560a084015191861681529190912054612c0c9161263a565b60026000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550612c79612c638260600151610d2e8460400151610d2e8660000151876020015161263a90919063ffffffff16565b306000908152600260205260409020549061263a565b30600090815260026020526040812091909155608082015161dead9091527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612cc29161263a565b61dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5560a08101516040516001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612d369190815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612d7157858101830151858201604001528201612d55565b81811115612d83576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ca157600080fd5b60008060408385031215612dc157600080fd5b8235612dcc81612d99565b946020939093013593505050565b600060208284031215612dec57600080fd5b8135611b8a81612d99565b600080600060608486031215612e0c57600080fd5b8335612e1781612d99565b92506020840135612e2781612d99565b929592945050506040919091013590565b600060208284031215612e4a57600080fd5b5035919050565b600060208284031215612e6357600080fd5b81358015158114611b8a57600080fd5b600080600080600060a08688031215612e8b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eed57612eed612eae565b604052919050565b600067ffffffffffffffff821115612f0f57612f0f612eae565b5060051b60200190565b600082601f830112612f2a57600080fd5b81356020612f3f612f3a83612ef5565b612ec4565b82815260059290921b84018101918181019086841115612f5e57600080fd5b8286015b84811015612f795780358352918301918301612f62565b509695505050505050565b60008060408385031215612f9757600080fd5b823567ffffffffffffffff80821115612faf57600080fd5b818501915085601f830112612fc357600080fd5b81356020612fd3612f3a83612ef5565b82815260059290921b84018101918181019089841115612ff257600080fd5b948201945b8386101561301957853561300a81612d99565b82529482019490820190612ff7565b9650508601359250508082111561302f57600080fd5b5061303c85828601612f19565b9150509250929050565b6000806040838503121561305957600080fd5b50508035926020909101359150565b6000806040838503121561307b57600080fd5b823561308681612d99565b9150602083013561309681612d99565b809150509250929050565b6000806000606084860312156130b657600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526030908201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160408201526f6c20746f20746f74616c537570706c7960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561319257613192613168565b5060010190565b6000602082840312156131ab57600080fd5b8151611b8a81612d99565b6000602082840312156131c857600080fd5b815160ff81168114611b8a57600080fd5b80516001600160701b03811681146131f057600080fd5b919050565b60008060006060848603121561320a57600080fd5b613213846131d9565b9250613221602085016131d9565b9150604084015163ffffffff8116811461323a57600080fd5b809150509250925092565b600181815b8085111561328057816000190482111561326657613266613168565b8085161561327357918102915b93841c939080029061324a565b509250929050565b60008261329757506001610902565b816132a457506000610902565b81600181146132ba57600281146132c4576132e0565b6001915050610902565b60ff8411156132d5576132d5613168565b50506001821b610902565b5060208310610133831016604e8410600b8410161715613303575081810a610902565b61330d8383613245565b806000190482111561332157613321613168565b029392505050565b6000611b8a60ff841683613288565b600081600019048311821515161561335257613352613168565b500290565b60008261337457634e487b7160e01b600052601260045260246000fd5b500490565b60208082526027908201527f63616e74206d616b6520746865206c696d697420686967686572207468616e206040820152660605c62408aa8960cb1b606082015260800190565b6000602082840312156133d257600080fd5b5051919050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b60008282101561345257613452613168565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134a75784516001600160a01b031683529383019391830191600101613482565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134db576134db613168565b500190565b6000806000606084860312156134f557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016e7a5d32834e3ec1476f0e1ff0c1397ad0b4703df208310e213b949e5b52b2364736f6c634300080a0033000000000000000000000000b03fc7872f63d6b15cbd661234cc2946def83792