(cherry picked from commit 9bd3c9bc50672ebdd7f12b9a2235aec37b2a07cf) (cherry picked from commit bc5458bbd4e6829bc02de57671c017fbdac06849) (cherry picked from commit 9123f9245cc49764d93a5295544a17519191430f)
(cherry picked from commit 9bd3c9bc50672ebdd7f12b9a2235aec37b2a07cf) (cherry picked from commit bc5458bbd4e6829bc02de57671c017fbdac06849) (cherry picked from commit 9123f9245cc49764d93a5295544a17519191430f)