(cherry picked from commit de7efd2687ccb74608249abf4c83c84a9345ec0a) (cherry picked from commit 3f5dc51ec94af5a20a319dd9bc807fc9e4db4f6a) (cherry picked from commit 0acf2bca9c19bcf76526d2ff59886931cd4041dd)
(cherry picked from commit de7efd2687ccb74608249abf4c83c84a9345ec0a) (cherry picked from commit 3f5dc51ec94af5a20a319dd9bc807fc9e4db4f6a) (cherry picked from commit 0acf2bca9c19bcf76526d2ff59886931cd4041dd)