(Imported from upstream's 70fddbe32a7b3400a6ad0a9265f2c0ed72988d27)
(Imported from upstream's d00ae7cf7019847c5d35728b01b22461a01bb336)
Initial fork from f2d678e6e89b6508147086610e985d4e8416e867 (1.0.2 beta). (This change contains substantial changes from the original and effectively starts a new history.)