(cherry picked from commit 0c79cbe4) (cherry picked from commit 31fe2500) (cherry picked from commit 8f5bb5e9) (cherry picked from commit 71bef746)