(cherry picked from commit 7af2a3bcc31dcfdc65db4fec968008b3a834bd2e)
(cherry picked from commit 8832eafaae327cf11e2918991cbe3c9939eeb386)
(cherry picked from commit dced551698dd133b87acda47d8e2724e8d01077e)