(cherry picked from commitf58ac8ada3) (cherry picked from commit56da937399) (cherry picked from commitd3518e57b1) (cherry picked from commitc5dbc0b727)
(cherry picked from commitf58ac8ada3) (cherry picked from commit56da937399) (cherry picked from commitd3518e57b1) (cherry picked from commitc5dbc0b727)