Console Output
Skipping 11,955 KB..
Full LogTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest
+ mkdir -p /root/commtest/rcdev-project/xiamen//M025/master
[Pipeline] sh
+ touch /root/commtest/rcdev-project/xiamen//M025/master/static_transform_common
[Pipeline] writeFile
[Pipeline] sh
+ python3 /root/weilk/project/get_git_now.py 850 0895600
[Pipeline] echo
{"repo_name":"static_transform_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"0895600","version":"","commit_msgs":"5Y+C5pWw6Lev5b6E5pu05pS5,,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"static_transform_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"0895600","version":"","commit_msgs":"5Y+C5pWw6Lev5b6E5pu05pS5,,"}
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-common
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] echo
system-common当前commitId: 101f60f
[Pipeline] readFile
[Pipeline] echo
[system-common:main, system-device:orin_32_64_pnc_ros_record, system-mqtt:xiamen, system-node-xiamen:orin_32_64_pnc_ros_record_snapshot_upload, system-port:xiamen, perception_segmentation_fisheye:xiamen_imv_3cam, perception_vehicles:master, perception_spreader_imv:xiamen_imv_xg_2rsbp, perception_lidar_camera_fusion:xiamen_imv, perception_camera_driver:all_all_slave, perception_new_detection:xiamen_imv_xg_4rs1610-2rsbp_fusion, perception_data_collection:xiamen_imv, lidar_loc_v2_common:dev, lidar_loc_v2_customized:xiamen/imv/4rshelios_update, perception_lane_detection:xiamen_imv, pointcloud_customized:xiamen, prediction_config:xiamen_imv_orin, crane_align_customized:xiamen_imv_4rshelios-4rsbp, crane_align_common:dev, msf-vehicle:dev, msf-port:hairun, static_transform_common:dev, rslidar_sdk_common:main, hardware:dev, pncc_common_config:dev_hdmap, pncc_vehicle_related_config:imv_xugong, pncc_port_related_config:port_hairun, hdmap_interface:hairun, hdmap:rc_dev]
[Pipeline] echo
system-common对应分支为: main
[Pipeline] sh
+ grep push
+ awk -F: '{print $2}'
+ awk -F. '{print $1}'
+ git remote -v
[Pipeline] echo
system-common对应的path_name: system/config/system-common
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F. '{print $1}'
+ awk -F/ '{print $NF}'
[Pipeline] withCredentials
Masking supported pattern matches of $gitlabToken
[Pipeline] {
[Pipeline] httpRequest
Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [gitlabToken]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
HttpMethod: GET
URL: http://159.27.226.4/api/v4/projects?search=system-common&per_page=100
Content-Type: application/json
PRIVATE-TOKEN: *****
Sending request to url: http://159.27.226.4/api/v4/projects?search=system-common&per_page=100
Response Code: HTTP/1.1 200 OK
Response:
[{"id":662,"description":"","name":"system-common","name_with_namespace":"System / config / system-common","path":"system-common","path_with_namespace":"system/config/system-common","created_at":"2023-06-29T06:35:42.122Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@159.27.226.4:system/config/system-common.git","http_url_to_repo":"http://159.27.226.4/system/config/system-common.git","web_url":"http://159.27.226.4/system/config/system-common","readme_url":null,"avatar_url":null,"forks_count":0,"star_count":0,"last_activity_at":"2025-08-29T02:17:33.696Z","namespace":{"id":751,"name":"config","path":"config","kind":"group","full_path":"system/config","parent_id":14,"avatar_url":null,"web_url":"http://159.27.226.4/groups/system/config"},"_links":{"self":"http://159.27.226.4/api/v4/projects/662","issues":"http://159.27.226.4/api/v4/projects/662/issues","merge_requests":"http://159.27.226.4/api/v4/projects/662/merge_requests","repo_branches":"http://159.27.226.4/api/v4/projects/662/repository/branches","labels":"http://159.27.226.4/api/v4/projects/662/labels","events":"http://159.27.226.4/api/v4/projects/662/events","members":"http://159.27.226.4/api/v4/projects/662/members","cluster_agents":"http://159.27.226.4/api/v4/projects/662/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"private","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2023-06-30T06:35:42.161Z"},"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":false,"service_desk_address":null,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","operations_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","emails_disabled":null,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":51,"import_status":"none","open_issues_count":0,"ci_default_git_depth":20,"ci_forward_deployment_enabled":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"public_jobs":true,"build_timeout":3600,"auto_cancel_pending_pipelines":"enabled","build_coverage_regex":null,"ci_config_path":null,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"restrict_user_defined_variables":false,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"auto_devops_enabled":true,"auto_devops_deploy_strategy":"continuous","autoclose_referenced_issues":true,"keep_latest_artifact":true,"runner_token_expiration_interval":null,"permissions":{"project_access":null,"group_access":{"access_level":20,"notification_level":3}}}]
Success: Status code 200 is in the accepted range: 100:399
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] readJSON
[Pipeline] echo
system/config/system-common
[Pipeline] echo
662
[Pipeline] echo
system-common对应的projectId: 662
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] echo
/root/commtest/rcdev-project/xiamen//M025/master,system-common
[Pipeline] echo
95975e7
[Pipeline] sh
+ python3 /root/weilk/project/get_git_log.py 662 95975e7 101f60f
[Pipeline] writeFile
[Pipeline] echo
{"repo_name":"system-common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"101f60f","version":"","commit_msgs":",IOabtOaWsOmUmeivr+eggQrmm7TmlrDmlYXpmpznoIE=,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"system-common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"101f60f","version":"","commit_msgs":",IOabtOaWsOmUmeivr+eggQrmm7TmlrDmlYXpmpznoIE=,"}
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-device
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] echo
system-device当前commitId: 0425304
[Pipeline] readFile
[Pipeline] echo
[system-common:main, system-device:orin_32_64_pnc_ros_record, system-mqtt:xiamen, system-node-xiamen:orin_32_64_pnc_ros_record_snapshot_upload, system-port:xiamen, perception_segmentation_fisheye:xiamen_imv_3cam, perception_vehicles:master, perception_spreader_imv:xiamen_imv_xg_2rsbp, perception_lidar_camera_fusion:xiamen_imv, perception_camera_driver:all_all_slave, perception_new_detection:xiamen_imv_xg_4rs1610-2rsbp_fusion, perception_data_collection:xiamen_imv, lidar_loc_v2_common:dev, lidar_loc_v2_customized:xiamen/imv/4rshelios_update, perception_lane_detection:xiamen_imv, pointcloud_customized:xiamen, prediction_config:xiamen_imv_orin, crane_align_customized:xiamen_imv_4rshelios-4rsbp, crane_align_common:dev, msf-vehicle:dev, msf-port:hairun, static_transform_common:dev, rslidar_sdk_common:main, hardware:dev, pncc_common_config:dev_hdmap, pncc_vehicle_related_config:imv_xugong, pncc_port_related_config:port_hairun, hdmap_interface:hairun, hdmap:rc_dev]
[Pipeline] echo
system-device对应分支为: orin_32_64_pnc_ros_record
[Pipeline] sh
+ grep push
+ awk -F: '{print $2}'
+ awk -F. '{print $1}'
+ git remote -v
[Pipeline] echo
system-device对应的path_name: system/config/system-device
[Pipeline] sh
+ git remote -v
+ awk -F/ '{print $NF}'
+ awk -F. '{print $1}'
+ grep push
[Pipeline] withCredentials
Masking supported pattern matches of $gitlabToken
[Pipeline] {
[Pipeline] httpRequest
Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [gitlabToken]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
HttpMethod: GET
URL: http://159.27.226.4/api/v4/projects?search=system-device&per_page=100
Content-Type: application/json
PRIVATE-TOKEN: *****
Sending request to url: http://159.27.226.4/api/v4/projects?search=system-device&per_page=100
Response Code: HTTP/1.1 200 OK
Response:
[{"id":664,"description":"","name":"system-device","name_with_namespace":"System / config / system-device","path":"system-device","path_with_namespace":"system/config/system-device","created_at":"2023-06-29T06:36:28.215Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@159.27.226.4:system/config/system-device.git","http_url_to_repo":"http://159.27.226.4/system/config/system-device.git","web_url":"http://159.27.226.4/system/config/system-device","readme_url":null,"avatar_url":null,"forks_count":0,"star_count":0,"last_activity_at":"2026-03-20T05:58:31.760Z","namespace":{"id":751,"name":"config","path":"config","kind":"group","full_path":"system/config","parent_id":14,"avatar_url":null,"web_url":"http://159.27.226.4/groups/system/config"},"_links":{"self":"http://159.27.226.4/api/v4/projects/664","issues":"http://159.27.226.4/api/v4/projects/664/issues","merge_requests":"http://159.27.226.4/api/v4/projects/664/merge_requests","repo_branches":"http://159.27.226.4/api/v4/projects/664/repository/branches","labels":"http://159.27.226.4/api/v4/projects/664/labels","events":"http://159.27.226.4/api/v4/projects/664/events","members":"http://159.27.226.4/api/v4/projects/664/members","cluster_agents":"http://159.27.226.4/api/v4/projects/664/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"private","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2023-06-30T06:36:28.227Z"},"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":false,"service_desk_address":null,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","operations_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","emails_disabled":null,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":51,"import_status":"none","open_issues_count":0,"ci_default_git_depth":20,"ci_forward_deployment_enabled":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"public_jobs":true,"build_timeout":3600,"auto_cancel_pending_pipelines":"enabled","build_coverage_regex":null,"ci_config_path":null,"shared_with_groups":[{"group_id":8,"group_name":"Lidar","group_full_path":"lidar","group_access_level":20,"expires_at":null}],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"restrict_user_defined_variables":false,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"auto_devops_enabled":true,"auto_devops_deploy_strategy":"continuous","autoclose_referenced_issues":true,"keep_latest_artifact":true,"runner_token_expiration_interval":null,"permissions":{"project_access":{"access_level":20,"notification_level":3},"group_access":{"access_level":20,"notification_level":3}}}]
Success: Status code 200 is in the accepted range: 100:399
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] readJSON
[Pipeline] echo
system/config/system-device
[Pipeline] echo
664
[Pipeline] echo
system-device对应的projectId: 664
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] echo
/root/commtest/rcdev-project/xiamen//M025/master,system-device
[Pipeline] echo
1e89ff2
[Pipeline] sh
+ python3 /root/weilk/project/get_git_log.py 664 1e89ff2 0425304
[Pipeline] writeFile
[Pipeline] echo
{"repo_name":"system-device","branch":"orin_32_64_pnc_ros_record","time":"2026-03-20_13-45-29","commit_id":"0425304","version":"","commit_msgs":",YWRkIC92ZWhpY2xlL3BuY19zdGF0dXMK5aKe5Yqg55u45py6NOWSjDflvZXliLYKIOaWsOWinnRvcGlj,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"system-device","branch":"orin_32_64_pnc_ros_record","time":"2026-03-20_13-45-29","commit_id":"0425304","version":"","commit_msgs":",YWRkIC92ZWhpY2xlL3BuY19zdGF0dXMK5aKe5Yqg55u45py6NOWSjDflvZXliLYKIOaWsOWinnRvcGlj,"}
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-mqtt
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] echo
system-mqtt当前commitId: 1c5f2be
[Pipeline] readFile
[Pipeline] echo
[system-common:main, system-device:orin_32_64_pnc_ros_record, system-mqtt:xiamen, system-node-xiamen:orin_32_64_pnc_ros_record_snapshot_upload, system-port:xiamen, perception_segmentation_fisheye:xiamen_imv_3cam, perception_vehicles:master, perception_spreader_imv:xiamen_imv_xg_2rsbp, perception_lidar_camera_fusion:xiamen_imv, perception_camera_driver:all_all_slave, perception_new_detection:xiamen_imv_xg_4rs1610-2rsbp_fusion, perception_data_collection:xiamen_imv, lidar_loc_v2_common:dev, lidar_loc_v2_customized:xiamen/imv/4rshelios_update, perception_lane_detection:xiamen_imv, pointcloud_customized:xiamen, prediction_config:xiamen_imv_orin, crane_align_customized:xiamen_imv_4rshelios-4rsbp, crane_align_common:dev, msf-vehicle:dev, msf-port:hairun, static_transform_common:dev, rslidar_sdk_common:main, hardware:dev, pncc_common_config:dev_hdmap, pncc_vehicle_related_config:imv_xugong, pncc_port_related_config:port_hairun, hdmap_interface:hairun, hdmap:rc_dev]
[Pipeline] echo
system-mqtt对应分支为: xiamen
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F: '{print $2}'
+ awk -F. '{print $1}'
[Pipeline] echo
system-mqtt对应的path_name: system/config/system-mqtt
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F/ '{print $NF}'
+ awk -F. '{print $1}'
[Pipeline] withCredentials
Masking supported pattern matches of $gitlabToken
[Pipeline] {
[Pipeline] httpRequest
Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [gitlabToken]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
HttpMethod: GET
URL: http://159.27.226.4/api/v4/projects?search=system-mqtt&per_page=100
Content-Type: application/json
PRIVATE-TOKEN: *****
Sending request to url: http://159.27.226.4/api/v4/projects?search=system-mqtt&per_page=100
Response Code: HTTP/1.1 200 OK
Response:
[{"id":665,"description":"","name":"system-mqtt","name_with_namespace":"System / config / system-mqtt","path":"system-mqtt","path_with_namespace":"system/config/system-mqtt","created_at":"2023-06-29T06:36:43.908Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@159.27.226.4:system/config/system-mqtt.git","http_url_to_repo":"http://159.27.226.4/system/config/system-mqtt.git","web_url":"http://159.27.226.4/system/config/system-mqtt","readme_url":null,"avatar_url":null,"forks_count":0,"star_count":0,"last_activity_at":"2026-02-10T07:15:46.718Z","namespace":{"id":751,"name":"config","path":"config","kind":"group","full_path":"system/config","parent_id":14,"avatar_url":null,"web_url":"http://159.27.226.4/groups/system/config"},"_links":{"self":"http://159.27.226.4/api/v4/projects/665","issues":"http://159.27.226.4/api/v4/projects/665/issues","merge_requests":"http://159.27.226.4/api/v4/projects/665/merge_requests","repo_branches":"http://159.27.226.4/api/v4/projects/665/repository/branches","labels":"http://159.27.226.4/api/v4/projects/665/labels","events":"http://159.27.226.4/api/v4/projects/665/events","members":"http://159.27.226.4/api/v4/projects/665/members","cluster_agents":"http://159.27.226.4/api/v4/projects/665/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"private","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2023-06-30T06:36:43.922Z"},"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":false,"service_desk_address":null,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","operations_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","emails_disabled":null,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":51,"import_status":"none","open_issues_count":0,"ci_default_git_depth":20,"ci_forward_deployment_enabled":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"public_jobs":true,"build_timeout":3600,"auto_cancel_pending_pipelines":"enabled","build_coverage_regex":null,"ci_config_path":null,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"restrict_user_defined_variables":false,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"auto_devops_enabled":true,"auto_devops_deploy_strategy":"continuous","autoclose_referenced_issues":true,"keep_latest_artifact":true,"runner_token_expiration_interval":null,"permissions":{"project_access":null,"group_access":{"access_level":20,"notification_level":3}}}]
Success: Status code 200 is in the accepted range: 100:399
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] readJSON
[Pipeline] echo
system/config/system-mqtt
[Pipeline] echo
665
[Pipeline] echo
system-mqtt对应的projectId: 665
[Pipeline] fileExists
[Pipeline] sh
+ mkdir -p /root/commtest/rcdev-project/xiamen//M025/master
[Pipeline] sh
+ touch /root/commtest/rcdev-project/xiamen//M025/master/system-mqtt
[Pipeline] writeFile
[Pipeline] sh
+ python3 /root/weilk/project/get_git_now.py 665 1c5f2be
[Pipeline] echo
{"repo_name":"system-mqtt","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"1c5f2be","version":"","commit_msgs":",5YeP5bCR5YiG57uE5pWw6YeP77yM5YeP5bCR57q/56iL5pWw,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"system-mqtt","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"1c5f2be","version":"","commit_msgs":",5YeP5bCR5YiG57uE5pWw6YeP77yM5YeP5bCR57q/56iL5pWw,"}
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-node-xiamen
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] echo
system-node-xiamen当前commitId: b77406f
[Pipeline] readFile
[Pipeline] echo
[system-common:main, system-device:orin_32_64_pnc_ros_record, system-mqtt:xiamen, system-node-xiamen:orin_32_64_pnc_ros_record_snapshot_upload, system-port:xiamen, perception_segmentation_fisheye:xiamen_imv_3cam, perception_vehicles:master, perception_spreader_imv:xiamen_imv_xg_2rsbp, perception_lidar_camera_fusion:xiamen_imv, perception_camera_driver:all_all_slave, perception_new_detection:xiamen_imv_xg_4rs1610-2rsbp_fusion, perception_data_collection:xiamen_imv, lidar_loc_v2_common:dev, lidar_loc_v2_customized:xiamen/imv/4rshelios_update, perception_lane_detection:xiamen_imv, pointcloud_customized:xiamen, prediction_config:xiamen_imv_orin, crane_align_customized:xiamen_imv_4rshelios-4rsbp, crane_align_common:dev, msf-vehicle:dev, msf-port:hairun, static_transform_common:dev, rslidar_sdk_common:main, hardware:dev, pncc_common_config:dev_hdmap, pncc_vehicle_related_config:imv_xugong, pncc_port_related_config:port_hairun, hdmap_interface:hairun, hdmap:rc_dev]
[Pipeline] echo
system-node-xiamen对应分支为: orin_32_64_pnc_ros_record_snapshot_upload
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F: '{print $2}'
+ awk -F. '{print $1}'
[Pipeline] echo
system-node-xiamen对应的path_name: system/config/system-node-xiamen
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F/ '{print $NF}'
+ awk -F. '{print $1}'
[Pipeline] withCredentials
Masking supported pattern matches of $gitlabToken
[Pipeline] {
[Pipeline] httpRequest
Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [gitlabToken]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
HttpMethod: GET
URL: http://159.27.226.4/api/v4/projects?search=system-node-xiamen&per_page=100
Content-Type: application/json
PRIVATE-TOKEN: *****
Sending request to url: http://159.27.226.4/api/v4/projects?search=system-node-xiamen&per_page=100
Response Code: HTTP/1.1 200 OK
Response:
[{"id":669,"description":"","name":"system-node-xiamen","name_with_namespace":"System / config / system-node-xiamen","path":"system-node-xiamen","path_with_namespace":"system/config/system-node-xiamen","created_at":"2023-06-30T02:25:06.015Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@159.27.226.4:system/config/system-node-xiamen.git","http_url_to_repo":"http://159.27.226.4/system/config/system-node-xiamen.git","web_url":"http://159.27.226.4/system/config/system-node-xiamen","readme_url":null,"avatar_url":null,"forks_count":0,"star_count":0,"last_activity_at":"2025-12-03T08:26:10.237Z","namespace":{"id":751,"name":"config","path":"config","kind":"group","full_path":"system/config","parent_id":14,"avatar_url":null,"web_url":"http://159.27.226.4/groups/system/config"},"_links":{"self":"http://159.27.226.4/api/v4/projects/669","issues":"http://159.27.226.4/api/v4/projects/669/issues","merge_requests":"http://159.27.226.4/api/v4/projects/669/merge_requests","repo_branches":"http://159.27.226.4/api/v4/projects/669/repository/branches","labels":"http://159.27.226.4/api/v4/projects/669/labels","events":"http://159.27.226.4/api/v4/projects/669/events","members":"http://159.27.226.4/api/v4/projects/669/members","cluster_agents":"http://159.27.226.4/api/v4/projects/669/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"private","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2023-07-01T02:25:06.031Z"},"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":false,"service_desk_address":null,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","operations_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","emails_disabled":null,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":51,"import_status":"none","open_issues_count":0,"ci_default_git_depth":20,"ci_forward_deployment_enabled":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"public_jobs":true,"build_timeout":3600,"auto_cancel_pending_pipelines":"enabled","build_coverage_regex":null,"ci_config_path":null,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"restrict_user_defined_variables":false,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"auto_devops_enabled":true,"auto_devops_deploy_strategy":"continuous","autoclose_referenced_issues":true,"keep_latest_artifact":true,"runner_token_expiration_interval":null,"permissions":{"project_access":null,"group_access":{"access_level":20,"notification_level":3}}}]
Success: Status code 200 is in the accepted range: 100:399
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] readJSON
[Pipeline] echo
system/config/system-node-xiamen
[Pipeline] echo
669
[Pipeline] echo
system-node-xiamen对应的projectId: 669
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] echo
/root/commtest/rcdev-project/xiamen//M025/master,system-node-xiamen
[Pipeline] echo
4b94c08
[Pipeline] sh
+ python3 /root/weilk/project/get_git_log.py 669 4b94c08 b77406f
[Pipeline] writeFile
[Pipeline] echo
{"repo_name":"system-node-xiamen","branch":"orin_32_64_pnc_ros_record_snapshot_upload","time":"2026-03-20_13-45-29","commit_id":"b77406f","version":"","commit_msgs":",6LCD5pW05b2V5YyFdG9waWMK6LCD5pW05b2V5YyFdG9waWMK5re75YqgYXZt6IqC54K5CuWinuWKoOW9leWItnRvcGlj,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"system-node-xiamen","branch":"orin_32_64_pnc_ros_record_snapshot_upload","time":"2026-03-20_13-45-29","commit_id":"b77406f","version":"","commit_msgs":",6LCD5pW05b2V5YyFdG9waWMK6LCD5pW05b2V5YyFdG9waWMK5re75YqgYXZt6IqC54K5CuWinuWKoOW9leWItnRvcGlj,"}
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-port
[Pipeline] {
[Pipeline] sh
+ git rev-parse --short HEAD
[Pipeline] echo
system-port当前commitId: befdcb7
[Pipeline] readFile
[Pipeline] echo
[system-common:main, system-device:orin_32_64_pnc_ros_record, system-mqtt:xiamen, system-node-xiamen:orin_32_64_pnc_ros_record_snapshot_upload, system-port:xiamen, perception_segmentation_fisheye:xiamen_imv_3cam, perception_vehicles:master, perception_spreader_imv:xiamen_imv_xg_2rsbp, perception_lidar_camera_fusion:xiamen_imv, perception_camera_driver:all_all_slave, perception_new_detection:xiamen_imv_xg_4rs1610-2rsbp_fusion, perception_data_collection:xiamen_imv, lidar_loc_v2_common:dev, lidar_loc_v2_customized:xiamen/imv/4rshelios_update, perception_lane_detection:xiamen_imv, pointcloud_customized:xiamen, prediction_config:xiamen_imv_orin, crane_align_customized:xiamen_imv_4rshelios-4rsbp, crane_align_common:dev, msf-vehicle:dev, msf-port:hairun, static_transform_common:dev, rslidar_sdk_common:main, hardware:dev, pncc_common_config:dev_hdmap, pncc_vehicle_related_config:imv_xugong, pncc_port_related_config:port_hairun, hdmap_interface:hairun, hdmap:rc_dev]
[Pipeline] echo
system-port对应分支为: xiamen
[Pipeline] sh
+ git remote -v
+ grep push
+ awk -F. '{print $1}'
+ awk -F: '{print $2}'
[Pipeline] echo
system-port对应的path_name: system/config/system-port
[Pipeline] sh
+ grep push
+ awk -F/ '{print $NF}'
+ awk -F. '{print $1}'
+ git remote -v
[Pipeline] withCredentials
Masking supported pattern matches of $gitlabToken
[Pipeline] {
[Pipeline] httpRequest
Warning: A secret was passed to "httpRequest" using Groovy String interpolation, which is insecure.
Affected argument(s) used the following variable(s): [gitlabToken]
See https://jenkins.io/redirect/groovy-string-interpolation for details.
HttpMethod: GET
URL: http://159.27.226.4/api/v4/projects?search=system-port&per_page=100
Content-Type: application/json
PRIVATE-TOKEN: *****
Sending request to url: http://159.27.226.4/api/v4/projects?search=system-port&per_page=100
Response Code: HTTP/1.1 200 OK
Response:
[{"id":668,"description":"","name":"system-port","name_with_namespace":"System / config / system-port","path":"system-port","path_with_namespace":"system/config/system-port","created_at":"2023-06-30T02:17:16.921Z","default_branch":"main","tag_list":[],"topics":[],"ssh_url_to_repo":"git@159.27.226.4:system/config/system-port.git","http_url_to_repo":"http://159.27.226.4/system/config/system-port.git","web_url":"http://159.27.226.4/system/config/system-port","readme_url":null,"avatar_url":null,"forks_count":0,"star_count":0,"last_activity_at":"2026-03-17T03:44:25.340Z","namespace":{"id":751,"name":"config","path":"config","kind":"group","full_path":"system/config","parent_id":14,"avatar_url":null,"web_url":"http://159.27.226.4/groups/system/config"},"_links":{"self":"http://159.27.226.4/api/v4/projects/668","issues":"http://159.27.226.4/api/v4/projects/668/issues","merge_requests":"http://159.27.226.4/api/v4/projects/668/merge_requests","repo_branches":"http://159.27.226.4/api/v4/projects/668/repository/branches","labels":"http://159.27.226.4/api/v4/projects/668/labels","events":"http://159.27.226.4/api/v4/projects/668/events","members":"http://159.27.226.4/api/v4/projects/668/members","cluster_agents":"http://159.27.226.4/api/v4/projects/668/cluster_agents"},"packages_enabled":true,"empty_repo":false,"archived":false,"visibility":"private","resolve_outdated_diff_discussions":false,"container_expiration_policy":{"cadence":"1d","enabled":false,"keep_n":10,"older_than":"90d","name_regex":".*","name_regex_keep":null,"next_run_at":"2023-07-01T02:17:16.991Z"},"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"container_registry_enabled":true,"service_desk_enabled":false,"service_desk_address":null,"can_create_merge_request_in":true,"issues_access_level":"enabled","repository_access_level":"enabled","merge_requests_access_level":"enabled","forking_access_level":"enabled","wiki_access_level":"enabled","builds_access_level":"enabled","snippets_access_level":"enabled","pages_access_level":"private","operations_access_level":"enabled","analytics_access_level":"enabled","container_registry_access_level":"enabled","security_and_compliance_access_level":"private","emails_disabled":null,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":51,"import_status":"none","open_issues_count":0,"ci_default_git_depth":20,"ci_forward_deployment_enabled":true,"ci_job_token_scope_enabled":false,"ci_separated_caches":true,"public_jobs":true,"build_timeout":3600,"auto_cancel_pending_pipelines":"enabled","build_coverage_regex":null,"ci_config_path":null,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"allow_merge_on_skipped_pipeline":null,"restrict_user_defined_variables":false,"request_access_enabled":true,"only_allow_merge_if_all_discussions_are_resolved":false,"remove_source_branch_after_merge":true,"printing_merge_request_link_enabled":true,"merge_method":"merge","squash_option":"default_off","enforce_auth_checks_on_uploads":true,"suggestion_commit_message":null,"merge_commit_template":null,"squash_commit_template":null,"auto_devops_enabled":true,"auto_devops_deploy_strategy":"continuous","autoclose_referenced_issues":true,"keep_latest_artifact":true,"runner_token_expiration_interval":null,"permissions":{"project_access":null,"group_access":{"access_level":20,"notification_level":3}}}]
Success: Status code 200 is in the accepted range: 100:399
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] readJSON
[Pipeline] echo
system/config/system-port
[Pipeline] echo
668
[Pipeline] echo
system-port对应的projectId: 668
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] echo
/root/commtest/rcdev-project/xiamen//M025/master,system-port
[Pipeline] echo
befdcb7
[Pipeline] sh
+ python3 /root/weilk/project/get_git_log.py 668 befdcb7 befdcb7
[Pipeline] writeFile
[Pipeline] echo
{"repo_name":"system-port","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"befdcb7","version":"","commit_msgs":",,"}
[Pipeline] }
[Pipeline] // dir
[Pipeline] echo
{"repo_name":"system-port","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"befdcb7","version":"","commit_msgs":",,"}
[Pipeline] echo
5
[Pipeline] echo
最终生成的json文件内容: {"module":[{"repo_name":"crane_align_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"7fb59aa","version":"","commit_msgs":",,IOaWsOWIhuaUry3pnZLlqIHlr7nmjII="},{"repo_name":"crane_align_customized","branch":"xiamen_imv_4rshelios-4rsbp","time":"2026-03-20_13-45-29","commit_id":"4303a30","version":"","commit_msgs":"IElOX1VOTE9BROS5n+WKoOS4iuWQiuWFt+WvueS9jQ==,,"},{"repo_name":"hardware","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"94393b2","version":"","commit_msgs":",,"},{"repo_name":"hdmap","branch":"rc_dev","time":"2026-03-20_13-45-29","commit_id":"61decd9","version":"","commit_msgs":",,"},{"repo_name":"hdmap_interface","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"245e233","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"62abfd3","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_customized","branch":"xiamen/imv/4rshelios_update","time":"2026-03-20_13-45-29","commit_id":"5f9c9db","version":"","commit_msgs":"IOiwg+aVtOS4jlIw5YyX5L6n5Zy65qGl5L6b55S15p6255u45YWzbWFza+WPguaVsO+8jOaJqeWkp+eJueW+geWPr+eUqOiMg+WbtAog5bCGWDflkoxUN+WvueW6lOeahGR5bmFtaWNfbWFw5Yy65Z+f5LiOWDhUOOWvueW6lOeahOWMuuWfn+S7juWQjeensOS4iui/m+ihjOWMuuWIhg==,IOWinuWKoOWIneWAvOWBj+e9ruWPguaVsO+8jOeUqOS6juemu+e6v+iwg+ivle+8jOWdh+S4ujAKIOS9v+eUqDA3MjLngrnkupHlnLDlm74KIOiwg+aVtOmBk+mSieaPkOWPluW8uuW6pumYiOWAvO+8jDE1MC0+MTEwCiByZWZfbWFwX3JhZGl1c+mZjeS9juiHszgwLjBt,"},{"repo_name":"msf-port","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"2c3e912","version":"","commit_msgs":",,"},{"repo_name":"msf-vehicle","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"a13eb4a","version":"","commit_msgs":",,"},{"repo_name":"perception_camera_driver","branch":"all_all_slave","time":"2026-03-20_13-45-29","commit_id":"999d9e9","version":"","commit_msgs":",IOaJk+W8gOWPpuS4gOS4quWQiuWFt+ebuOacug==,"},{"repo_name":"perception_data_collection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"5770560","version":"","commit_msgs":",,"},{"repo_name":"perception_lane_detection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"f7427b3","version":"","commit_msgs":"IOWIh+aNouWumuS9jeeahOa2iOaBr+a6kA==,,"},{"repo_name":"perception_lidar_camera_fusion","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"a2e92ae","version":"","commit_msgs":",,"},{"repo_name":"perception_new_detection","branch":"xiamen_imv_xg_4rs1610-2rsbp_fusion","time":"2026-03-20_13-45-29","commit_id":"93795f5","version":"","commit_msgs":",,5Y6m6Zeo6YGu5oyh6Zqc56KN54mp55Sf5ZG95ZGo5pyf6LCD5pW05Y+C5pWwLgrkuI3ph4fnlKhyb2nljrvpmaTpvpnpobsK5aSn5qat5ZKM5Y6m6Zeo5re75Yqg5L+d55WZ6b6Z6aG75qCH5b+X5L2NCuWkp+mbqOivr+ajgElNVuS4tOaXtjAuM+WNhzAuNi4K5Y6m6Zeo5omT5byA6Ieq6L2m6IyD5Zu0Tk1TLgrlop7liqDpmLPlhYnlmarngrnov4fmu6TojIPlm7QuCiDpmLPlhYnlmarngrnov4fmu6QuCumYs+WFieWZqueCueWOu+mZpOiMg+WbtOaJqeWkpzE1Y20uCuWOpumXqOihjOS6uuS9juWIhumYiOWAvDAuMi0+MC4zNSwg5Y676Lev54mM6K+v5qOACuWFs+aOieaXtuWfn+i/h+a7pC4K5omp5aSn6Ziz5YWJ5Zmq54K56L+H5ruk6IyD5Zu0Lg=="},{"repo_name":"perception_segmentation_fisheye","branch":"xiamen_imv_3cam","time":"2026-03-20_13-45-29","commit_id":"914c771","version":"","commit_msgs":",,"},{"repo_name":"perception_spreader_imv","branch":"xiamen_imv_xg_2rsbp","time":"2026-03-20_13-45-29","commit_id":"c9af9c0","version":"","commit_msgs":",,IOaXoOeUqOWPguaVsOa4heeQhg=="},{"repo_name":"perception_vehicles","branch":"master","time":"2026-03-20_13-45-29","commit_id":"5867449","version":"","commit_msgs":"IGNhbWVyYSBwYXJhbQogeWF3IHRvIDAuMDAzCiB1cCBmaXg=,,"},{"repo_name":"pncc_common_config","branch":"dev_hdmap","time":"2026-03-20_13-45-29","commit_id":"f39047f","version":"","commit_msgs":",,"},{"repo_name":"pncc_port_related_config","branch":"port_hairun","time":"2026-03-20_13-45-29","commit_id":"7d15a29","version":"","commit_msgs":",,"},{"repo_name":"pncc_vehicle_related_config","branch":"imv_xugong","time":"2026-03-20_13-45-29","commit_id":"7c5c5b1","version":"","commit_msgs":",,"},{"repo_name":"pointcloud_customized","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"59197bf","version":"","commit_msgs":",IFIx5pu05paw54K55LqR5Zyw5Zu+,"},{"repo_name":"prediction_config","branch":"xiamen_imv_orin","time":"2026-03-20_13-45-29","commit_id":"96b8e16","version":"","commit_msgs":",,"},{"repo_name":"rslidar_sdk_common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"3b3ec60","version":"","commit_msgs":",IOWinuWKoOafpeeci+mbhuWNoeeahHJ2aXouY29uZmln5paH5Lu2,"},{"repo_name":"static_transform_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"0895600","version":"","commit_msgs":"5Y+C5pWw6Lev5b6E5pu05pS5,,"},{"repo_name":"system-common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"101f60f","version":"","commit_msgs":",IOabtOaWsOmUmeivr+eggQrmm7TmlrDmlYXpmpznoIE=,"},{"repo_name":"system-device","branch":"orin_32_64_pnc_ros_record","time":"2026-03-20_13-45-29","commit_id":"0425304","version":"","commit_msgs":",YWRkIC92ZWhpY2xlL3BuY19zdGF0dXMK5aKe5Yqg55u45py6NOWSjDflvZXliLYKIOaWsOWinnRvcGlj,"},{"repo_name":"system-mqtt","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"1c5f2be","version":"","commit_msgs":",5YeP5bCR5YiG57uE5pWw6YeP77yM5YeP5bCR57q/56iL5pWw,"},{"repo_name":"system-node-xiamen","branch":"orin_32_64_pnc_ros_record_snapshot_upload","time":"2026-03-20_13-45-29","commit_id":"b77406f","version":"","commit_msgs":",6LCD5pW05b2V5YyFdG9waWMK6LCD5pW05b2V5YyFdG9waWMK5re75YqgYXZt6IqC54K5CuWinuWKoOW9leWItnRvcGlj,"},{"repo_name":"system-port","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"befdcb7","version":"","commit_msgs":",,"}],"device":1,"device_name":"M025_Master","type":0,"project":"5"}
[Pipeline] sh
+ echo '{"module":[{"repo_name":"crane_align_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"7fb59aa","version":"","commit_msgs":",,IOaWsOWIhuaUry3pnZLlqIHlr7nmjII="},{"repo_name":"crane_align_customized","branch":"xiamen_imv_4rshelios-4rsbp","time":"2026-03-20_13-45-29","commit_id":"4303a30","version":"","commit_msgs":"IElOX1VOTE9BROS5n+WKoOS4iuWQiuWFt+WvueS9jQ==,,"},{"repo_name":"hardware","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"94393b2","version":"","commit_msgs":",,"},{"repo_name":"hdmap","branch":"rc_dev","time":"2026-03-20_13-45-29","commit_id":"61decd9","version":"","commit_msgs":",,"},{"repo_name":"hdmap_interface","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"245e233","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"62abfd3","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_customized","branch":"xiamen/imv/4rshelios_update","time":"2026-03-20_13-45-29","commit_id":"5f9c9db","version":"","commit_msgs":"IOiwg+aVtOS4jlIw5YyX5L6n5Zy65qGl5L6b55S15p6255u45YWzbWFza+WPguaVsO+8jOaJqeWkp+eJueW+geWPr+eUqOiMg+WbtAog5bCGWDflkoxUN+WvueW6lOeahGR5bmFtaWNfbWFw5Yy65Z+f5LiOWDhUOOWvueW6lOeahOWMuuWfn+S7juWQjeensOS4iui/m+ihjOWMuuWIhg==,IOWinuWKoOWIneWAvOWBj+e9ruWPguaVsO+8jOeUqOS6juemu+e6v+iwg+ivle+8jOWdh+S4ujAKIOS9v+eUqDA3MjLngrnkupHlnLDlm74KIOiwg+aVtOmBk+mSieaPkOWPluW8uuW6pumYiOWAvO+8jDE1MC0+MTEwCiByZWZfbWFwX3JhZGl1c+mZjeS9juiHszgwLjBt,"},{"repo_name":"msf-port","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"2c3e912","version":"","commit_msgs":",,"},{"repo_name":"msf-vehicle","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"a13eb4a","version":"","commit_msgs":",,"},{"repo_name":"perception_camera_driver","branch":"all_all_slave","time":"2026-03-20_13-45-29","commit_id":"999d9e9","version":"","commit_msgs":",IOaJk+W8gOWPpuS4gOS4quWQiuWFt+ebuOacug==,"},{"repo_name":"perception_data_collection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"5770560","version":"","commit_msgs":",,"},{"repo_name":"perception_lane_detection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"f7427b3","version":"","commit_msgs":"IOWIh+aNouWumuS9jeeahOa2iOaBr+a6kA==,,"},{"repo_name":"perception_lidar_camera_fusion","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"a2e92ae","version":"","commit_msgs":",,"},{"repo_name":"perception_new_detection","branch":"xiamen_imv_xg_4rs1610-2rsbp_fusion","time":"2026-03-20_13-45-29","commit_id":"93795f5","version":"","commit_msgs":",,5Y6m6Zeo6YGu5oyh6Zqc56KN54mp55Sf5ZG95ZGo5pyf6LCD5pW05Y+C5pWwLgrkuI3ph4fnlKhyb2nljrvpmaTpvpnpobsK5aSn5qat5ZKM5Y6m6Zeo5re75Yqg5L+d55WZ6b6Z6aG75qCH5b+X5L2NCuWkp+mbqOivr+ajgElNVuS4tOaXtjAuM+WNhzAuNi4K5Y6m6Zeo5omT5byA6Ieq6L2m6IyD5Zu0Tk1TLgrlop7liqDpmLPlhYnlmarngrnov4fmu6TojIPlm7QuCiDpmLPlhYnlmarngrnov4fmu6QuCumYs+WFieWZqueCueWOu+mZpOiMg+WbtOaJqeWkpzE1Y20uCuWOpumXqOihjOS6uuS9juWIhumYiOWAvDAuMi0+MC4zNSwg5Y676Lev54mM6K+v5qOACuWFs+aOieaXtuWfn+i/h+a7pC4K5omp5aSn6Ziz5YWJ5Zmq54K56L+H5ruk6IyD5Zu0Lg=="},{"repo_name":"perception_segmentation_fisheye","branch":"xiamen_imv_3cam","time":"2026-03-20_13-45-29","commit_id":"914c771","version":"","commit_msgs":",,"},{"repo_name":"perception_spreader_imv","branch":"xiamen_imv_xg_2rsbp","time":"2026-03-20_13-45-29","commit_id":"c9af9c0","version":"","commit_msgs":",,IOaXoOeUqOWPguaVsOa4heeQhg=="},{"repo_name":"perception_vehicles","branch":"master","time":"2026-03-20_13-45-29","commit_id":"5867449","version":"","commit_msgs":"IGNhbWVyYSBwYXJhbQogeWF3IHRvIDAuMDAzCiB1cCBmaXg=,,"},{"repo_name":"pncc_common_config","branch":"dev_hdmap","time":"2026-03-20_13-45-29","commit_id":"f39047f","version":"","commit_msgs":",,"},{"repo_name":"pncc_port_related_config","branch":"port_hairun","time":"2026-03-20_13-45-29","commit_id":"7d15a29","version":"","commit_msgs":",,"},{"repo_name":"pncc_vehicle_related_config","branch":"imv_xugong","time":"2026-03-20_13-45-29","commit_id":"7c5c5b1","version":"","commit_msgs":",,"},{"repo_name":"pointcloud_customized","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"59197bf","version":"","commit_msgs":",IFIx5pu05paw54K55LqR5Zyw5Zu+,"},{"repo_name":"prediction_config","branch":"xiamen_imv_orin","time":"2026-03-20_13-45-29","commit_id":"96b8e16","version":"","commit_msgs":",,"},{"repo_name":"rslidar_sdk_common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"3b3ec60","version":"","commit_msgs":",IOWinuWKoOafpeeci+mbhuWNoeeahHJ2aXouY29uZmln5paH5Lu2,"},{"repo_name":"static_transform_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"0895600","version":"","commit_msgs":"5Y+C5pWw6Lev5b6E5pu05pS5,,"},{"repo_name":"system-common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"101f60f","version":"","commit_msgs":",IOabtOaWsOmUmeivr+eggQrmm7TmlrDmlYXpmpznoIE=,"},{"repo_name":"system-device","branch":"orin_32_64_pnc_ros_record","time":"2026-03-20_13-45-29","commit_id":"0425304","version":"","commit_msgs":",YWRkIC92ZWhpY2xlL3BuY19zdGF0dXMK5aKe5Yqg55u45py6NOWSjDflvZXliLYKIOaWsOWinnRvcGlj,"},{"repo_name":"system-mqtt","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"1c5f2be","version":"","commit_msgs":",5YeP5bCR5YiG57uE5pWw6YeP77yM5YeP5bCR57q/56iL5pWw,"},{"repo_name":"system-node-xiamen","branch":"orin_32_64_pnc_ros_record_snapshot_upload","time":"2026-03-20_13-45-29","commit_id":"b77406f","version":"","commit_msgs":",6LCD5pW05b2V5YyFdG9waWMK6LCD5pW05b2V5YyFdG9waWMK5re75YqgYXZt6IqC54K5CuWinuWKoOW9leWItnRvcGlj,"},{"repo_name":"system-port","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"befdcb7","version":"","commit_msgs":",,"}],"device":1,"device_name":"M025_Master","type":0,"project":"5"}'
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/crane_align_common@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/crane_align_customized@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/hardware@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/hdmap_interface@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/hdmap@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/lidar_loc_v2_common@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/lidar_loc_v2_customized@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/msf-port@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/msf-vehicle@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_camera_driver@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_data_collection@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_lane_detection@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_lidar_camera_fusion@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_new_detection@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_segmentation_fisheye@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_spreader_imv@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/perception_vehicles@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/pncc_common_config@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/pncc_port_related_config@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/pncc_vehicle_related_config@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/pointcloud_customized@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/prediction_config@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/rslidar_sdk_common@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/static_transform_common@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-common@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-device@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-mqtt@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-node-xiamen@tmp /root/workspace/params-submodule/xiamen-submodule/M025/master/params_submodule/system-port@tmp
[Pipeline] }
[Pipeline] // script
[Pipeline] echo
{"repo_name":"crane_align_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"7fb59aa","version":"","commit_msgs":",,IOaWsOWIhuaUry3pnZLlqIHlr7nmjII="},{"repo_name":"crane_align_customized","branch":"xiamen_imv_4rshelios-4rsbp","time":"2026-03-20_13-45-29","commit_id":"4303a30","version":"","commit_msgs":"IElOX1VOTE9BROS5n+WKoOS4iuWQiuWFt+WvueS9jQ==,,"},{"repo_name":"hardware","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"94393b2","version":"","commit_msgs":",,"},{"repo_name":"hdmap","branch":"rc_dev","time":"2026-03-20_13-45-29","commit_id":"61decd9","version":"","commit_msgs":",,"},{"repo_name":"hdmap_interface","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"245e233","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"62abfd3","version":"","commit_msgs":",,"},{"repo_name":"lidar_loc_v2_customized","branch":"xiamen/imv/4rshelios_update","time":"2026-03-20_13-45-29","commit_id":"5f9c9db","version":"","commit_msgs":"IOiwg+aVtOS4jlIw5YyX5L6n5Zy65qGl5L6b55S15p6255u45YWzbWFza+WPguaVsO+8jOaJqeWkp+eJueW+geWPr+eUqOiMg+WbtAog5bCGWDflkoxUN+WvueW6lOeahGR5bmFtaWNfbWFw5Yy65Z+f5LiOWDhUOOWvueW6lOeahOWMuuWfn+S7juWQjeensOS4iui/m+ihjOWMuuWIhg==,IOWinuWKoOWIneWAvOWBj+e9ruWPguaVsO+8jOeUqOS6juemu+e6v+iwg+ivle+8jOWdh+S4ujAKIOS9v+eUqDA3MjLngrnkupHlnLDlm74KIOiwg+aVtOmBk+mSieaPkOWPluW8uuW6pumYiOWAvO+8jDE1MC0+MTEwCiByZWZfbWFwX3JhZGl1c+mZjeS9juiHszgwLjBt,"},{"repo_name":"msf-port","branch":"hairun","time":"2026-03-20_13-45-29","commit_id":"2c3e912","version":"","commit_msgs":",,"},{"repo_name":"msf-vehicle","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"a13eb4a","version":"","commit_msgs":",,"},{"repo_name":"perception_camera_driver","branch":"all_all_slave","time":"2026-03-20_13-45-29","commit_id":"999d9e9","version":"","commit_msgs":",IOaJk+W8gOWPpuS4gOS4quWQiuWFt+ebuOacug==,"},{"repo_name":"perception_data_collection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"5770560","version":"","commit_msgs":",,"},{"repo_name":"perception_lane_detection","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"f7427b3","version":"","commit_msgs":"IOWIh+aNouWumuS9jeeahOa2iOaBr+a6kA==,,"},{"repo_name":"perception_lidar_camera_fusion","branch":"xiamen_imv","time":"2026-03-20_13-45-29","commit_id":"a2e92ae","version":"","commit_msgs":",,"},{"repo_name":"perception_new_detection","branch":"xiamen_imv_xg_4rs1610-2rsbp_fusion","time":"2026-03-20_13-45-29","commit_id":"93795f5","version":"","commit_msgs":",,5Y6m6Zeo6YGu5oyh6Zqc56KN54mp55Sf5ZG95ZGo5pyf6LCD5pW05Y+C5pWwLgrkuI3ph4fnlKhyb2nljrvpmaTpvpnpobsK5aSn5qat5ZKM5Y6m6Zeo5re75Yqg5L+d55WZ6b6Z6aG75qCH5b+X5L2NCuWkp+mbqOivr+ajgElNVuS4tOaXtjAuM+WNhzAuNi4K5Y6m6Zeo5omT5byA6Ieq6L2m6IyD5Zu0Tk1TLgrlop7liqDpmLPlhYnlmarngrnov4fmu6TojIPlm7QuCiDpmLPlhYnlmarngrnov4fmu6QuCumYs+WFieWZqueCueWOu+mZpOiMg+WbtOaJqeWkpzE1Y20uCuWOpumXqOihjOS6uuS9juWIhumYiOWAvDAuMi0+MC4zNSwg5Y676Lev54mM6K+v5qOACuWFs+aOieaXtuWfn+i/h+a7pC4K5omp5aSn6Ziz5YWJ5Zmq54K56L+H5ruk6IyD5Zu0Lg=="},{"repo_name":"perception_segmentation_fisheye","branch":"xiamen_imv_3cam","time":"2026-03-20_13-45-29","commit_id":"914c771","version":"","commit_msgs":",,"},{"repo_name":"perception_spreader_imv","branch":"xiamen_imv_xg_2rsbp","time":"2026-03-20_13-45-29","commit_id":"c9af9c0","version":"","commit_msgs":",,IOaXoOeUqOWPguaVsOa4heeQhg=="},{"repo_name":"perception_vehicles","branch":"master","time":"2026-03-20_13-45-29","commit_id":"5867449","version":"","commit_msgs":"IGNhbWVyYSBwYXJhbQogeWF3IHRvIDAuMDAzCiB1cCBmaXg=,,"},{"repo_name":"pncc_common_config","branch":"dev_hdmap","time":"2026-03-20_13-45-29","commit_id":"f39047f","version":"","commit_msgs":",,"},{"repo_name":"pncc_port_related_config","branch":"port_hairun","time":"2026-03-20_13-45-29","commit_id":"7d15a29","version":"","commit_msgs":",,"},{"repo_name":"pncc_vehicle_related_config","branch":"imv_xugong","time":"2026-03-20_13-45-29","commit_id":"7c5c5b1","version":"","commit_msgs":",,"},{"repo_name":"pointcloud_customized","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"59197bf","version":"","commit_msgs":",IFIx5pu05paw54K55LqR5Zyw5Zu+,"},{"repo_name":"prediction_config","branch":"xiamen_imv_orin","time":"2026-03-20_13-45-29","commit_id":"96b8e16","version":"","commit_msgs":",,"},{"repo_name":"rslidar_sdk_common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"3b3ec60","version":"","commit_msgs":",IOWinuWKoOafpeeci+mbhuWNoeeahHJ2aXouY29uZmln5paH5Lu2,"},{"repo_name":"static_transform_common","branch":"dev","time":"2026-03-20_13-45-29","commit_id":"0895600","version":"","commit_msgs":"5Y+C5pWw6Lev5b6E5pu05pS5,,"},{"repo_name":"system-common","branch":"main","time":"2026-03-20_13-45-29","commit_id":"101f60f","version":"","commit_msgs":",IOabtOaWsOmUmeivr+eggQrmm7TmlrDmlYXpmpznoIE=,"},{"repo_name":"system-device","branch":"orin_32_64_pnc_ros_record","time":"2026-03-20_13-45-29","commit_id":"0425304","version":"","commit_msgs":",YWRkIC92ZWhpY2xlL3BuY19zdGF0dXMK5aKe5Yqg55u45py6NOWSjDflvZXliLYKIOaWsOWinnRvcGlj,"},{"repo_name":"system-mqtt","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"1c5f2be","version":"","commit_msgs":",5YeP5bCR5YiG57uE5pWw6YeP77yM5YeP5bCR57q/56iL5pWw,"},{"repo_name":"system-node-xiamen","branch":"orin_32_64_pnc_ros_record_snapshot_upload","time":"2026-03-20_13-45-29","commit_id":"b77406f","version":"","commit_msgs":",6LCD5pW05b2V5YyFdG9waWMK6LCD5pW05b2V5YyFdG9waWMK5re75YqgYXZt6IqC54K5CuWinuWKoOW9leWItnRvcGlj,"},{"repo_name":"system-port","branch":"xiamen","time":"2026-03-20_13-45-29","commit_id":"befdcb7","version":"","commit_msgs":",,"}
[Pipeline] fileExists
[Pipeline] readFile
[Pipeline] echo
M024
[Pipeline] sh
+ echo M025
[Pipeline] readJSON
[Pipeline] echo
<h3>M025</h3><p></p><table border="2"><tr><th bgcolor='#DCDCDC'> 模块名称 </th><th bgcolor='#DCDCDC'> commitID </th><th bgcolor='#DCDCDC'> 分支名称 </th></tr><tr><td>crane_align_common</td><td>7fb59aa</td><td>dev</td></tr><tr><td>crane_align_customized</td><td>4303a30</td><td>xiamen_imv_4rshelios-4rsbp</td></tr><tr><td>hardware</td><td>94393b2</td><td>dev</td></tr><tr><td>hdmap</td><td>61decd9</td><td>rc_dev</td></tr><tr><td>hdmap_interface</td><td>245e233</td><td>hairun</td></tr><tr><td>lidar_loc_v2_common</td><td>62abfd3</td><td>dev</td></tr><tr><td>lidar_loc_v2_customized</td><td>5f9c9db</td><td>xiamen/imv/4rshelios_update</td></tr><tr><td>msf-port</td><td>2c3e912</td><td>hairun</td></tr><tr><td>msf-vehicle</td><td>a13eb4a</td><td>dev</td></tr><tr><td>perception_camera_driver</td><td>999d9e9</td><td>all_all_slave</td></tr><tr><td>perception_data_collection</td><td>5770560</td><td>xiamen_imv</td></tr><tr><td>perception_lane_detection</td><td>f7427b3</td><td>xiamen_imv</td></tr><tr><td>perception_lidar_camera_fusion</td><td>a2e92ae</td><td>xiamen_imv</td></tr><tr><td>perception_new_detection</td><td>93795f5</td><td>xiamen_imv_xg_4rs1610-2rsbp_fusion</td></tr><tr><td>perception_segmentation_fisheye</td><td>914c771</td><td>xiamen_imv_3cam</td></tr><tr><td>perception_spreader_imv</td><td>c9af9c0</td><td>xiamen_imv_xg_2rsbp</td></tr><tr><td>perception_vehicles</td><td>5867449</td><td>master</td></tr><tr><td>pncc_common_config</td><td>f39047f</td><td>dev_hdmap</td></tr><tr><td>pncc_port_related_config</td><td>7d15a29</td><td>port_hairun</td></tr><tr><td>pncc_vehicle_related_config</td><td>7c5c5b1</td><td>imv_xugong</td></tr><tr><td>pointcloud_customized</td><td>59197bf</td><td>xiamen</td></tr><tr><td>prediction_config</td><td>96b8e16</td><td>xiamen_imv_orin</td></tr><tr><td>rslidar_sdk_common</td><td>3b3ec60</td><td>main</td></tr><tr><td>static_transform_common</td><td>0895600</td><td>dev</td></tr><tr><td>system-common</td><td>101f60f</td><td>main</td></tr><tr><td>system-device</td><td>0425304</td><td>orin_32_64_pnc_ros_record</td></tr><tr><td>system-mqtt</td><td>1c5f2be</td><td>xiamen</td></tr><tr><td>system-node-xiamen</td><td>b77406f</td><td>orin_32_64_pnc_ros_record_snapshot_upload</td></tr><tr><td>system-port</td><td>befdcb7</td><td>xiamen</td></tr></table>
[Pipeline] sh
+ echo '<h3>M025</h3><p></p><table border="2"><tr><th bgcolor=#DCDCDC> 模块名称 </th><th bgcolor=#DCDCDC> commitID </th><th bgcolor=#DCDCDC> 分支名称 </th></tr><tr><td>crane_align_common</td><td>7fb59aa</td><td>dev</td></tr><tr><td>crane_align_customized</td><td>4303a30</td><td>xiamen_imv_4rshelios-4rsbp</td></tr><tr><td>hardware</td><td>94393b2</td><td>dev</td></tr><tr><td>hdmap</td><td>61decd9</td><td>rc_dev</td></tr><tr><td>hdmap_interface</td><td>245e233</td><td>hairun</td></tr><tr><td>lidar_loc_v2_common</td><td>62abfd3</td><td>dev</td></tr><tr><td>lidar_loc_v2_customized</td><td>5f9c9db</td><td>xiamen/imv/4rshelios_update</td></tr><tr><td>msf-port</td><td>2c3e912</td><td>hairun</td></tr><tr><td>msf-vehicle</td><td>a13eb4a</td><td>dev</td></tr><tr><td>perception_camera_driver</td><td>999d9e9</td><td>all_all_slave</td></tr><tr><td>perception_data_collection</td><td>5770560</td><td>xiamen_imv</td></tr><tr><td>perception_lane_detection</td><td>f7427b3</td><td>xiamen_imv</td></tr><tr><td>perception_lidar_camera_fusion</td><td>a2e92ae</td><td>xiamen_imv</td></tr><tr><td>perception_new_detection</td><td>93795f5</td><td>xiamen_imv_xg_4rs1610-2rsbp_fusion</td></tr><tr><td>perception_segmentation_fisheye</td><td>914c771</td><td>xiamen_imv_3cam</td></tr><tr><td>perception_spreader_imv</td><td>c9af9c0</td><td>xiamen_imv_xg_2rsbp</td></tr><tr><td>perception_vehicles</td><td>5867449</td><td>master</td></tr><tr><td>pncc_common_config</td><td>f39047f</td><td>dev_hdmap</td></tr><tr><td>pncc_port_related_config</td><td>7d15a29</td><td>port_hairun</td></tr><tr><td>pncc_vehicle_related_config</td><td>7c5c5b1</td><td>imv_xugong</td></tr><tr><td>pointcloud_customized</td><td>59197bf</td><td>xiamen</td></tr><tr><td>prediction_config</td><td>96b8e16</td><td>xiamen_imv_orin</td></tr><tr><td>rslidar_sdk_common</td><td>3b3ec60</td><td>main</td></tr><tr><td>static_transform_common</td><td>0895600</td><td>dev</td></tr><tr><td>system-common</td><td>101f60f</td><td>main</td></tr><tr><td>system-device</td><td>0425304</td><td>orin_32_64_pnc_ros_record</td></tr><tr><td>system-mqtt</td><td>1c5f2be</td><td>xiamen</td></tr><tr><td>system-node-xiamen</td><td>b77406f</td><td>orin_32_64_pnc_ros_record_snapshot_upload</td></tr><tr><td>system-port</td><td>befdcb7</td><td>xiamen</td></tr></table>'
[Pipeline] echo
html写入完成
[Pipeline] echo
[M007master][M008master][M009master][M010master][M011master][M012master][M013master][M014master][M015master][M016master][M017master][M018master][M019master][M020master][M021master][M022master][M023master][M024master][M025master]
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // parallel
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (zip->post)
[Pipeline] script
[Pipeline] {
[Pipeline] ansiColor
[Pipeline] {
[Pipeline] echo
>>>>>>>>>>>############################### [M007, M008, M009, M010, M011, M012, M013, M014, M015, M016, M017, M018, M019, M020, M021, M022, M023, M024, M025] 压缩并上传! #################################<<<<<<<<<<<
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] echo
------------------------------------- M007压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M007/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/xiamen-submodule/M007/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ fast_lio/ hardware/ hdmap/ hdmap_interface/ imv_spreader_detection/ lane_detection/ lidar_camera_fusion/ lidar_loc_v2/ master/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
fast_lio/
hardware/
hdmap/
hdmap_interface/
imv_spreader_detection/
lane_detection/
lidar_camera_fusion/
lidar_loc_v2/
master/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/xiamen-submodule/M007/master/params/master/camera_driver /root/workspace/params-submodule/xiamen-submodule/M007/master/params/master/recorder.toml /root/workspace/params-submodule/xiamen-submodule/M007/master/params/master/system-ros /root/workspace/params-submodule/xiamen-submodule/M007/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_M007_2026-03-20_13-45-29/
+ mv params/ params_orin_master_M007_2026-03-20_13-45-29/
[Pipeline] sh
+ zip -rq params_orin_master_M007_2026-03-20_13-45-29.zip params_orin_master_M007_2026-03-20_13-45-29 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/xiamen-submodule/M007/master/params_orin_master_M007_2026-03-20_13-45-29.zip,/root/workspace/params-submodule/xiamen-submodule/M007/master/version.json
[Pipeline] sh
+ curl -X POST http://143.64.91.51:18081/prod-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/xiamen-submodule/M007/master/params_orin_master_M007_2026-03-20_13-45-29.zip"' --form 'version=@"/root/workspace/params-submodule/xiamen-submodule/M007/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
63 84.1M 0 0 63 53.4M 0 460M --:--:-- --:--:-- --:--:-- 460M
100 84.1M 0 0 100 84.1M 0 70.0M 0:00:01 0:00:01 --:--:-- 70.0M
100 84.1M 0 0 100 84.1M 0 38.2M 0:00:02 0:00:02 --:--:-- 38.2M
100 84.1M 0 0 100 84.1M 0 26.2M 0:00:03 0:00:03 --:--:-- 26.2M
100 84.1M 0 0 100 84.1M 0 20.0M 0:00:04 0:00:04 --:--:-- 20.0M
100 84.1M 0 0 100 84.1M 0 16.1M 0:00:05 0:00:05 --:--:-- 6183k
100 84.1M 0 0 100 84.1M 0 13.5M 0:00:06 0:00:06 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 11.6M 0:00:07 0:00:07 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 10.2M 0:00:08 0:00:08 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 9359k 0:00:09 0:00:09 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 8441k 0:00:10 0:00:10 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 7687k 0:00:11 0:00:11 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 7057k 0:00:12 0:00:12 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 6522k 0:00:13 0:00:13 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 6063k 0:00:14 0:00:14 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5664k 0:00:15 0:00:15 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5314k 0:00:16 0:00:16 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5005k 0:00:17 0:00:17 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4730k 0:00:18 0:00:18 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4484k 0:00:19 0:00:19 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4262k 0:00:20 0:00:20 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4061k 0:00:21 0:00:21 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3878k 0:00:22 0:00:22 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3711k 0:00:23 0:00:23 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3557k 0:00:24 0:00:24 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3416k 0:00:25 0:00:25 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3286k 0:00:26 0:00:26 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3165k 0:00:27 0:00:27 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3053k 0:00:28 0:00:28 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2948k 0:00:29 0:00:29 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2850k 0:00:30 0:00:30 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2759k 0:00:31 0:00:31 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2673k 0:00:32 0:00:32 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2593k 0:00:33 0:00:33 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2517k 0:00:34 0:00:34 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2445k 0:00:35 0:00:35 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2378k 0:00:36 0:00:36 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2314k 0:00:37 0:00:37 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2253k 0:00:38 0:00:38 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2196k 0:00:39 0:00:39 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2141k 0:00:40 0:00:40 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2089k 0:00:41 0:00:41 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2040k 0:00:42 0:00:42 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1993k 0:00:43 0:00:43 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1947k 0:00:44 0:00:44 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1904k 0:00:45 0:00:45 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1863k 0:00:46 0:00:46 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1824k 0:00:47 0:00:47 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1786k 0:00:48 0:00:48 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1749k 0:00:49 0:00:49 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1715k 0:00:50 0:00:50 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1681k 0:00:51 0:00:51 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1649k 0:00:52 0:00:52 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1618k 0:00:53 0:00:53 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1588k 0:00:54 0:00:54 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1559k 0:00:55 0:00:55 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1531k 0:00:56 0:00:56 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1505k 0:00:57 0:00:57 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1479k 0:00:58 0:00:58 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1454k 0:00:59 0:00:59 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1430k 0:01:00 0:01:00 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1406k 0:01:01 0:01:01 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1384k 0:01:02 0:01:02 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1362k 0:01:03 0:01:03 --:--:-- 0
100 84.1M 0 43 100 84.1M 0 1353k 0:01:03 0:01:03 --:--:-- 9
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] readJSON
[Pipeline] echo
[msg:操作成功, code:200, data:]
[Pipeline] echo
status:200
[Pipeline] echo
{"msg":"操作成功","code":200,"data":""}
[Pipeline] }
[Pipeline] // dir
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/xiamen-submodule/M007/master@tmp
[Pipeline] sh
+ rm -rf /root/workspace/params-submodule/xiamen-submodule/M007/master/params_submodule/
[Pipeline] echo
------------------------------------- M008压缩并上传,master -------------------------------------------
[Pipeline] dir
Running in /root/workspace/params-submodule/xiamen-submodule/M008/master
[Pipeline] {
[Pipeline] sh
+ cd /root/workspace/params-submodule/xiamen-submodule/M008/master/params/
+ ls -d crane_align/ data_collection/ extrinsics/ fast_lio/ hardware/ hdmap/ hdmap_interface/ imv_spreader_detection/ lane_detection/ lidar_camera_fusion/ lidar_loc_v2/ master/ perception/ pncc_common_config/ pncc_port_related_config/ pncc_vehicle_related_config/ pointcloud/ prediction/ rslidar_sdk/ segmentation/ slave/ system-ros/
[Pipeline] echo
crane_align/
data_collection/
extrinsics/
fast_lio/
hardware/
hdmap/
hdmap_interface/
imv_spreader_detection/
lane_detection/
lidar_camera_fusion/
lidar_loc_v2/
master/
perception/
pncc_common_config/
pncc_port_related_config/
pncc_vehicle_related_config/
pointcloud/
prediction/
rslidar_sdk/
segmentation/
slave/
system-ros/
[Pipeline] echo
最终目录包含master目录,进行合并操作
[Pipeline] sh
+ cp -r /root/workspace/params-submodule/xiamen-submodule/M008/master/params/master/camera_driver /root/workspace/params-submodule/xiamen-submodule/M008/master/params/master/recorder.toml /root/workspace/params-submodule/xiamen-submodule/M008/master/params/master/system-ros /root/workspace/params-submodule/xiamen-submodule/M008/master/params/
[Pipeline] sh
+ mkdir -p params_orin_master_M008_2026-03-20_13-45-29/
+ mv params/ params_orin_master_M008_2026-03-20_13-45-29/
[Pipeline] sh
+ zip -rq params_orin_master_M008_2026-03-20_13-45-29.zip params_orin_master_M008_2026-03-20_13-45-29 ./version.json
[Pipeline] echo
/root/workspace/params-submodule/xiamen-submodule/M008/master/params_orin_master_M008_2026-03-20_13-45-29.zip,/root/workspace/params-submodule/xiamen-submodule/M008/master/version.json
[Pipeline] sh
+ curl -X POST http://143.64.91.51:18081/prod-api/otaUploadFileAndVersion --form 'Content-Type="multipart/form-data"' --form 'file=@"/root/workspace/params-submodule/xiamen-submodule/M008/master/params_orin_master_M008_2026-03-20_13-45-29.zip"' --form 'version=@"/root/workspace/params-submodule/xiamen-submodule/M008/master/version.json"'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 84.1M 0 0 100 84.1M 0 70.0M 0:00:01 0:00:01 --:--:-- 70.0M
100 84.1M 0 0 100 84.1M 0 38.2M 0:00:02 0:00:02 --:--:-- 38.2M
100 84.1M 0 0 100 84.1M 0 26.2M 0:00:03 0:00:03 --:--:-- 26.2M
100 84.1M 0 0 100 84.1M 0 20.0M 0:00:04 0:00:04 --:--:-- 20.0M
100 84.1M 0 0 100 84.1M 0 16.1M 0:00:05 0:00:05 --:--:-- 16.1M
100 84.1M 0 0 100 84.1M 0 13.5M 0:00:06 0:00:06 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 11.6M 0:00:07 0:00:07 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 10.2M 0:00:08 0:00:08 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 9358k 0:00:09 0:00:09 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 8441k 0:00:10 0:00:10 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 7687k 0:00:11 0:00:11 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 7057k 0:00:12 0:00:12 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 6522k 0:00:13 0:00:13 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 6063k 0:00:14 0:00:14 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5664k 0:00:15 0:00:15 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5314k 0:00:16 0:00:16 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 5005k 0:00:17 0:00:17 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4730k 0:00:18 0:00:18 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4484k 0:00:19 0:00:19 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4262k 0:00:20 0:00:20 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 4061k 0:00:21 0:00:21 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3878k 0:00:22 0:00:22 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3711k 0:00:23 0:00:23 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3557k 0:00:24 0:00:24 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3416k 0:00:25 0:00:25 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3286k 0:00:26 0:00:26 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3165k 0:00:27 0:00:27 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 3053k 0:00:28 0:00:28 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2948k 0:00:29 0:00:29 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2850k 0:00:30 0:00:30 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2759k 0:00:31 0:00:31 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2673k 0:00:32 0:00:32 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2593k 0:00:33 0:00:33 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2517k 0:00:34 0:00:34 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2445k 0:00:35 0:00:35 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2378k 0:00:36 0:00:36 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2314k 0:00:37 0:00:37 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2253k 0:00:38 0:00:38 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2196k 0:00:39 0:00:39 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2141k 0:00:40 0:00:40 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2089k 0:00:41 0:00:41 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 2040k 0:00:42 0:00:42 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1993k 0:00:43 0:00:43 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1947k 0:00:44 0:00:44 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1904k 0:00:45 0:00:45 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1863k 0:00:46 0:00:46 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1824k 0:00:47 0:00:47 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1786k 0:00:48 0:00:48 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1750k 0:00:49 0:00:49 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1715k 0:00:50 0:00:50 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1681k 0:00:51 0:00:51 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1649k 0:00:52 0:00:52 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1618k 0:00:53 0:00:53 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1588k 0:00:54 0:00:54 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1559k 0:00:55 0:00:55 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1532k 0:00:56 0:00:56 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1505k 0:00:57 0:00:57 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1479k 0:00:58 0:00:58 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1454k 0:00:59 0:00:59 --:--:-- 0
100 84.1M 0 0 100 84.1M 0 1430k 0:01:00 0:01:00 --:--:-- 0
100 84.1M 100 176 100 84.1M 2 1409k 0:01:28 0:01:01 0:00:27 35
100 84.1M 100 176 100 84.1M 2 1409k 0:01:28 0:01:01 0:00:27 45
[Pipeline] echo
<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>
[Pipeline] readJSON
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
always
[Pipeline] }
[Pipeline] // script
[Pipeline] script
[Pipeline] {
[Pipeline] echo
failure: zip->post
[Pipeline] wrap
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] echo
user: , telphone:
[Pipeline] }
[Pipeline] // script
[Pipeline] sh
+ curl -X POST 'http://143.64.81.104:8080/robot/send?access_token=0e635ba9c724e48482d5e4146087ccb44e6b324d34f5e351b80db04fcf41017a' -H 'Content-Type: application/json' -d '{"msgtype": "markdown","markdown": {"title":"Jenkins通知","text": "# 版本编译失败
### [厦门38辆车参数 主机]
---
- 任务名: [xiamen-submodule]
- 任务号:# 456
- 阶段:zip->post
- 状态:<font color=#FF5151> 编译失败 </font>
- 执行人:linshaoyang
---
> 请检查失败原因 @"},"at": {"atMobiles": [""],"isAtAll": "false"} }'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 424 100 27 100 397 252 3710 --:--:-- --:--:-- --:--:-- 3962
[Pipeline] echo
{"errcode":0,"errmsg":"ok"}
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
Lock released on resource [Label: built-in, Quantity: 1]
[Pipeline] // lock
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
hudson.remoting.ProxyException: net.sf.json.JSONException: Invalid JSON String
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:143)
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:103)
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:84)
at org.jenkinsci.plugins.pipeline.utility.steps.json.ReadJSONStepExecution.doRun(ReadJSONStepExecution.java:87)
at org.jenkinsci.plugins.pipeline.utility.steps.AbstractFileOrTextStepExecution.run(AbstractFileOrTextStepExecution.java:29)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE