This sample source code is offered without warranty and without restrictions. If you don’t agree to use it entirely at your own risk, don’t download it. If you learn something from it, I would appreciate a note telling me so. If you include part or all of this code in a product, it would be polite (but not required) to credit the source. Thanks.