(cherry picked from commit b9d9291a4bb60759fe516eb6b69bba52f383aab7)
(cherry picked from commit 8b25a59da8622591d4e253e22bd497f48a218455)
(cherry picked from commit 9b0469c9f36fa710d349ddd4daed15042a982fd5)