(cherry picked from commit ab1685a74100243797611c0a4e2c2f6cb9a6380b)
(cherry picked from commit c38abc365c779528d5ea5d2926a895aa1211eaf9)
(cherry picked from commit a0014bed6529b15e07cf96413d4702c9904682a8)