(cherry picked from commit 2fef50cd) (cherry picked from commit f2763ff6) (cherry picked from commit 8bc7ff60) (cherry picked from commit ecbb5a4f)