(cherry picked from commit 2457665b55e75fa2ede8c83d551ea05d9bf08abf)
(cherry picked from commit 431fff28ce84f281b619d432eaae06df0ee54287)
(cherry picked from commit 61b3bdfd4c8d06e88341cb4f40b16f736485c1f2)