(cherry picked from commit b92a65a23f8d586d30336c79596ee8a73e6c2dad)
(cherry picked from commit d77b4e486d)
(cherry picked from commit cd94894a0dc06227fd76eb684706f50fcfea6de3)
(cherry picked from commit b82f351c90)
(cherry picked from commit f3ff341d23)
(cherry picked from commit db55136898)
(cherry picked from commit 00cfc783a9)