(cherry picked from commit 2f95143000e4ccc94ef14332777b58fe778edbd6) (cherry picked from commit cf77f1e6d96f4456a25d7375012a7181fb1bcce4) (cherry picked from commit 0983b62ca007a6c270aff366c338a21ce6e105ce)