(cherry picked from commit ccff6035f50769eb69701128ae61efc69e82609d) (cherry picked from commit 7d402692b4b06af0459ea81129e93a5182291a27) (cherry picked from commit b8b4ea67d8f24403a05c9a1dabc04b0ab59a9136)
(cherry picked from commit ccff6035f50769eb69701128ae61efc69e82609d) (cherry picked from commit 7d402692b4b06af0459ea81129e93a5182291a27) (cherry picked from commit b8b4ea67d8f24403a05c9a1dabc04b0ab59a9136)