(cherry picked from commit 62ad9885ea8c75c134de43a3a925c76b253658e1) (cherry picked from commit 45543ffd6af723bb83bd44a99f12165363c70abb) (cherry picked from commit fc8983a5b8c94746d3e58cc203974aa09c1b640b)
(cherry picked from commit 62ad9885ea8c75c134de43a3a925c76b253658e1) (cherry picked from commit 45543ffd6af723bb83bd44a99f12165363c70abb) (cherry picked from commit fc8983a5b8c94746d3e58cc203974aa09c1b640b)