60806040526008805461ffff19166101011790556200002b69152d02c7e14af680000060001962000dde565b620000399060001962000e0b565b600c55600e54600f5560105460115561019060138190556000601481905561025860158190556016929092556017819055601891909155601955601e805460ff191660011790556461c9f36800601f556023805461ffff60a81b19169055348015620000a457600080fd5b50600080546001600160a01b0319163390811782556040519091829160008051602062004922833981519152908290a350600c5433600081815260046020526040902091909155737a250d5630b4cf539739df2c5dacb4c659f2488d6200010d8160016200043f565b602280546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200016257600080fd5b505afa15801562000177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019d919062000e25565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001e657600080fd5b505afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000221919062000e25565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026a57600080fd5b505af11580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a5919062000e25565b602380546001600160a01b0319166001600160a01b03929092169182179055620002d19060016200043f565b602354620002ea906001600160a01b03166001620004b9565b6127106200030469152d02c7e14af6800000601962000e50565b62000310919062000e72565b601c556127106200032d69152d02c7e14af6800000600562000e50565b62000339919062000e72565b602155600380546001600160a01b0319167392ce6bd83c8fd4f97cc14e3186d82e0b0271a48f1781556001600160a01b03838116600090815260096020526040808220805460ff199081166001908117909255308452828420805482168317905594549093168252902080549092168117909155620003ba9083906200043f565b620003c73060016200043f565b620003d661dead60016200043f565b620003e1306200051c565b60405169152d02c7e14af680000081526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620004378262000734565b505062000f46565b6000546001600160a01b031633146200048e5760405162461bcd60e51b815260206004820181905260248201526000805160206200490283398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6001600160a01b03821660009081526020808052604080832080548515801560ff199283168117909355601d909452919093208054909116909217909155620005075762000507826200051c565b806200051857620005188262000830565b5050565b6000546001600160a01b03163314620005675760405162461bcd60e51b8152602060048201819052602482015260008051602062004902833981519152604482015260640162000485565b6001600160a01b0381166000908152600a602052604090205460ff1615620005d25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000485565b600b54601490620005e590600162000e89565b1115620006715760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203230206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a40162000485565b6001600160a01b03811660009081526004602052604090205415620006ce576001600160a01b038116600090815260046020526040902054620006b49062000a19565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146200077f5760405162461bcd60e51b8152602060048201819052602482015260008051602062004902833981519152604482015260640162000485565b6001600160a01b038116620007e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000485565b600080546040516001600160a01b03808516939216916000805160206200492283398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146200087b5760405162461bcd60e51b8152602060048201819052602482015260008051602062004902833981519152604482015260640162000485565b6001600160a01b0381166000908152600a602052604090205460ff16620008e55760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640162000485565b60005b600b548110156200051857816001600160a01b0316600b828154811062000913576200091362000ea4565b6000918252602090912001546001600160a01b0316141562000a0457600b8054620009419060019062000e0b565b8154811062000954576200095462000ea4565b600091825260209091200154600b80546001600160a01b03909216918390811062000983576200098362000ea4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b805480620009de57620009de62000eba565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8062000a108162000ed0565b915050620008e8565b6000600c5482111562000a825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000485565b600062000a8e62000ab1565b905062000aaa818462000ae460201b62001e7f1790919060201c565b9392505050565b6000808062000abf62000b2e565b9150915062000add818362000ae460201b62001e7f1790919060201c565b9250505090565b600062000aaa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d0c60201b60201c565b600c54600090819069152d02c7e14af6800000825b600b5481101562000cbd578260046000600b848154811062000b695762000b6962000ea4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000bd857508160056000600b848154811062000bb15762000bb162000ea4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000bf6575050600c549369152d02c7e14af68000009350915050565b62000c4d60046000600b848154811062000c145762000c1462000ea4565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054859162001ec162000d48821b17901c565b925062000ca660056000600b848154811062000c6d5762000c6d62000ea4565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054849162001ec162000d48821b17901c565b91508062000cb48162000ed0565b91505062000b43565b5062000ce469152d02c7e14af6800000600c5462000ae460201b62001e7f1790919060201c565b82101562000d03575050600c549269152d02c7e14af680000092509050565b90939092509050565b6000818362000d305760405162461bcd60e51b815260040162000485919062000eee565b50600062000d3f848662000e72565b95945050505050565b600062000aaa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d9260201b60201c565b6000818484111562000db95760405162461bcd60e51b815260040162000485919062000eee565b50600062000d3f848662000e0b565b634e487b7160e01b600052601260045260246000fd5b60008262000df05762000df062000dc8565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000e205762000e2062000df5565b500390565b60006020828403121562000e3857600080fd5b81516001600160a01b038116811462000aaa57600080fd5b600081600019048311821515161562000e6d5762000e6d62000df5565b500290565b60008262000e845762000e8462000dc8565b500490565b6000821982111562000e9f5762000e9f62000df5565b500190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141562000ee75762000ee762000df5565b5060010190565b600060208083528351808285015260005b8181101562000f1d5785810183015185820160400152820162000eff565b8181111562000f30576000604083870101525b50601f01601f1916929092016040019392505050565b6139ac8062000f566000396000f3fe6080604052600436106103905760003560e01c8063715018a6116101dc578063b62496f511610102578063dc44b6a0116100a0578063ee40166e1161006f578063ee40166e14610aa5578063efcc52de14610abb578063f2fde38b14610ad1578063f5648a4f14610af157600080fd5b8063dc44b6a014610a14578063dd62ed3e14610a2a578063e884f26014610a70578063ea2f0b3714610a8557600080fd5b8063c5d24189116100dc578063c5d24189146109b8578063c8607952146109ce578063c876d0b9146109e4578063c8c8ebe4146109fe57600080fd5b8063b62496f514610948578063bbc0c74214610977578063c49b9a801461099857600080fd5b80638da5cb5b1161017a578063a073d37f11610149578063a073d37f146108d3578063a457c2d7146108e8578063a5ece94114610908578063a9059cbb1461092857600080fd5b80638da5cb5b14610845578063906e9dd01461086357806395d89b41146108835780639a7a23d6146108b357600080fd5b80638366e79a116101b65780638366e79a146107c157806388790a68146107e157806388f82020146107f75780638a8c523c1461083057600080fd5b8063715018a614610777578063751039fc1461078c5780637571336a146107a157600080fd5b80632d838119116102c157806349bd5a5e1161025f5780635342acb41161022e5780635342acb4146106f6578063557ed1ba1461072f578063602bc62b1461074257806370a082311461075757600080fd5b806349bd5a5e146106765780634a62bb65146106965780634a74bb02146106b557806352390c02146106d657600080fd5b8063395093511161029b57806339509351146106005780634047ea3e14610620578063437823ec146106365780634549b0391461065657600080fd5b80632d838119146105a4578063313ce567146105c45780633685d419146105e057600080fd5b80631694505e1161032e578063200a692d11610308578063200a692d1461053857806323b872dd1461054e57806324171f321461056e57806325519cf21461058457600080fd5b80631694505e146104c357806318160ddd146104fb5780631d865c301461051857600080fd5b8063095ea7b31161036a578063095ea7b314610424578063106b5da11461045457806310d5de531461047457806313114a9d146104a457600080fd5b806306fdde031461039c57806308043751146103e2578063092316021461040457600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b5060408051808201909152600b81526a526f626f436f7020496e7560a81b60208201525b6040516103d99190613542565b60405180910390f35b3480156103ee57600080fd5b506104026103fd366004613597565b610b06565b005b34801561041057600080fd5b5061040261041f366004613597565b610c5c565b34801561043057600080fd5b5061044461043f3660046135c8565b610ca8565b60405190151581526020016103d9565b34801561046057600080fd5b5061040261046f366004613597565b610cbf565b34801561048057600080fd5b5061044461048f3660046135f4565b601d6020526000908152604090205460ff1681565b3480156104b057600080fd5b50600d545b6040519081526020016103d9565b3480156104cf57600080fd5b506022546104e3906001600160a01b031681565b6040516001600160a01b0390911681526020016103d9565b34801561050757600080fd5b5069152d02c7e14af68000006104b5565b34801561052457600080fd5b50610402610533366004613611565b610d95565b34801561054457600080fd5b506104b560165481565b34801561055a57600080fd5b5061044461056936600461363d565b610e7b565b34801561057a57600080fd5b506104b5601b5481565b34801561059057600080fd5b5061040261059f366004613611565b610ee4565b3480156105b057600080fd5b506104b56105bf366004613597565b610fc1565b3480156105d057600080fd5b50604051600981526020016103d9565b3480156105ec57600080fd5b506104026105fb3660046135f4565b611045565b34801561060c57600080fd5b5061044461061b3660046135c8565b6111fc565b34801561062c57600080fd5b506104b5601a5481565b34801561064257600080fd5b506104026106513660046135f4565b611232565b34801561066257600080fd5b506104b561067136600461368c565b6112b7565b34801561068257600080fd5b506023546104e3906001600160a01b031681565b3480156106a257600080fd5b5060085461044490610100900460ff1681565b3480156106c157600080fd5b5060235461044490600160a81b900460ff1681565b3480156106e257600080fd5b506104026106f13660046135f4565b61134c565b34801561070257600080fd5b506104446107113660046135f4565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561073b57600080fd5b50426104b5565b34801561074e57600080fd5b506002546104b5565b34801561076357600080fd5b506104b56107723660046135f4565b61153a565b34801561078357600080fd5b50610402611599565b34801561079857600080fd5b5061040261160d565b3480156107ad57600080fd5b506104026107bc3660046136bc565b61164e565b3480156107cd57600080fd5b506104446107dc3660046136ea565b6116a3565b3480156107ed57600080fd5b506104b560175481565b34801561080357600080fd5b506104446108123660046135f4565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561083c57600080fd5b506104026118c9565b34801561085157600080fd5b506000546001600160a01b03166104e3565b34801561086f57600080fd5b5061040261087e3660046135f4565b611968565b34801561088f57600080fd5b506040805180820190915260078152660524f424f434f560cc1b60208201526103cc565b3480156108bf57600080fd5b506104026108ce3660046136bc565b611a74565b3480156108df57600080fd5b506021546104b5565b3480156108f457600080fd5b506104446109033660046135c8565b611b2c565b34801561091457600080fd5b506003546104e3906001600160a01b031681565b34801561093457600080fd5b506104446109433660046135c8565b611b7b565b34801561095457600080fd5b506104446109633660046135f4565b602080526000908152604090205460ff1681565b34801561098357600080fd5b5060235461044490600160b01b900460ff1681565b3480156109a457600080fd5b506104026109b3366004613718565b611b88565b3480156109c457600080fd5b506104b560155481565b3480156109da57600080fd5b506104b560185481565b3480156109f057600080fd5b506008546104449060ff1681565b348015610a0a57600080fd5b506104b5601c5481565b348015610a2057600080fd5b506104b560145481565b348015610a3657600080fd5b506104b5610a453660046136ea565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a7c57600080fd5b50610402611bff565b348015610a9157600080fd5b50610402610aa03660046135f4565b611c35565b348015610ab157600080fd5b506104b560195481565b348015610ac757600080fd5b506104b560135481565b348015610add57600080fd5b50610402610aec3660046135f4565b611cb0565b348015610afd57600080fd5b50610402611d9a565b6000546001600160a01b03163314610b395760405162461bcd60e51b8152600401610b3090613735565b60405180910390fd5b620186a0610b5269152d02c7e14af68000006001613780565b610b5c919061379f565b811015610bc95760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b30565b6103e8610be169152d02c7e14af68000006005613780565b610beb919061379f565b811115610c575760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b30565b602155565b6000546001600160a01b03163314610c865760405162461bcd60e51b8152600401610b3090613735565b6032811015610c9457600080fd5b610ca281633b9aca00613780565b601f5550565b6000610cb5338484611f03565b5060015b92915050565b6000546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610b3090613735565b633b9aca006103e8610d0669152d02c7e14af68000006001613780565b610d10919061379f565b610d1a919061379f565b811015610d815760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b30565b610d8f81633b9aca00613780565b601c5550565b6000546001600160a01b03163314610dbf5760405162461bcd60e51b8152600401610b3090613735565b6016839055601782905560188190556107d081610ddc84866137c1565b610de691906137c1565b1115610e345760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772032302500006044820152606401610b30565b60408051828152602081018490529081018490527f5ff33e060dbf96ff8c11eeadaaa320b34884dc8af8156d77ab6134d2bece22c3906060015b60405180910390a1505050565b6000610e88848484612027565b610eda8433610ed58560405180606001604052806028815260200161392a602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190612797565b611f03565b5060019392505050565b6000546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610b3090613735565b6013839055601482905560158190556105dc81610f2b84866137c1565b610f3591906137c1565b1115610f835760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203135250000006044820152606401610b30565b60408051828152602081018490529081018490527f4b44023290188702187818a2359a9d40279e516e5e9bbade40c321936a77362090606001610e6e565b6000600c548211156110285760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b30565b60006110326127d1565b905061103e8382611e7f565b9392505050565b6000546001600160a01b0316331461106f5760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b0381166000908152600a602052604090205460ff166110d75760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b30565b60005b600b548110156111f857816001600160a01b0316600b8281548110611101576111016137d9565b6000918252602090912001546001600160a01b031614156111e657600b805461112c906001906137ef565b8154811061113c5761113c6137d9565b600091825260209091200154600b80546001600160a01b039092169183908110611168576111686137d9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b8054806111c0576111c0613806565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111f08161381c565b9150506110da565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610cb5918590610ed590866127f4565b6000546001600160a01b0316331461125c5760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b038116600081815260096020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291015b60405180910390a150565b600069152d02c7e14af68000008311156113135760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b30565b8161133257600061132384612853565b50939550610cb9945050505050565b600061133d84612853565b50929550610cb9945050505050565b6000546001600160a01b031633146113765760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b0381166000908152600a602052604090205460ff16156113df5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b30565b600b546014906113f09060016137c1565b111561147a5760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203230206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610b30565b6001600160a01b038116600090815260046020526040902054156114d4576001600160a01b0381166000908152600460205260409020546114ba90610fc1565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600a602052604081205460ff161561157757506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610cb990610fc1565b6000546001600160a01b031633146115c35760405162461bcd60e51b8152600401610b3090613735565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146116375760405162461bcd60e51b8152600401610b3090613735565b60088054601e805460ff1916905561ffff19169055565b6000546001600160a01b031633146116785760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b600080546001600160a01b031633146116ce5760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b0383166117245760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610b30565b6001600160a01b03831630141561177d5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610b30565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b1580156117bf57600080fd5b505afa1580156117d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f79190613837565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561184557600080fd5b505af1158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d9190613850565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6000546001600160a01b031633146118f35760405162461bcd60e51b8152600401610b3090613735565b602354600160b01b900460ff161561194d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610b30565b6023805461ffff60a81b191661010160a81b17905543601955565b6000546001600160a01b031633146119925760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b0381166119f65760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610b30565b600380546001600160a01b039081166000908152600960209081526040808320805460ff1990811690915585546001600160a01b031916948716948517909555838352918290208054909416600117909355519081527fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a991016112ac565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610b3090613735565b6023546001600160a01b0383811691161415611b225760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b30565b6111f882826128a2565b6000610cb53384610ed585604051806060016040528060258152602001613952602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190612797565b6000610cb5338484612027565b6000546001600160a01b03163314611bb25760405162461bcd60e51b8152600401610b3090613735565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112ac90831515815260200190565b6000546001600160a01b03163314611c295760405162461bcd60e51b8152600401610b3090613735565b6008805460ff19169055565b6000546001600160a01b03163314611c5f5760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b038116600081815260096020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e91016112ac565b6000546001600160a01b03163314611cda5760405162461bcd60e51b8152600401610b3090613735565b6001600160a01b038116611d3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b30565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611dc45760405162461bcd60e51b8152600401610b3090613735565b602354600160b01b900460ff1615611e325760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610b30565b604051600090339047908381818185875af1925050503d8060008114611e74576040519150601f19603f3d011682016040523d82523d6000602084013e611e79565b606091505b50505050565b600061103e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128fb565b600061103e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612797565b6001600160a01b038316611f655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b30565b6001600160a01b038216611fc65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b30565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661208b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b30565b6001600160a01b0382166120ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b30565b6000811161214f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b30565b602354600160b01b900460ff166121eb576001600160a01b03831660009081526009602052604090205460ff168061219f57506001600160a01b03821660009081526009602052604090205460ff165b6121eb5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610b30565b600854610100900460ff1615612542576000546001600160a01b0384811691161480159061222757506000546001600160a01b03838116911614155b801561223b57506001600160a01b03821615155b801561225257506001600160a01b03821661dead14155b80156122685750602354600160a01b900460ff16155b1561254257601e5460ff16801561229657506001600160a01b038316600090815260208052604090205460ff165b156122ed57601f543a11156122ed5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610b30565b60085460ff16156123d2576022546001600160a01b0383811691161480159061232457506023546001600160a01b03838116911614155b156123d2573260009081526007602052604090205443116123bf5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b30565b3260009081526007602052604090204390555b6001600160a01b038316600090815260208052604090205460ff16801561241257506001600160a01b0382166000908152601d602052604090205460ff16155b1561248c57601c548111156124875760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b30565b612542565b6001600160a01b038216600090815260208052604090205460ff1680156124cc57506001600160a01b0383166000908152601d602052604090205460ff16155b1561254257601c548111156125425760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b30565b600061254d3061153a565b60215460235491925082101590600160a01b900460ff1615801561257a5750602354600160a81b900460ff165b801561259b5750602354600090612599906001600160a01b031661153a565b115b80156125c057506001600160a01b03841660009081526009602052604090205460ff16155b80156125e557506001600160a01b03851660009081526009602052604090205460ff16155b801561260857506001600160a01b038416600090815260208052604090205460ff165b80156126115750805b1561261e5761261e612929565b612626612af5565b60036012556001600160a01b03851660009081526009602052604090205460ff1615801561266d57506001600160a01b03841660009081526009602052604090205460ff16155b156127745743601954600161268291906137c1565b101580156126c857506001600160a01b038416600090815260208052604090205460ff16806126c857506001600160a01b038516600090815260208052604090205460ff165b156126e357610258600e556124546010556002601255612774565b6001600160a01b038516600090815260208052604090205460ff161561272e57601354600e5560155460145461271991906137c1565b6010819055156127295760016012555b612774565b6001600160a01b038416600090815260208052604090205460ff161561277457601654600e5560185460175461276491906137c1565b6010819055156127745760026012555b61277f858585612b23565b612790600f54600e55601154601055565b5050505050565b600081848411156127bb5760405162461bcd60e51b8152600401610b309190613542565b5060006127c884866137ef565b95945050505050565b60008060006127de612c25565b90925090506127ed8282611e7f565b9250505090565b60008061280183856137c1565b90508381101561103e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b30565b600080600080600080600080600061286a8a612dc5565b92509250925060008060006128888d86866128836127d1565b612e07565b919f909e50909c50959a5093985091965092945050505050565b6001600160a01b03821660009081526020808052604080832080548515801560ff199283168117909355601d9094529190932080549091169092179091556128ed576128ed8261134c565b806111f8576111f882611045565b6000818361291c5760405162461bcd60e51b8152600401610b309190613542565b5060006127c8848661379f565b6023805460ff60a01b1916600160a01b17905560006129473061153a565b90506000601b54601a5461295b91906137c1565b90506000602154601461296e9190613780565b831061298557602154612982906014613780565b92505b821580612990575081155b1561299d57505050612ae6565b6000600283601a54866129b09190613780565b6129ba919061379f565b6129c4919061379f565b905060006129d28583611ec1565b9050476129de82612e57565b60006129ea4783611ec1565b90506000612a0d87612a07601b5485612fc090919063ffffffff16565b90611e7f565b90506000612a1b82846137ef565b6000601a819055601b5590508515801590612a365750600081115b15612a8757612a45868261303f565b60408051868152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6003546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612ad4576040519150601f19603f3d011682016040523d82523d6000602084013e612ad9565b606091505b5050505050505050505050505b6023805460ff60a01b19169055565b600e54158015612b055750601054155b15612b0c57565b600e8054600f556010805460115560009182905555565b6001600160a01b0383166000908152600a602052604090205460ff168015612b6457506001600160a01b0382166000908152600a602052604090205460ff16155b15612b7957612b748383836130f9565b505050565b6001600160a01b0383166000908152600a602052604090205460ff16158015612bba57506001600160a01b0382166000908152600a602052604090205460ff165b15612bca57612b7483838361321f565b6001600160a01b0383166000908152600a602052604090205460ff168015612c0a57506001600160a01b0382166000908152600a602052604090205460ff165b15612c1a57612b748383836132c8565b612b7483838361333b565b600c54600090819069152d02c7e14af6800000825b600b54811015612d86578260046000600b8481548110612c5c57612c5c6137d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cc757508160056000600b8481548110612ca057612ca06137d9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ce4575050600c549369152d02c7e14af68000009350915050565b612d2a60046000600b8481548110612cfe57612cfe6137d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611ec1565b9250612d7260056000600b8481548110612d4657612d466137d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611ec1565b915080612d7e8161381c565b915050612c3a565b50600c54612d9e9069152d02c7e14af6800000611e7f565b821015612dbc575050600c549269152d02c7e14af680000092509050565b90939092509050565b600080600080612dd48561337f565b90506000612de18661339c565b90506000612df982612df38986611ec1565b90611ec1565b979296509094509092505050565b6000808080612e168886612fc0565b90506000612e248887612fc0565b90506000612e328888612fc0565b90506000612e4482612df38686611ec1565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e8c57612e8c6137d9565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ee057600080fd5b505afa158015612ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f18919061386d565b81600181518110612f2b57612f2b6137d9565b6001600160a01b039283166020918202929092010152602254612f519130911684611f03565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f8a90859060009086903090429060040161388a565b600060405180830381600087803b158015612fa457600080fd5b505af1158015612fb8573d6000803e3d6000fd5b505050505050565b600082612fcf57506000610cb9565b6000612fdb8385613780565b905082612fe8858361379f565b1461103e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b30565b6022546130579030906001600160a01b031684611f03565b60225460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156130c057600080fd5b505af11580156130d4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061279091906138fb565b60008060008060008061310b87612853565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061313d9088611ec1565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461316c9087611ec1565b6001600160a01b03808b1660009081526004602052604080822093909355908a168152205461319b90866127f4565b6001600160a01b0389166000908152600460205260409020556131bd816133b9565b6131c7848361351e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161320c91815260200190565b60405180910390a3505050505050505050565b60008060008060008061323187612853565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132639087611ec1565b6001600160a01b03808b16600090815260046020908152604080832094909455918b1681526005909152205461329990846127f4565b6001600160a01b03891660009081526005602090815260408083209390935560049052205461319b90866127f4565b6000806000806000806132da87612853565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061330c9088611ec1565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546132639087611ec1565b60008060008060008061334d87612853565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061316c9087611ec1565b6000610cb9612710612a07600e5485612fc090919063ffffffff16565b6000610cb9612710612a0760105485612fc090919063ffffffff16565b6001601254141561342a576010546014546133d49083613780565b6133de919061379f565b601a60008282546133ef91906137c1565b90915550506010546015546134049083613780565b61340e919061379f565b601b600082825461341f91906137c1565b909155506134969050565b60026012541415613496576010546017546134459083613780565b61344f919061379f565b601a600082825461346091906137c1565b90915550506010546018546134759083613780565b61347f919061379f565b601b600082825461349091906137c1565b90915550505b60006134a06127d1565b905060006134ae8383612fc0565b306000908152600460205260409020549091506134cb90826127f4565b30600090815260046020908152604080832093909355600a9052205460ff1615612b74573060009081526005602052604090205461350990846127f4565b30600090815260056020526040902055505050565b600c5461352b9083611ec1565b600c55600d5461353b90826127f4565b600d555050565b600060208083528351808285015260005b8181101561356f57858101830151858201604001528201613553565b81811115613581576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156135a957600080fd5b5035919050565b6001600160a01b03811681146135c557600080fd5b50565b600080604083850312156135db57600080fd5b82356135e6816135b0565b946020939093013593505050565b60006020828403121561360657600080fd5b813561103e816135b0565b60008060006060848603121561362657600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561365257600080fd5b833561365d816135b0565b9250602084013561366d816135b0565b929592945050506040919091013590565b80151581146135c557600080fd5b6000806040838503121561369f57600080fd5b8235915060208301356136b18161367e565b809150509250929050565b600080604083850312156136cf57600080fd5b82356136da816135b0565b915060208301356136b18161367e565b600080604083850312156136fd57600080fd5b8235613708816135b0565b915060208301356136b1816135b0565b60006020828403121561372a57600080fd5b813561103e8161367e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561379a5761379a61376a565b500290565b6000826137bc57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156137d4576137d461376a565b500190565b634e487b7160e01b600052603260045260246000fd5b6000828210156138015761380161376a565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156138305761383061376a565b5060010190565b60006020828403121561384957600080fd5b5051919050565b60006020828403121561386257600080fd5b815161103e8161367e565b60006020828403121561387f57600080fd5b815161103e816135b0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138da5784516001600160a01b0316835293830193918301916001016138b5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561391057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220faa7410b138cf78eb75870518e32c2f20264468688ccd3bce17ab271817c1c3f64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0