60806040523480156200001157600080fd5b50600080546001600160a01b031916339081178255604051909182917f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca908290a35062000061600d600a620001ee565b62000070906298968062000206565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000b3600d600a620001ee565b620000c2906298968062000206565b60405190815260200160405180910390a362000220565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000130578160001904821115620001145762000114620000d9565b808516156200012257918102915b93841c9390800290620000f4565b509250929050565b6000826200014957506001620001e8565b816200015857506000620001e8565b81600181146200017157600281146200017c576200019c565b6001915050620001e8565b60ff841115620001905762000190620000d9565b50506001821b620001e8565b5060208310610133831016604e8410600b8410161715620001c1575081810a620001e8565b620001cd8383620000ef565b8060001904821115620001e457620001e4620000d9565b0290505b92915050565b6000620001ff60ff84168362000138565b9392505050565b8082028115828204841417620001e857620001e8620000d9565b61120280620002306000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638e32c003116100b8578063c345cf231161007c578063c345cf23146102b8578063cadc24b5146102c0578063d8fb9361146102e9578063dd62ed3e146102fc578063e03504af14610222578063e156b1b61461033557600080fd5b80638e32c0031461027757806395d89b4114610147578063a713fd531461028a578063a9059cbb14610292578063adacad8c146102a557600080fd5b806328226aa71161010a57806328226aa7146101d7578063313ce567146101fc578063416c3c9d146102115780635c01b60c1461022257806370a0823114610244578063715018a61461026d57600080fd5b806306fdde0314610147578063095ea7b31461017857806318160ddd1461019b5780631ae1ffbc146101b157806323b872dd146101c4575b600080fd5b60408051808201909152600381526208aa8960eb1b60208201525b60405161016f9190610bbd565b60405180910390f35b61018b610186366004610c27565b610348565b604051901515815260200161016f565b6101a36103b0565b60405190815260200161016f565b61018b6101bf366004610d89565b6103d0565b61018b6101d2366004610e33565b6105e7565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161016f565b600d5b60405160ff909116815260200161016f565b6004546001600160a01b03166101e4565b6101626040518060400160405280600381526020016208aa8960eb1b81525081565b6101a3610252366004610e6f565b6001600160a01b031660009081526002602052604090205490565b6102756107a7565b005b610275610285366004610e6f565b610821565b6101ff600d81565b61018b6102a0366004610c27565b61086d565b6102756102b3366004610e91565b6109af565b6101a3610a42565b6101a36102ce366004610e6f565b6001600160a01b031660009081526003602052604090205490565b6102756102f7366004610f0c565b610a5e565b6101a361030a366004610f51565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61018b610343366004610e33565b610b88565b3360008181526001602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b60006103be600d600a61107e565b6103cb906298968061108d565b905090565b6000805b85518110156105da578581815181106103ef576103ef6110a4565b60200260200101516001600160a01b0316876001600160a01b03166000805160206111ad83398151915287848151811061042b5761042b6110a4565b602002602001015160405161044291815260200190565b60405180910390a385818151811061045c5761045c6110a4565b60200260200101516001600160a01b03167310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228784815181106104be576104be6110a4565b60200260200101516000808987815181106104db576104db6110a4565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b6878381518110610529576105296110a4565b602002602001015189878581518110610544576105446110a4565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906110ba565b50806105d2816110dc565b9150506103d4565b5060019695505050505050565b6001600160a01b038316600090815260016020908152604080832033845290915281205482111561065f5760405162461bcd60e51b815260206004820152601960248201527f416c6c6f77616e6365206c696d6974207375727061737365640000000000000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526003602052604090205480156106cd578083146106cd5760405162461bcd60e51b815260206004820181905260248201527f436f6d70756c736f7279207472616e736665722073756d206d69736d617463686044820152606401610656565b6001600160a01b038516600090815260026020526040812080548592906106f59084906110f5565b90915550506001600160a01b03841660009081526002602052604081208054859290610722908490611108565b90915550506001600160a01b03851660009081526001602090815260408083203384529091528120805485929061075a9084906110f5565b92505081905550836001600160a01b0316856001600160a01b03166000805160206111ad8339815191528560405161079491815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b031633146107d15760405162461bcd60e51b81526004016106569061111b565b6000805460405161dead926001600160a01b03909216917f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca91a3600080546001600160a01b03191661dead179055565b6000546001600160a01b0316331461084b5760405162461bcd60e51b81526004016106569061111b565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600260205260408120548211156108c35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610656565b60006108ce336102ce565b90508015610925578083146109255760405162461bcd60e51b815260206004820181905260248201527f436f6d70756c736f7279207472616e736665722073756d206d69736d617463686044820152606401610656565b33600090815260026020526040812080548592906109449084906110f5565b90915550506001600160a01b03841660009081526002602052604081208054859290610971908490611108565b90915550506040518381526001600160a01b0385169033906000805160206111ad833981519152906020015b60405180910390a35060019392505050565b6004546001600160a01b031633146109d95760405162461bcd60e51b815260040161065690611166565b60005b82811015610a3c5781600360008686858181106109fb576109fb6110a4565b9050602002016020810190610a109190610e6f565b6001600160a01b0316815260208101919091526040016000205580610a34816110dc565b9150506109dc565b50505050565b610a4e600d600a61107e565b610a5b906298968061108d565b81565b6004546001600160a01b03163314610a885760405162461bcd60e51b815260040161065690611166565b60005b8251811015610b83576000838281518110610aa857610aa86110a4565b6020026020010151905060006001600160a01b0316816001600160a01b031603610b145760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206164647265737320737065636966696564000000000000006044820152606401610656565b6001600160a01b038116600081815260026020908152604091829020805490879055825181815291820187905292917fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c84890910160405180910390a250508080610b7b906110dc565b915050610a8b565b505050565b6000826001600160a01b0316846001600160a01b03166000805160206111ad8339815191528460405161099d91815260200190565b600060208083528351808285015260005b81811015610bea57858101830151858201604001528201610bce565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c2257600080fd5b919050565b60008060408385031215610c3a57600080fd5b610c4383610c0b565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610c9057610c90610c51565b604052919050565b600067ffffffffffffffff821115610cb257610cb2610c51565b5060051b60200190565b600082601f830112610ccd57600080fd5b81356020610ce2610cdd83610c98565b610c67565b82815260059290921b84018101918181019086841115610d0157600080fd5b8286015b84811015610d2357610d1681610c0b565b8352918301918301610d05565b509695505050505050565b600082601f830112610d3f57600080fd5b81356020610d4f610cdd83610c98565b82815260059290921b84018101918181019086841115610d6e57600080fd5b8286015b84811015610d235780358352918301918301610d72565b600080600080600060a08688031215610da157600080fd5b610daa86610c0b565b9450602086013567ffffffffffffffff80821115610dc757600080fd5b610dd389838a01610cbc565b95506040880135915080821115610de957600080fd5b610df589838a01610d2e565b94506060880135915080821115610e0b57600080fd5b50610e1888828901610d2e565b925050610e2760808701610c0b565b90509295509295909350565b600080600060608486031215610e4857600080fd5b610e5184610c0b565b9250610e5f60208501610c0b565b9150604084013590509250925092565b600060208284031215610e8157600080fd5b610e8a82610c0b565b9392505050565b600080600060408486031215610ea657600080fd5b833567ffffffffffffffff80821115610ebe57600080fd5b818601915086601f830112610ed257600080fd5b813581811115610ee157600080fd5b8760208260051b8501011115610ef657600080fd5b6020928301989097509590910135949350505050565b60008060408385031215610f1f57600080fd5b823567ffffffffffffffff811115610f3657600080fd5b610f4285828601610cbc565b95602094909401359450505050565b60008060408385031215610f6457600080fd5b610f6d83610c0b565b9150610f7b60208401610c0b565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610fd5578160001904821115610fbb57610fbb610f84565b80851615610fc857918102915b93841c9390800290610f9f565b509250929050565b600082610fec575060016103aa565b81610ff9575060006103aa565b816001811461100f576002811461101957611035565b60019150506103aa565b60ff84111561102a5761102a610f84565b50506001821b6103aa565b5060208310610133831016604e8410600b8410161715611058575081810a6103aa565b6110628383610f9a565b806000190482111561107657611076610f84565b029392505050565b6000610e8a60ff841683610fdd565b80820281158282048414176103aa576103aa610f84565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156110cc57600080fd5b81518015158114610e8a57600080fd5b6000600182016110ee576110ee610f84565b5060010190565b818103818111156103aa576103aa610f84565b808201808211156103aa576103aa610f84565b6020808252602b908201527f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360408201526a39903932b8bab4b932b21760a91b606082015260800190565b60208082526026908201527f556e617574686f72697a65643a2043726561746f7220616363657373207265716040820152653ab4b932b21760d11b60608201526080019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e4a8cb73be7f6b76894e8b9369c345bbd3cda2bc4be097a50aaf21db39e6188864736f6c63430008120033