(cherry picked from commit fc6b50cc574e144fd314dea6c11987c6a384bfa6) (cherry picked from commit 39ea0891d2b1369ec8c1ea4312489309e1a85227) (cherry picked from commit e19cd05a878aafc94cc0de36ac6638d7977c6e6e)
(cherry picked from commit fc6b50cc574e144fd314dea6c11987c6a384bfa6) (cherry picked from commit 39ea0891d2b1369ec8c1ea4312489309e1a85227) (cherry picked from commit e19cd05a878aafc94cc0de36ac6638d7977c6e6e)