(cherry picked from commit 63c40c2ad66e5b32d96cecad0b123db28783ae5c)
(cherry picked from commit 15fb05fe81765f7102870669726a908be8016cb9)
(cherry picked from commit 9c11b6bd5073b8bfc85bcdc263f860d74e44c10b)