(cherry picked from commit ae08827a336ae978b2f91b16b9bab627a1bd7a7a)
(cherry picked from commit 9b39a1f94f42489893851812db11eba64ac2d818)
(cherry picked from commit 0b254583617bb53b4c092b8ee8ca3342bd9a4163)