6080604052600180546001600160a01b0319163317905534801561002257600080fd5b506100336301ffc9a760e01b610038565b6100bb565b6001600160e01b031980821690036100965760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b611374806100ca6000396000f3fe60806040526004361061010e5760003560e01c806340c10f19116100a5578063938b5f3211610074578063a9059cbb11610059578063a9059cbb14610339578063be45fd6214610359578063dd62ed3e1461036c57600080fd5b8063938b5f321461030657806395d89b411461032457600080fd5b806340c10f191461024a57806342966c681461026a5780635a3b7e421461028a57806370a08231146102d057600080fd5b806318160ddd116100e157806318160ddd146101c257806323b872dd146101e15780632801617e14610201578063313ce5671461022357600080fd5b806301ffc9a71461011357806302d05d3f1461014857806306fdde0314610180578063095ea7b3146101a2575b600080fd5b34801561011f57600080fd5b5061013361012e366004610ecb565b6103b2565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b50600154610168906001600160a01b031681565b6040516001600160a01b03909116815260200161013f565b34801561018c57600080fd5b5061019561051f565b60405161013f9190610f3f565b3480156101ae57600080fd5b506101336101bd366004610f6e565b6105af565b3480156101ce57600080fd5b506004545b60405190815260200161013f565b3480156101ed57600080fd5b506101336101fc366004610f98565b610670565b34801561020d57600080fd5b5061022161021c366004610fd4565b6107ce565b005b34801561022f57600080fd5b5061023861081f565b60405160ff909116815260200161013f565b34801561025657600080fd5b50610221610265366004610f6e565b6108a6565b34801561027657600080fd5b50610221610285366004610fef565b610996565b34801561029657600080fd5b5060408051808201909152600381527f32323300000000000000000000000000000000000000000000000000000000006020820152610195565b3480156102dc57600080fd5b506101d36102eb366004610fd4565b6001600160a01b031660009081526005602052604090205490565b34801561031257600080fd5b506002546001600160a01b0316610168565b34801561033057600080fd5b50610195610a7d565b34801561034557600080fd5b50610133610354366004610f6e565b610b2c565b610133610367366004611008565b610ccb565b34801561037857600080fd5b506101d361038736600461108f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000148061044557507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061049157507fffffffff0000000000000000000000000000000000000000000000000000000082167f3ed8c78500000000000000000000000000000000000000000000000000000000145b806104dd57507fffffffff0000000000000000000000000000000000000000000000000000000082167fddef4e1000000000000000000000000000000000000000000000000000000000145b8061051957507fffffffff00000000000000000000000000000000000000000000000000000000821660009081526020819052604090205460ff165b92915050565b600254604080517f06fdde0300000000000000000000000000000000000000000000000000000000815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610582573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105aa91908101906110f1565b905090565b60006001600160a01b03831661060c5760405162461bcd60e51b815260206004820152601760248201527f4552432d3232333a205370656e646572206572726f722e00000000000000000060448201526064015b60405180910390fd5b3360008181526003602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b6001600160a01b03831660009081526003602090815260408083203384529091528120548211156106e35760405162461bcd60e51b815260206004820181905260248201527f4552432d3232333a20496e73756666696369656e7420616c6c6f77616e63652e6044820152606401610603565b6001600160a01b0384166000908152600560205260408120805484929061070b9084906111cd565b90915550506001600160a01b0384166000908152600360209081526040808320338452909152812080548492906107439084906111cd565b90915550506001600160a01b038316600090815260056020526040812080548492906107709084906111e0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107bc91815260200190565b60405180910390a35060019392505050565b6001546001600160a01b031633146107e557600080fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600254604080517f313ce56700000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105aa91906111f3565b6001546001600160a01b0316331461094c5760405162461bcd60e51b815260206004820152604160248201527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f722060448201527f636f6e74726163742063616e206d696e74207772617070657220746f6b656e7360648201527f2e00000000000000000000000000000000000000000000000000000000000000608482015260a401610603565b6001600160a01b038216600090815260056020526040812080548392906109749084906111e0565b92505081905550806004600082825461098d91906111e0565b90915550505050565b6001546001600160a01b03163314610a3d5760405162461bcd60e51b8152602060048201526044602482018190527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f7220908201527f636f6e74726163742063616e2064657374726f79207772617070657220746f6b60648201527f656e732e00000000000000000000000000000000000000000000000000000000608482015260a401610603565b3360009081526005602052604081208054839290610a5c9084906111cd565b925050819055508060046000828254610a7591906111cd565b909155505050565b600254604080517f06fdde0300000000000000000000000000000000000000000000000000000000815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610ae0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b0891908101906110f1565b604051602001610b189190611216565b604051602081830303815290604052905090565b60408051808201825260048152600060208083018290523382526005905291822054610b599084906111cd565b33600090815260056020526040808220929092556001600160a01b03861681522054610b869084906111e0565b6001600160a01b038516600090815260056020526040902055833b15610c34576040517f8943ec020000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638943ec0290610bef90339087908690600401611257565b6020604051808303816000875af1158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190611288565b505b836001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168584604051610c799291906112a5565b60405180910390a36040518381526001600160a01b0385169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060019392505050565b33600090815260056020526040812054610ce69085906111cd565b33600090815260056020526040808220929092556001600160a01b03871681522054610d139085906111e0565b6001600160a01b038616600090815260056020526040902055843b15610dc3576040517f8943ec020000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638943ec0290610d7e9033908890889088906004016112f1565b6020604051808303816000875af1158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190611288565b505b3415610e00576040516001600160a01b038616903480156108fc02916000818181858888f19350505050158015610dfe573d6000803e3d6000fd5b505b846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051610e4793929190611324565b60405180910390a36040518481526001600160a01b0386169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506001949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ec857600080fd5b50565b600060208284031215610edd57600080fd5b8135610ee881610e9a565b9392505050565b60005b83811015610f0a578181015183820152602001610ef2565b50506000910152565b60008151808452610f2b816020860160208601610eef565b601f01601f19169290920160200192915050565b602081526000610ee86020830184610f13565b80356001600160a01b0381168114610f6957600080fd5b919050565b60008060408385031215610f8157600080fd5b610f8a83610f52565b946020939093013593505050565b600080600060608486031215610fad57600080fd5b610fb684610f52565b9250610fc460208501610f52565b9150604084013590509250925092565b600060208284031215610fe657600080fd5b610ee882610f52565b60006020828403121561100157600080fd5b5035919050565b6000806000806060858703121561101e57600080fd5b61102785610f52565b935060208501359250604085013567ffffffffffffffff8082111561104b57600080fd5b818701915087601f83011261105f57600080fd5b81358181111561106e57600080fd5b88602082850101111561108057600080fd5b95989497505060200194505050565b600080604083850312156110a257600080fd5b6110ab83610f52565b91506110b960208401610f52565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561110357600080fd5b815167ffffffffffffffff8082111561111b57600080fd5b818401915084601f83011261112f57600080fd5b815181811115611141576111416110c2565b604051601f8201601f19908116603f01168101908382118183101715611169576111696110c2565b8160405282815287602084870101111561118257600080fd5b611193836020830160208801610eef565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105195761051961119e565b808201808211156105195761051961119e565b60006020828403121561120557600080fd5b815160ff81168114610ee857600080fd5b60008251611228818460208701610eef565b7f3232330000000000000000000000000000000000000000000000000000000000920191825250600301919050565b6001600160a01b038416815282602082015260606040820152600061127f6060830184610f13565b95945050505050565b60006020828403121561129a57600080fd5b8151610ee881610e9a565b8281526040602082015260006112be6040830184610f13565b949350505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6001600160a01b038516815283602082015260606040820152600061131a6060830184866112c6565b9695505050505050565b83815260406020820152600061127f6040830184866112c656fea26469706673582212204a52f19d3387f3f448b75c118c68c1dbfc556fc8433c1767e4e953c94140aaed64736f6c63430008130033