(cherry picked from commit dc39ad0cd1b5bc4a12983b971449ca1a6792d4b9)
(cherry picked from commit 40571302753292182bb8a7052aae1fb6f3117503)
(cherry picked from commit 2e96b1c9840b7adfbc8110eb3a36bd2b406dc392)