(cherry picked from commit 6b5b4d3bf5f6285e908808d48dee4e2e4ae8c3a2)
(cherry picked from commit 7306bf031f8bc07168197c00e332bf89c8d611dd)
(cherry picked from commit cd6b84ad7eed489f9bcbd72d847cd4d704052b0c)