diff --git a/vasl_templates/webapp/data/default-template-pack/ob_vehicles.j2 b/vasl_templates/webapp/data/default-template-pack/ob_vehicles.j2
index 2f9922c..f7547ed 100644
--- a/vasl_templates/webapp/data/default-template-pack/ob_vehicles.j2
+++ b/vasl_templates/webapp/data/default-template-pack/ob_vehicles.j2
@@ -34,10 +34,7 @@ sup { font-size: 75% ; }
{%endif%}
- {%if veh.no_radio%} {{veh.no_radio}} {%endif%}
- {%if veh.no_if%} {{veh.no_if}} {%endif%}
{%for cap in veh.capabilities%} {{cap}} {%endfor%}
- {%if veh.crew_survival%} {{veh.crew_survival}} {%endif%}
{%endfor%}
diff --git a/vasl_templates/webapp/static/css/edit-vo-dialog.css b/vasl_templates/webapp/static/css/edit-vo-dialog.css
new file mode 100644
index 0000000..6bd0a5f
--- /dev/null
+++ b/vasl_templates/webapp/static/css/edit-vo-dialog.css
@@ -0,0 +1,25 @@
+.ui-dialog.edit-vo .ui-dialog-content { padding: 5px ; overflow: hidden ; display: flex ; }
+
+.ui-dialog.edit-vo .capabilities { flex-grow: 1 ; display: flex ; flex-direction: column ; }
+
+.ui-dialog.edit-vo .capabilities .header { display: flex ; align-items: center ; margin-bottom: 0.5em ; }
+.ui-dialog.edit-vo .capabilities .header img.vasl-image { height: 3.5em ; margin-right: 0.5em ; }
+.ui-dialog.edit-vo .capabilities .header img.vasl-image.small-piece { height: 2.7em ; margin-left: 0.4em ; margin-right: 0.9em ; }
+.ui-dialog.edit-vo .capabilities .header .content { display: flex ; flex-direction: column ; justify-content: center ; }
+.ui-dialog.edit-vo .capabilities .header .content .vo-name { font-size: 125% ; }
+.ui-dialog.edit-vo .capabilities .header .content input.select-vo-image { width: 15px ; position: relative ; top: 10px ; }
+
+.ui-dialog.edit-vo .capabilities div.fieldset { flex-grow: 1 ; display: flex ; flex-direction: column ; align-items: stretch ; }
+.ui-dialog.edit-vo .capabilities div.fieldset { margin: 0 ; padding: 5px 8px 8px 8px ; border: 1px solid #aaa ; }
+.ui-dialog.edit-vo .capabilities div.fieldset-legend { color: #666 ; }
+.ui-dialog.edit-vo .capabilities div.fieldset ul { flex-grow: 1 ; margin: 0 0 5px 0 ; list-style-type: none ; overflow-y: auto ; }
+.ui-dialog.edit-vo .capabilities div.fieldset li { height: 1.5em ; margin: 2px ; padding: 2px 0px 2px 5px ; background: #eee ; }
+.ui-dialog.edit-vo .capabilities div.fieldset li div { display: flex ; align-items: center ; }
+.ui-dialog.edit-vo .capabilities div.fieldset li img.dragger { height: 1em ; margin-right: 5px ; }
+.ui-dialog.edit-vo .capabilities div.fieldset li input[type='text'] { flex-grow: 1 ; margin-right: 1em ; }
+
+.ui-dialog.edit-vo .capabilities div.fieldset .footer { display: flex ; align-items: center ; }
+.ui-dialog.edit-vo .capabilities div.fieldset .footer img.trash { margin: 3px 5px ; height: 24px ; }
+
+.ui-dialog.edit-vo .ui-dialog-buttonpane { border: none ; padding: 0 ; }
+.ui-dialog.edit-vo .ui-dialog-buttonpane button { margin: 0 0 0 5px ; padding: 0.1em 0.2em ; }
diff --git a/vasl_templates/webapp/static/images/dragger.png b/vasl_templates/webapp/static/images/dragger.png
new file mode 100755
index 0000000..522e283
Binary files /dev/null and b/vasl_templates/webapp/static/images/dragger.png differ
diff --git a/vasl_templates/webapp/static/main.js b/vasl_templates/webapp/static/main.js
index 698d945..def4f05 100644
--- a/vasl_templates/webapp/static/main.js
+++ b/vasl_templates/webapp/static/main.js
@@ -147,17 +147,21 @@ $(document).ready( function () {
// initialize the OB vehicles
$("#ob_vehicles-sortable_1").sortable2( "init", {
add: function() { add_vo( "vehicles", 1 ) ; },
+ edit: function( $sortable2, $entry ) { edit_ob_vehicle( $entry, 1 ) ; },
} ) ;
$("#ob_vehicles-sortable_2").sortable2( "init", {
add: function() { add_vo( "vehicles", 2 ) ; },
+ edit: function( $sortable2, $entry ) { edit_ob_vehicle( $entry, 2 ) ; },
} ) ;
// initialize the OB ordnance
$("#ob_ordnance-sortable_1").sortable2( "init", {
add: function() { add_vo( "ordnance", 1 ) ; },
+ edit: function( $sortable2, $entry ) { edit_ob_ordnance( $entry, 1 ) ; },
} ) ;
$("#ob_ordnance-sortable_2").sortable2( "init", {
add: function() { add_vo( "ordnance", 2 ) ; },
+ edit: function( $sortable2, $entry ) { edit_ob_ordnance( $entry, 2 ) ; },
} ) ;
// handle ENTER and double-clicks in the "select vehicle/ordnance" dialog
diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js
index 432aed4..6bcdbc7 100644
--- a/vasl_templates/webapp/static/snippets.js
+++ b/vasl_templates/webapp/static/snippets.js
@@ -22,25 +22,9 @@ var gLastSavedScenarioFilename = null;
function generate_snippet( $btn, extra_params )
{
- // extract the scenario date components
- var params = {} ;
- var scenario_date = $("input[name='SCENARIO_DATE']").datepicker( "getDate" ) ;
- if ( scenario_date ) {
- params.SCENARIO_DAY_OF_MONTH = scenario_date.getDate() ;
- var postfix ;
- if ( params.SCENARIO_DAY_OF_MONTH in _DAY_OF_MONTH_POSTFIXES )
- postfix = _DAY_OF_MONTH_POSTFIXES[ params.SCENARIO_DAY_OF_MONTH ] ;
- else
- postfix = _DAY_OF_MONTH_POSTFIXES[ params.SCENARIO_DAY_OF_MONTH % 10 ] ;
- params.SCENARIO_DAY_OF_MONTH_POSTFIX = params.SCENARIO_DAY_OF_MONTH + postfix ;
- params.SCENARIO_MONTH = 1 + scenario_date.getMonth() ;
- params.SCENARIO_MONTH_NAME = _MONTH_NAMES[scenario_date.getMonth()] ;
- params.SCENARIO_YEAR = scenario_date.getFullYear() ;
- }
-
// unload the template parameters
var template_id = $btn.data( "id" ) ;
- unload_snippet_params( params, true ) ;
+ var params = unload_snippet_params( true ) ;
// set player-specific parameters
var curr_tab = $("#tabs .ui-tabs-active a").attr( "href" ) ;
@@ -192,8 +176,27 @@ function generate_snippet( $btn, extra_params )
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-function unload_snippet_params( params, check_date_capabilities )
+function unload_snippet_params( check_date_capabilities )
{
+ var params = {} ;
+
+ // extract the scenario date components
+ if ( check_date_capabilities ) {
+ var scenario_date = $( "input[name='SCENARIO_DATE']" ).datepicker( "getDate" ) ;
+ if ( scenario_date ) {
+ params.SCENARIO_DAY_OF_MONTH = scenario_date.getDate() ;
+ var postfix ;
+ if ( params.SCENARIO_DAY_OF_MONTH in _DAY_OF_MONTH_POSTFIXES )
+ postfix = _DAY_OF_MONTH_POSTFIXES[ params.SCENARIO_DAY_OF_MONTH ] ;
+ else
+ postfix = _DAY_OF_MONTH_POSTFIXES[ params.SCENARIO_DAY_OF_MONTH % 10 ] ;
+ params.SCENARIO_DAY_OF_MONTH_POSTFIX = params.SCENARIO_DAY_OF_MONTH + postfix ;
+ params.SCENARIO_MONTH = 1 + scenario_date.getMonth() ;
+ params.SCENARIO_MONTH_NAME = _MONTH_NAMES[scenario_date.getMonth()] ;
+ params.SCENARIO_YEAR = scenario_date.getFullYear() ;
+ }
+ }
+
// collect all the template parameters
add_param = function($elem) { params[ $elem.attr("name") ] = $elem.val() ; } ;
$("input[type='text'].param").each( function() { add_param($(this)) ; } ) ;
@@ -225,18 +228,6 @@ function unload_snippet_params( params, check_date_capabilities )
if ( url )
obj.image = APP_URL_BASE + url ;
}
- if ( vo_entry.no_radio )
- obj.no_radio = vo_entry.no_radio ;
- if ( vo_entry.no_if ) {
- obj.no_if = "no IF" ;
- if ( typeof(vo_entry.no_if) === "string" ) { // nb: only for the French B1-bis :-/
- var no_if = vo_entry.no_if ;
- if ( no_if.substring(no_if.length-1) == "\u2020" )
- obj.no_if += ""+no_if.substring(0,no_if.length-1)+"\u2020" ;
- else
- obj.no_if += ""+no_if+"" ;
- }
- }
// NOTE: It would be nice to have a Jinja2 filter that inserted the raw capabilities or selected
// the correct one for the scenario date e.g.
// {% for c in veh.capabilities %} {{c|selcap}} {%endif%}}
@@ -245,15 +236,21 @@ function unload_snippet_params( params, check_date_capabilities )
// parameter that people can use in their templates - ugly, but probably not something that will
// get a lot of use :-/
var nat = params[ "PLAYER_"+player_no ] ;
- var capabilities = make_capabilities(
- vo_entry,
- nat,
- params.SCENARIO_THEATER,
- params.SCENARIO_YEAR, params.SCENARIO_MONTH, check_date_capabilities,
- false
- ) ;
- if ( capabilities )
+ var capabilities = $(this).data( "sortable2-data" ).custom_capabilities ;
+ if ( capabilities ) {
obj.capabilities = capabilities ;
+ obj.custom_capabilities = capabilities.slice() ;
+ } else {
+ capabilities = make_capabilities(
+ vo_entry,
+ nat,
+ params.SCENARIO_THEATER,
+ params.SCENARIO_YEAR, params.SCENARIO_MONTH, check_date_capabilities,
+ false
+ ) ;
+ if ( capabilities )
+ obj.capabilities = capabilities ;
+ }
capabilities = make_capabilities(
vo_entry,
nat,
@@ -263,9 +260,6 @@ function unload_snippet_params( params, check_date_capabilities )
) ;
if ( capabilities )
obj.raw_capabilities = capabilities ;
- var crew_survival = make_crew_survival( vo_entry ) ;
- if ( crew_survival )
- obj.crew_survival = crew_survival ;
objs.push( obj ) ;
} ) ;
if ( objs.length > 0 )
@@ -285,6 +279,23 @@ function make_capabilities( vo_entry, nat, scenario_theater, scenario_year, scen
{
var capabilities = [] ;
+ // check if the vehicle has no radio
+ if ( vo_entry.no_radio )
+ capabilities.push( vo_entry.no_radio ) ;
+
+ // check if the vehicle has no intensive fire
+ if ( vo_entry.no_if ) {
+ var no_if = "no IF" ;
+ if ( typeof(vo_entry.no_if) === "string" ) { // nb: only for the French B1-bis :-/
+ no_if = vo_entry.no_if ;
+ if ( no_if.substring(no_if.length-1) == "\u2020" )
+ no_if = "no IF"+no_if.substring(0,no_if.length-1)+"\u2020" ;
+ else
+ no_if = "no IF"+no_if+"" ;
+ }
+ capabilities.push( no_if ) ;
+ }
+
// extract the static capabilities
var i ;
if ( "capabilities" in vo_entry ) {
@@ -368,7 +379,12 @@ function make_capabilities( vo_entry, nat, scenario_theater, scenario_year, scen
if ( "damage_points" in vo_entry )
capabilities.push( "DP " + vo_entry.damage_points ) ;
- return capabilities.length > 0 ? capabilities : null ;
+ // include crew survival
+ var crew_survival = make_crew_survival( vo_entry ) ;
+ if ( crew_survival )
+ capabilities.push( crew_survival ) ;
+
+ return capabilities ;
}
function make_raw_capability( name, capability )
@@ -757,7 +773,7 @@ function do_load_scenario_data( params )
warnings.push( "Invalid V/O image ID for '" + params[key][i].name + "': " + params[key][i].image_id ) ;
}
if ( vo_entry )
- do_add_vo( vo_type, player_no, vo_entry, vo_image_id ) ;
+ do_add_vo( vo_type, player_no, vo_entry, vo_image_id, params[key][i].custom_capabilities ) ;
else
unknown_vo.push( vo_id || "(not set)" ) ;
}
@@ -858,7 +874,6 @@ function on_save_scenario()
function unload_params_for_save()
{
- // unload the template parameters
function extract_vo_entries( key ) {
if ( !(key in params) )
return ;
@@ -870,12 +885,15 @@ function unload_params_for_save()
} ;
if ( params[key][i].image_id !== null )
entry.image_id = params[key][i].image_id ;
+ if ( params[key][i].custom_capabilities )
+ entry.custom_capabilities = params[key][i].custom_capabilities ;
entries.push( entry ) ;
}
params[key] = entries ;
}
- var params = {} ;
- unload_snippet_params( params, false ) ;
+
+ // unload the template parameters
+ var params = unload_snippet_params( false ) ;
params.SCENARIO_NOTES = $("#scenario_notes-sortable").sortable2( "get-entry-data" ) ;
params.OB_SETUPS_1 = $("#ob_setups-sortable_1").sortable2( "get-entry-data" ) ;
params.OB_SETUPS_2 = $("#ob_setups-sortable_2").sortable2( "get-entry-data" ) ;
diff --git a/vasl_templates/webapp/static/sortable.js b/vasl_templates/webapp/static/sortable.js
index 297e892..6497587 100644
--- a/vasl_templates/webapp/static/sortable.js
+++ b/vasl_templates/webapp/static/sortable.js
@@ -5,6 +5,7 @@ SORTABLE_DISPLAY_NAMES = {
ob_notes: [ "OB setup note", "OB setup notes", "an" ],
ob_vehicles: [ "vehicle", "vehicles", "a" ],
ob_ordnance: [ "ordnance", "ordnance", "an" ],
+ vo_capabilities: [ "capability", "capabilities", "a" ],
} ;
SORTABLE_HINTS = {
@@ -35,6 +36,7 @@ $.fn.sortable2 = function( action, args )
adjust_entry_heights( $sortable2 ) ;
// update the hint
update_hint( $sortable2 ) ;
+ return $entry ;
},
"delete": function( $sortable2 ) {
@@ -71,6 +73,7 @@ $.fn.sortable2 = function( action, args )
var display_name = SORTABLE_DISPLAY_NAMES[ get_sortable2_type($sortable2) ] ;
// initialize the sortable2 and support elements
+ $sortable2.data( "no_confirm_delete", args.no_confirm_delete ) ;
$sortable2.data( "on_edit", args.edit ) ;
var $add_btn = find_helper( $sortable2, "add" ) ;
$add_btn.prepend( $( " Add " ) )
@@ -137,6 +140,16 @@ $.fn.sortable2 = function( action, args )
function delete_entry( $sortable2, $entry )
{
+ function do_delete_entry() {
+ $entry.remove() ;
+ adjust_entry_heights( $sortable2 ) ;
+ update_hint( $sortable2 ) ;
+ }
+ if ( $sortable2.data( "no_confirm_delete" ) ) {
+ do_delete_entry() ;
+ return ;
+ }
+
// ask if it's OK to delete the entry
set_entry_colors( $entry, true ) ;
var caption = $entry.data( "sortable2-data" ).caption ;
@@ -150,12 +163,7 @@ $.fn.sortable2 = function( action, args )
""
] ;
ask( "Delete "+display_name[0], buf.join(""), {
- ok: function() {
- // yup - make it so
- $entry.remove() ;
- adjust_entry_heights( $sortable2 ) ;
- update_hint( $sortable2 ) ;
- },
+ ok: do_delete_entry,
close: function() { set_entry_colors( $entry, false ) ; },
} ) ;
}
@@ -163,6 +171,8 @@ $.fn.sortable2 = function( action, args )
function update_hint( $sortable2 ) {
// show/hide the hint
var $hint = find_helper( $sortable2, "hint" ) ;
+ if ( $hint.length === 0 )
+ return ;
if ( $sortable2.children("li").length === 0 ) {
$sortable2.hide() ;
var display_name = SORTABLE_DISPLAY_NAMES[ get_sortable2_type($sortable2) ] ;
diff --git a/vasl_templates/webapp/static/vo.js b/vasl_templates/webapp/static/vo.js
index e4d5866..bae11fd 100644
--- a/vasl_templates/webapp/static/vo.js
+++ b/vasl_templates/webapp/static/vo.js
@@ -48,7 +48,10 @@ function add_vo( vo_type, player_no )
$entry.children( ".content" ).append( $btn ) ;
$btn.click( function() {
$(this).blur() ;
- on_select_vo_image( $(this) ) ;
+ on_select_vo_image(
+ $(this),
+ function() { click_dialog_button( $("#select-vo"), "OK" ) ; }
+ ) ;
} ) ;
}
return $entry ;
@@ -108,7 +111,7 @@ function add_vo( vo_type, player_no )
var sel_index = $elem.children( ".vo-entry" ).data( "index" ) ;
var $img = $elem.find( "img[class='vasl-image']" ) ;
var vo_image_id = $img.data( "vo-image-id" ) ;
- do_add_vo( vo_type, player_no, entries[sel_index], vo_image_id ) ;
+ do_add_vo( vo_type, player_no, entries[sel_index], vo_image_id, null ) ;
$(this).dialog( "close" ) ;
},
Cancel: function() { $(this).dialog( "close" ) ; },
@@ -118,7 +121,7 @@ function add_vo( vo_type, player_no )
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-function do_add_vo( vo_type, player_no, vo_entry, vo_image_id )
+function do_add_vo( vo_type, player_no, vo_entry, vo_image_id, custom_capabilities )
{
// add the specified vehicle/ordnance
// NOTE: We set a fixed height for the sortable2 entries (based on the CSS settings in tabs-ob.css),
@@ -132,9 +135,17 @@ function do_add_vo( vo_type, player_no, vo_entry, vo_image_id )
}
div_tag += ">" ;
var url = get_vo_image_url( vo_entry, vo_image_id, true ) ;
+ var data = {
+ caption: vo_entry.name,
+ vo_entry: vo_entry,
+ vo_image_id: vo_image_id,
+ fixed_height: fixed_height
+ } ;
+ if ( custom_capabilities )
+ data.custom_capabilities = custom_capabilities ;
$sortable2.sortable2( "add", {
- content: $( div_tag + "" + vo_entry.name + "" ),
- data: { caption: vo_entry.name, vo_entry: vo_entry, vo_image_id: vo_image_id, fixed_height: fixed_height },
+ content: $( div_tag + "" + vo_entry.name + "" ),
+ data: data,
} ) ;
}
@@ -186,7 +197,7 @@ function get_vo_images( vo_entry )
return images ;
}
-function on_select_vo_image( $btn ) {
+function on_select_vo_image( $btn, on_ok ) {
// initialize
var $img = $btn.parent().parent().find( "img.vasl-image" ) ;
@@ -219,7 +230,7 @@ function on_select_vo_image( $btn ) {
}
// highlight the currently-selected image
- var sel_index = (vo_image_id === null) ? 0 : vo_images.indexOf(vo_image_id) ;
+ var sel_index = _find_vo_image_id( vo_images, vo_image_id ) ;
if ( sel_index === -1 ) {
console.log( "Couldn't find V/O image ID '" + vo_image_id + "' in V/O images: " + vo_images ) ;
sel_index = 0 ;
@@ -240,11 +251,11 @@ function on_select_vo_image( $btn ) {
// handle image selection
$images.children( "img" ).click( function() {
vo_image_id = vo_images[ $(this).data("index") ] ;
- $img.attr( "src", get_vo_image_url(vo_image_id,true) ) ;
+ $img.attr( "src", get_vo_image_url(null,vo_image_id,true) ) ;
$img.data( "vo-image-id", vo_image_id ) ;
$dlg.dialog( "close" ) ;
- // nb: if the user selected an image, we take that to mean they also want to add that vehicle/ordnance
- click_dialog_button( $("#select-vo"), "OK" ) ;
+ if ( on_ok )
+ on_ok() ;
} ) ;
}
@@ -262,6 +273,19 @@ function on_select_vo_image( $btn ) {
} ) ;
}
+function _find_vo_image_id( vo_images, vo_image_id )
+{
+ // find the specified V/O image ID (because indexOf() doesn't handle arrays :-/)
+ if ( vo_image_id === null )
+ return 0 ;
+ vo_image_id = vo_image_id.join(":") ;
+ for ( var i=0 ; i < vo_images.length ; ++i ) {
+ if ( vo_images[i].join(":") == vo_image_id )
+ return i ;
+ }
+ return -1 ;
+}
+
function get_vo_image_url( vo_entry, vo_image_id, allow_missing_image )
{
if ( vo_image_id )
diff --git a/vasl_templates/webapp/static/vo2.js b/vasl_templates/webapp/static/vo2.js
new file mode 100644
index 0000000..1f5f863
--- /dev/null
+++ b/vasl_templates/webapp/static/vo2.js
@@ -0,0 +1,133 @@
+
+function edit_ob_vehicle( $entry, player_no ) { _do_edit_ob_vo( $entry, player_no, "vehicle" ) ; }
+function edit_ob_ordnance( $entry, player_no ) { _do_edit_ob_vo( $entry, player_no, "ordnance" ) ; }
+
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+function _do_edit_ob_vo( $entry, player_no, vo_type )
+{
+ // get the vehicle/ordnance's capabilities
+ var params = unload_snippet_params( true ) ;
+ var vo_entry = $entry.data( "sortable2-data" ).vo_entry ;
+ var default_capabilities = make_capabilities(
+ vo_entry,
+ params[ "PLAYER_"+player_no ],
+ params.SCENARIO_THEATER,
+ params.SCENARIO_YEAR, params.SCENARIO_MONTH, false,
+ false
+ ) ;
+ var capabilities = $entry.data( "sortable2-data" ).custom_capabilities ;
+ if ( ! capabilities )
+ capabilities = default_capabilities.slice() ;
+
+ // load the dialog
+ var vo_image_id = $entry.data( "sortable2-data" ).vo_image_id ;
+ var url = get_vo_image_url( vo_entry, vo_image_id, true ) ;
+ var buf = [ " 1 ) {
+ $header.find( "img" ).data( "vo-images", vo_images ) ;
+ var $btn = $( "" ) ;
+ $header.children( ".content" ).append( $btn ) ;
+ $btn.click( function() {
+ $(this).blur() ;
+ on_select_vo_image( $(this) ) ;
+ } ) ;
+ }
+ $( "#edit-vo .header" ).replaceWith( $header ) ;
+
+ // initialize
+ var $capabilities = $( "#vo_capabilities-sortable" ) ;
+ function add_capability( val ) {
+ var $elem = $( "" +
+ " " +
+ " " +
+ " "
+ ) ;
+ $elem.children( "input[type='text']" ).val( val ).keydown( function(evt) {
+ auto_dismiss_dialog( $dlg, evt, "OK" ) ;
+ } ) ;
+ return $capabilities.sortable2( "add", {
+ content: $elem,
+ data: { fixed_height: "1.4em" },
+ } ) ;
+ }
+
+ // show the dialog
+ var $dlg = $( "#edit-vo" ).dialog( {
+ dialogClass: "edit-vo",
+ title: "Edit "+vo_type,
+ minWidth: 350,
+ minHeight: 340,
+ modal: true,
+ create: function() {
+ // initialize the dialog
+ init_dialog( $(this), "OK", false ) ;
+ $capabilities.sortable2( "init", {
+ add: function() {
+ $elem = add_capability( "" ) ;
+ $elem.find( "input[type='text']" ).focus() ;
+ $elem[0].scrollIntoView() ;
+ },
+ no_confirm_delete: true,
+ } ) ;
+ },
+ open: function() {
+ // initialize
+ on_dialog_open( $(this) ) ;
+ // set the titlebar color
+ var colors = get_player_colors( player_no ) ;
+ $( ".ui-dialog.edit-vo .ui-dialog-titlebar" ).css( {
+ background: colors[0],
+ border: "1px solid "+colors[2],
+ } ) ;
+ // load the dialog
+ $capabilities.sortable2( "delete-all" ) ;
+ for ( var i=0 ; i < capabilities.length ; ++i )
+ add_capability( capabilities[i] ) ;
+ },
+ buttons: {
+ OK: function() {
+ // save the V/O image ID
+ var $img = $dlg.find( "img[class='vasl-image']" ) ;
+ vo_image_id = $img.data( "vo-image-id" ) ;
+ if ( vo_image_id )
+ $entry.data( "sortable2-data" ).vo_image_id = vo_image_id ;
+ // unload the capabilities
+ var capabilities = [] ;
+ $capabilities.find( "input[type='text']" ).each( function() {
+ var val = $(this).val().trim() ;
+ if ( val )
+ capabilities.push( val ) ;
+ } ) ;
+ if ( capabilities.length > 0 ) {
+ if ( capabilities.join() !== default_capabilities.join() )
+ $entry.data( "sortable2-data" ).custom_capabilities = capabilities ;
+ else {
+ // the capabilities are the same as the default - no need to retain these custom settings
+ delete $entry.data( "sortable2-data" ).custom_capabilities ;
+ }
+ } else {
+ // NOTE: We treat "no capabilities" as meaning "revert back to the default capabilities".
+ // This means that the user can never have a V/O that actually has no capabilities, but then
+ // why would they want to include that V/O in a label in the scenario? :shrug: If they
+ // really want it there, they can always include a dummy capability of "none" or "-"...
+ delete $entry.data( "sortable2-data" ).custom_capabilities ;
+ }
+ // update the original V/O entry to reflect the changes
+ $entry.find( "img.vasl-image" ).attr( "src", $img.attr("src") ) ;
+ $(this).dialog( "close" ) ;
+ },
+ Cancel: function() { $(this).dialog( "close" ) ; },
+ },
+ } ) ;
+}
diff --git a/vasl_templates/webapp/templates/edit-vo-dialog.html b/vasl_templates/webapp/templates/edit-vo-dialog.html
new file mode 100644
index 0000000..c576710
--- /dev/null
+++ b/vasl_templates/webapp/templates/edit-vo-dialog.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Capabilities:
+
+
+
+
+
diff --git a/vasl_templates/webapp/templates/index.html b/vasl_templates/webapp/templates/index.html
index 59128e6..7519bba 100644
--- a/vasl_templates/webapp/templates/index.html
+++ b/vasl_templates/webapp/templates/index.html
@@ -20,6 +20,7 @@
+
@@ -57,6 +58,7 @@
{%include "select-vo-dialog.html"%}
{%include "select-vo-image-dialog.html"%}
+{%include "edit-vo-dialog.html"%}
{%include "user-settings-dialog.html"%}
@@ -93,6 +95,7 @@ gHelpUrl = "{{url_for('show_help')}}" ;
+
diff --git a/vasl_templates/webapp/templates/vo-report.html b/vasl_templates/webapp/templates/vo-report.html
index ed981aa..4d2ef0b 100644
--- a/vasl_templates/webapp/templates/vo-report.html
+++ b/vasl_templates/webapp/templates/vo-report.html
@@ -61,15 +61,6 @@ function load_vo_listings( objs )
var buf = [] ;
buf.push( "" ) ;
buf.push( "", "Name" ) ;
- if ( "{{VO_TYPE}}" === "vehicles" ) {
- buf.push( " | Radio" ) ;
- buf.push( " | IF" ) ;
- buf.push( " | Crew survival" ) ;
- }
- if ( "{{VO_TYPE}}" === "landing-craft" ) {
- buf.push( " | Damage points" ) ;
- buf.push( " | Crew survival" ) ;
- }
buf.push( " | Capabilities", " | Notes" ) ;
for ( var i=0 ; i < objs[nat].length ; ++i ) {
var obj = objs[nat][i] ;
@@ -77,20 +68,6 @@ function load_vo_listings( objs )
continue ;
buf.push( " | " ) ;
buf.push( "", fmtval(obj.name) ) ;
- if ( "{{VO_TYPE}}" === "vehicles" ) {
- buf.push( " | ", fmtval(obj.no_radio) ) ;
- var has_if = "✓" ;
- if ( typeof(obj.no_if) === "string" ) // nb: only for the French B1-bis :-/
- has_if = "(" + obj.no_if + ")" ;
- else if ( obj.no_if )
- has_if = null ;
- buf.push( " | ", fmtval(has_if) ) ;
- buf.push( " | ", fmtval(make_crew_survival(obj)) ) ;
- }
- if ( "{{VO_TYPE}}" === "landing-craft" ) {
- buf.push( " | ", fmtval(obj.damage_points) ) ;
- buf.push( " | ", fmtval(make_crew_survival(obj)) ) ;
- }
var capabilities = make_capabilities( obj, nat, theater, year, month, true, true ) ;
buf.push( " | ", listval(capabilities) ) ;
var capabilities = make_capabilities( obj, nat, theater, year, month, true, false ) ;
diff --git a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_vehicles.j2 b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_vehicles.j2
index 60ca469..cf4be8b 100644
--- a/vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_vehicles.j2
+++ b/vasl_templates/webapp/tests/fixtures/data/default-template-pack/ob_vehicles.j2
@@ -1,6 +1,5 @@
[{{PLAYER_NAME}}] ; width={{OB_VEHICLES_WIDTH}}{%for veh in OB_VEHICLES %}
[*] {{veh.name}}: #={{veh.note_number}}{%if veh.notes%}
-- notes:{%for n in veh.notes%} "{{n}}"{%endfor%}{%endif%}{%if veh.crew_survival%}
-- {{veh.crew_survival}}{%endif%}{%if veh.capabilities%}
+- notes:{%for n in veh.notes%} "{{n}}"{%endfor%}{%endif%}{%if veh.capabilities%}
- capabilities:{%for c in veh.capabilities%} "{{c}}"{%endfor%}{%endif%}{%if veh.raw_capabilities%}
- raw capabilities:{%for c in veh.raw_capabilities%} "{{c}}"{%endfor%}{%endif%}{%endfor%}
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/landing-craft.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/landing-craft.txt
index 7629da7..339d6d7 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/landing-craft.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/landing-craft.txt
@@ -1,13 +1,13 @@
=== landing craft ===
-Name Damage points Crew survival Capabilities (effective) # Notes
--------- --------------- --------------- -------------- ------------- --- ------------------------------------------------
-LCP(L) 2 CS 4 DP 2 DP 2 1† A†1 B†3 C†2 D
-LCA 3 CS 6 DP 3 DP 3 2† n/a
-LCVP 3 CS 5 DP 3 DP 3 3† B†2 C†1
-LCV 3 CS 5 DP 3 DP 3 3† n/a
-LCM(3) 5 CS 6 DP 5 DP 5 4† B†2 C†1
-LCI(S) 14 CS 10 DP 14 DP 14 5† C†3 D E†2 F†1 G
-LCT(4) 10 CS 9 DP 10 DP 10 6† C†3 E†2 F†1 G
-Daihatsu 3 CS 4 DP 3 DP 3 7† A†1
-Shohatsu 2 CS 3 DP 2 DP 2 8† A† D
+Name Capabilities (effective) # Notes
+-------- -------------- ------------- --- ------------------------------------------------
+LCP(L) DP 2 CS 4 DP 2 CS 4 1† A†1 B†3 C†2 D
+LCA DP 3 CS 6 DP 3 CS 6 2† n/a
+LCVP DP 3 CS 5 DP 3 CS 5 3† B†2 C†1
+LCV DP 3 CS 5 DP 3 CS 5 3† n/a
+LCM(3) DP 5 CS 6 DP 5 CS 6 4† B†2 C†1
+LCI(S) DP 14 CS 10 DP 14 CS 10 5† C†3 D E†2 F†1 G
+LCT(4) DP 10 CS 9 DP 10 CS 9 6† C†3 E†2 F†1 G
+Daihatsu DP 3 CS 4 DP 3 CS 4 7† A†1
+Shohatsu DP 2 CS 3 DP 2 CS 3 8† A† D
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1940.txt
index 1d8aeae..af7ca12 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1940.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1941.txt
index 34f7767..4f0975f 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1941.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1942.txt
index d097e4f..c7f8b71 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1942.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1943.txt
index 33c400d..3f94260 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1943.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1944.txt
index aef1a77..cd88fa6 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1944.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1945.txt
index 7e4cb98..a1393bb 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/allied-minor-common/1945.txt
@@ -1,18 +1,18 @@
=== vehicles/allied-minor-common/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- ------------------
-L5/30(i) ® yes CS 2 n/a n/a 31 A
-L3/35(i) ® yes CS 2 n/a n/a 31† A D
-L6/40(i) n/a yes CS 2 n/a n/a 31† A
-M13/40(i) n/a yes CS 4 n/a n/a 31† A
-FT-17M(f) ® yes CS 2 n/a n/a 32† A F
-FT-17C(f) ® n/a CS 2 AP9 AP9 32† A F
-R-35(f) ® yes CS 2 AP10 AP10 33† A E†1 F
-M3A1(a) n/a yes CS 4 n/a n/a 34† A V
-C-K P17(f) n/a yes cs 4 n/a n/a 35 A
-C-K P19(f) n/a yes cs 5 n/a n/a 35† A
-VCL Utility B(b) n/a yes cs 2 n/a n/a 36† A H†1 V
-Light Truck n/a yes cs 4 n/a n/a 37 n/a
-Medium Truck n/a yes cs 5 n/a n/a 37 n/a
-Heavy Truck n/a yes cs 7 n/a n/a 37 n/a
+Name Capabilities (effective) # Notes
+---------------- ---------------- ---------------- --- ------------------
+L5/30(i) ® CS 2 ® CS 2 31 A
+L3/35(i) ® CS 2 ® CS 2 31† A D
+L6/40(i) CS 2 CS 2 31† A
+M13/40(i) CS 4 CS 4 31† A
+FT-17M(f) ® CS 2 ® CS 2 32† A F
+FT-17C(f) ® no IF AP9 CS 2 ® no IF AP9 CS 2 32† A F
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 33† A E†1 F
+M3A1(a) CS 4 CS 4 34† A V
+C-K P17(f) cs 4 cs 4 35 A
+C-K P19(f) cs 5 cs 5 35† A
+VCL Utility B(b) cs 2 cs 2 36† A H†1 V
+Light Truck cs 4 cs 4 37 n/a
+Medium Truck cs 5 cs 5 37 n/a
+Heavy Truck cs 7 cs 7 37 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1940.txt
index 7c3c3b1..1052656 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1940.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- ------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] n/a 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] n/a 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] n/a 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- ----------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1941.txt
index e1116da..bdfa2e1 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1941.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- ------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] n/a 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] n/a 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] n/a 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- ----------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1942.txt
index 4687cda..b9d5546 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1942.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- ------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] n/a 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] n/a 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] n/a 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- ----------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1943.txt
index 89db13c..5818070 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1943.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- ------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] C7†[2] 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] n/a 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] n/a 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] n/a 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- ----------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 C7†[2] CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1944.txt
index 848238d..46a73c7 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1944.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- ------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] C7†[2] 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] sM5 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] sM5 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] sM5 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] sM4 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A4 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 A5†[1] sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 C4†[1] H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- ----------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 C7†[2] CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] sM5 CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] sM5 CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] sM5 CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] sM4 CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 A4 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 A5†[1] sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 C4†[1] H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1945.txt
index eb6c09c..f65ae2b 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/american/1945.txt
@@ -1,67 +1,67 @@
=== vehicles/american/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------- ------- ---- ------------------------------------ ---------------------------- -------------- ------ ---------------------------------------------------
-M2A4 n/a yes CS 4 C10[P]†[1] n/a 1 B† C†1 P
-M3 n/a yes CS 4 C7[A2+]†[2] C7†[2] 2† B†1 C†2 N
-M3A1 n/a yes CS 4 C7†[2] C7†[2] 3† C†2 F†1 G N
-M3A1 Satan n/a yes CS 4 n/a n/a 4 P
-M5A1 n/a yes CS 4 C7†[2] C7†[2] 5† C†2 F†1 G N Y
-M24 n/a yes CS 5 WP7 s5 sM8 WP7 s5 sM8 6† G P R†1
-M3 n/a yes CS 7 C5†[2] C5†[2] 7† B†1 C†2 G N
-M4 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] WP7†[3] s5 sM5 8† F†2 G R†1 Y BB†3
-M4A1 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM5[4+] WP7†[3] s5 sM5 9† F†2 G N R†1 Y BB†3
-M4A2 n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM5[4+] WP7†[2] s5 sM5 10 F†1 G P R† BB†2
-M4A2 (L) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 11 F†1 G P R†
-M4A3 n/a yes CS 5 (brew up) WP7[J4+]†[3] s5[J4+] sM4[4+] WP7†[3] s5 sM4 12† F†2 G R†1 Y BB†3
-M4A3(75)W n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 13† F†2 G R†1 Y
-M4A3E2 n/a yes CS 6 WP7 s5 sM8 WP7 s5 sM8 14 F†1 G P R†
-M4A3E2 (L) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A5 s5 sM8 14† F†1 G P
-M4A1(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 A5†[2] s5 sM8 15† A†2 F†1 G P Y
-M4A3(76)W n/a yes CS 6 A4[A4]5[5]†[2] s5[5] sM8 A5†[2] s5 sM8 16† A†2 F†1 G P Y
-M4(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4A3(105) n/a yes CS 6 C7[P]†[1] H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† C†1 Y
-M4 Tankdozer n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 18† G R†1
-T1E3 n/a yes CS 5 (brew up) WP7 s5 sM6 WP7 s5 sM6 19† G P R†1
-Sherman Crab n/a yes CS 5 (brew up) WP7[J4+]†[2] s5[J4+] sM4 WP7†[2] s5 sM4 20† G R†1 BB†2
-POA-CWS-H1 n/a yes CS 6 sM8 sM8 21† P
-M26 n/a yes CS 6 A7 A7 22† P
-M10 GMC n/a yes CS 7 A5[A4E]6[5E]†[1] s5[5] sP5 A6†[1] s5 sP5 23† A†1 N Y
-M18 GMC n/a yes CS 6 A5[4E]6[5E]†[1] s5[5] sP5 A6†[1] s5 sP5 24† A†1
-M36 GMC n/a yes CS 7 A5[5] sP5 A5 sP5 25† P
-M36B1 GMC n/a yes CS 7 A5 sP5 A5 sP5 26 P
-M2 n/a yes CS 4 n/a n/a 27†[1] E† H I† N
-M3 n/a yes CS 5 n/a n/a 28† N
-M3A1 n/a yes CS 5 n/a n/a 29†[1] E† H I† Z
-M3(MMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M3(HMG) n/a yes CS 5 n/a n/a 30† E† H N P
-M4 MC n/a yes CS 4 (brew up) WP8 WP8 31† J† M†1 N O†2 P
-M4A1 MC n/a yes CS 4 (brew up) WP8 WP8 32† J†1 M†2 O†3
-M21 MC n/a yes CS 4 (brew up) WP8 WP8 33 M O† P
-M3 GMC n/a yes CS 4 n/a n/a 34† N U
-T30 HMC n/a yes CS 4 AP7 H5 WP9 AP7 H5 WP9 35†[1] K† N O† P U
-T19 HMC n/a yes CS 4 H5 WP8 s7 H5 WP8 s7 36† K†1 N O†1 P
-M15A1 MGMC n/a yes CS 4 n/a n/a 37† N V† AA†1
-M16 MGMC n/a yes CS 4 n/a n/a 38† V† AA†1
-M3A1 n/a yes CS 4 n/a n/a 39†[1] E† H I† N
-M20 n/a yes CS 4 sP5 sP5 40† D†3 O†2 W†1 Z
-T8 n/a yes CS 5 n/a n/a 41† O†1 P
-M8 n/a yes CS 4 C7†[2] sP5 C7†[2] sP5 42† C†2 G W†1
-M8 HMC n/a yes CS 5 C4[4+]†[1] H9 WP9 C4†[1] H9 WP9 43† C†1 Y
-M7 HMC n/a yes CS 7 C7[P]†[1] H7 WP8 s7 H7 WP8 s7 44† C†1 N
-M12 GMC n/a n/a CS 9 AP6 WP8 AP6 WP8 45† P
-LVT(A)1 n/a yes CS 6 C10[P]†[2] n/a 46†[1] C†2 G H P T†
-LVT(A)4 n/a yes CS 6 C7[P]†[3] H8 WP9 H8 WP9 47† C†3 P T†1 X†2
-M4 DD n/a yes CS 6 (brew up) WP7 s5 sM5 WP7 s5 sM5 48 G P R†
-LVT2 n/a yes CS 6 n/a n/a 49† D†3 H Q†2 T†1
-LVT2(m) n/a yes CS 7 n/a n/a 49.1† D†3 H P Q†2 T†1
-LVT(A)2 n/a yes CS 7 n/a n/a 50† D†3 H Q†2 T†1
-LVT4 n/a yes CS 7 n/a n/a 51† D H T†1 X†2
-M4 hst n/a yes CS 6 n/a n/a 51.1† n/a
-DUKW n/a yes cs 7†1 n/a n/a 52† D†3 O†2 CC†1
-¼-Ton Jeep GPA n/a yes cs 2 n/a n/a 53† L†1
-¼-Ton Jeep n/a yes cs 2†1 n/a n/a 54† L†2 N O†3 CC†1
-¾-Ton n/a yes cs 4 n/a n/a 55† N
-1½-Ton n/a yes cs 6 n/a n/a 56† N
-2½-Ton n/a yes cs 7 n/a n/a 57† N
-7½-Ton n/a yes cs 7 n/a n/a 58† N
+Name Capabilities (effective) # Notes
+------------------- ----------------------------------------- --------------------------- ------ ---------------------------------------------------
+M2A4 C10[P]†[1] CS 4 CS 4 1 B† C†1 P
+M3 C7[A2+]†[2] CS 4 C7†[2] CS 4 2† B†1 C†2 N
+M3A1 C7†[2] CS 4 C7†[2] CS 4 3† C†2 F†1 G N
+M3A1 Satan CS 4 CS 4 4 P
+M5A1 C7†[2] CS 4 C7†[2] CS 4 5† C†2 F†1 G N Y
+M24 WP7 s5 sM8 CS 5 WP7 s5 sM8 CS 5 6† G P R†1
+M3 C5†[2] CS 7 C5†[2] CS 7 7† B†1 C†2 G N
+M4 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] WP7†[3] s5 sM5 CS 5[brewup] 8† F†2 G R†1 Y BB†3
+M4A1 WP7[J4+]†[3] s5[J4+] sM5[4+] CS 5[brewup] WP7†[3] s5 sM5 CS 5[brewup] 9† F†2 G N R†1 Y BB†3
+M4A2 WP7[J4+]†[2] s5[J4+] sM5[4+] CS 5[brewup] WP7†[2] s5 sM5 CS 5[brewup] 10 F†1 G P R† BB†2
+M4A2 (L) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 11 F†1 G P R†
+M4A3 WP7[J4+]†[3] s5[J4+] sM4[4+] CS 5[brewup] WP7†[3] s5 sM4 CS 5[brewup] 12† F†2 G R†1 Y BB†3
+M4A3(75)W WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 13† F†2 G R†1 Y
+M4A3E2 WP7 s5 sM8 CS 6 WP7 s5 sM8 CS 6 14 F†1 G P R†
+M4A3E2 (L) A4[4]5[5] s5[5] sM8 CS 6 A5 s5 sM8 CS 6 14† F†1 G P
+M4A1(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 A5†[2] s5 sM8 CS 6 15† A†2 F†1 G P Y
+M4A3(76)W A4[A4]5[5]†[2] s5[5] sM8 CS 6 A5†[2] s5 sM8 CS 6 16† A†2 F†1 G P Y
+M4(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4A3(105) C7[P]†[1] H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† C†1 Y
+M4 Tankdozer WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 18† G R†1
+T1E3 WP7 s5 sM6 CS 5[brewup] WP7 s5 sM6 CS 5[brewup] 19† G P R†1
+Sherman Crab WP7[J4+]†[2] s5[J4+] sM4 CS 5[brewup] WP7†[2] s5 sM4 CS 5[brewup] 20† G R†1 BB†2
+POA-CWS-H1 sM8 CS 6 sM8 CS 6 21† P
+M26 A7 CS 6 A7 CS 6 22† P
+M10 GMC A5[A4E]6[5E]†[1] s5[5] sP5 CS 7 A6†[1] s5 sP5 CS 7 23† A†1 N Y
+M18 GMC A5[4E]6[5E]†[1] s5[5] sP5 CS 6 A6†[1] s5 sP5 CS 6 24† A†1
+M36 GMC A5[5] sP5 CS 7 A5 sP5 CS 7 25† P
+M36B1 GMC A5 sP5 CS 7 A5 sP5 CS 7 26 P
+M2 CS 4 CS 4 27†[1] E† H I† N
+M3 CS 5 CS 5 28† N
+M3A1 CS 5 CS 5 29†[1] E† H I† Z
+M3(MMG) CS 5 CS 5 30† E† H N P
+M3(HMG) CS 5 CS 5 30† E† H N P
+M4 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 31† J† M†1 N O†2 P
+M4A1 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 32† J†1 M†2 O†3
+M21 MC WP8 CS 4[brewup] WP8 CS 4[brewup] 33 M O† P
+M3 GMC CS 4 CS 4 34† N U
+T30 HMC AP7 H5 WP9 CS 4 AP7 H5 WP9 CS 4 35†[1] K† N O† P U
+T19 HMC H5 WP8 s7 CS 4 H5 WP8 s7 CS 4 36† K†1 N O†1 P
+M15A1 MGMC CS 4 CS 4 37† N V† AA†1
+M16 MGMC CS 4 CS 4 38† V† AA†1
+M3A1 CS 4 CS 4 39†[1] E† H I† N
+M20 sP5 CS 4 sP5 CS 4 40† D†3 O†2 W†1 Z
+T8 CS 5 CS 5 41† O†1 P
+M8 C7†[2] sP5 CS 4 C7†[2] sP5 CS 4 42† C†2 G W†1
+M8 HMC C4[4+]†[1] H9 WP9 CS 5 C4†[1] H9 WP9 CS 5 43† C†1 Y
+M7 HMC C7[P]†[1] H7 WP8 s7 CS 7 H7 WP8 s7 CS 7 44† C†1 N
+M12 GMC no IF AP6 WP8 CS 9 no IF AP6 WP8 CS 9 45† P
+LVT(A)1 C10[P]†[2] CS 6 CS 6 46†[1] C†2 G H P T†
+LVT(A)4 C7[P]†[3] H8 WP9 CS 6 H8 WP9 CS 6 47† C†3 P T†1 X†2
+M4 DD WP7 s5 sM5 CS 6[brewup] WP7 s5 sM5 CS 6[brewup] 48 G P R†
+LVT2 CS 6 CS 6 49† D†3 H Q†2 T†1
+LVT2(m) CS 7 CS 7 49.1† D†3 H P Q†2 T†1
+LVT(A)2 CS 7 CS 7 50† D†3 H Q†2 T†1
+LVT4 CS 7 CS 7 51† D H T†1 X†2
+M4 hst CS 6 CS 6 51.1† n/a
+DUKW cs 7†[1] cs 7†[1] 52† D†3 O†2 CC†1
+¼-Ton Jeep GPA cs 2 cs 2 53† L†1
+¼-Ton Jeep cs 2†[1] cs 2†[1] 54† L†2 N O†3 CC†1
+¾-Ton cs 4 cs 4 55† N
+1½-Ton cs 6 cs 6 56† N
+2½-Ton cs 7 cs 7 57† N
+7½-Ton cs 7 cs 7 58† N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1940.txt
index 0c73930..21af8fa 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1940.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1941.txt
index 12a19c0..7ef93de 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1941.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 A3 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 A3 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1942.txt
index 63d8ebd..2dcbc1d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1942.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 A4 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 A4 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 A5 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 A4 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 A4 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 A4 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 A5 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 A4 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1943.txt
index be15155..4713e33 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1943.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 A3 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 A3 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 A4 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 H8 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 A3 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 A3 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 A3 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 A4 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 H8 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 H5 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 H5 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 A3 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1944.txt
index 0dfc847..899235e 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1944.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 A3 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 A3 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 A3 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 H8 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 A3 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 A3 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 A3 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 A3 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 A3 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 A3 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 H8 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 H5 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 H5 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 A3 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 A3 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 A3 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1945.txt
index 7c82a34..72706b0 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/axis-minor-common/1945.txt
@@ -1,37 +1,37 @@
=== vehicles/axis-minor-common/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ ----------------- ------------- --- ---------------------------------------
-L3/35(i) ® yes CS 2 n/a n/a 29† K†1 E F G†2 H C B
-FT-17M(f) ® n/a CS 2 n/a n/a 30† D R C
-FT-17C(f) ® yes CS 2 AP9 AP9 30† D R C
-PzKpfw IB(g) n/a yes CS 2 sD6 sD6 31† K†1 E H C
-R-35(f) ® yes CS 2 AP10 AP10 32† A†1 D E R H B
-H39(f) ® yes CS 2 AP10 AP10 33† A†1 D E H C B
-LT vz 35(g) n/a yes CS 4 sD5 sD5 34† E R S B
-LT vz 38(t)A n/a yes CS 4 A3[1]4[2]3[3] sD6 A3 sD6 35† E R H S
-LT vz 38(t)E n/a yes CS 4 A4[2]3[3] sD7 A3 sD7 35† E H S B
-S-35(f) n/a yes CS 4 n/a n/a 36† A†1 D E H S
-PzKpfw IIIL(g) n/a yes CS 5 A5[2]4[3]3[4] sD5 A3 sD5 37† E O†1 Q R H C
-PzKpfw IIIN(g) n/a yes CS 5 H8[3+] s8 sD7 H8 s8 sD7 38† E O†1 Q R S
-PzKpfw IVD(g) n/a yes CS 5 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R
-PzKpfw IVF1(g) n/a yes CS 6 AP7 H5[3+] s8 sD7 AP7 H5 s8 sD7 39† E Q R H B
-PzKpfw IVH(g) n/a yes CS 6 A4[2]3[3] s7 sD5 A3 s7 sD5 39† E O†1 Q R H B
-StuG IIIG(g) n/a yes CS 4 A3[4] s8 sD7 A3 s8 sD7 40† E Q R H B
-JgdPz 38(t) n/a yes CS 4 A3[4] HE7 A3 HE7 41† E H B
-SPW 250/1(g) n/a yes CS 4 n/a n/a 42† E R
-SPW 251/1(g) n/a yes CS 5 n/a n/a 42† E R C
-SPW 251/9(g) n/a yes CS 4 (brew up) H5 s8 H5 s8 42† E R
-OA vz 30(t) ® yes CS 2 n/a n/a 43† E R S
-AB 41(i) n/a yes CS 4 n/a n/a 44† E R C
-PSW 222(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 222(L)(g) n/a yes CS 3 sD6 sD6 45† P†1 E M†2 R B
-PSW 223(g) n/a yes CS 3 sD6 sD6 46† E M†1 P†2 R B
-Komsomolet(r) n/a yes cs 2†1 n/a n/a 47† E F I†1 J R H S C B
-RSO(g) n/a yes cs 5 n/a n/a 48 S B
-Light Tractor n/a yes cs 4 n/a n/a 49 R H S C B
-Medium Tractor n/a yes cs 5 n/a n/a 49 R H S C B
-Heavy Tractor n/a yes cs 6 n/a n/a 49 R H S C B
-Light Truck n/a yes cs 4 n/a n/a 50 R H S C B
-Medium Truck n/a yes cs 5 n/a n/a 50 R H S C B
-Heavy Truck n/a yes cs 7 n/a n/a 50 R H S C B
+Name Capabilities (effective) # Notes
+-------------- ---------------------- ------------------ --- ---------------------------------------
+L3/35(i) ® CS 2 ® CS 2 29† K†1 E F G†2 H C B
+FT-17M(f) ® no IF CS 2 ® no IF CS 2 30† D R C
+FT-17C(f) ® AP9 CS 2 ® AP9 CS 2 30† D R C
+PzKpfw IB(g) sD6 CS 2 sD6 CS 2 31† K†1 E H C
+R-35(f) ® AP10 CS 2 ® AP10 CS 2 32† A†1 D E R H B
+H39(f) ® AP10 CS 2 ® AP10 CS 2 33† A†1 D E H C B
+LT vz 35(g) sD5 CS 4 sD5 CS 4 34† E R S B
+LT vz 38(t)A A3[1]4[2]3[3] sD6 CS 4 A3 sD6 CS 4 35† E R H S
+LT vz 38(t)E A4[2]3[3] sD7 CS 4 A3 sD7 CS 4 35† E H S B
+S-35(f) CS 4 CS 4 36† A†1 D E H S
+PzKpfw IIIL(g) A5[2]4[3]3[4] sD5 CS 5 A3 sD5 CS 5 37† E O†1 Q R H C
+PzKpfw IIIN(g) H8[3+] s8 sD7 CS 5 H8 s8 sD7 CS 5 38† E O†1 Q R S
+PzKpfw IVD(g) AP7 H5[3+] s8 sD7 CS 5 AP7 H5 s8 sD7 CS 5 39† E Q R
+PzKpfw IVF1(g) AP7 H5[3+] s8 sD7 CS 6 AP7 H5 s8 sD7 CS 6 39† E Q R H B
+PzKpfw IVH(g) A4[2]3[3] s7 sD5 CS 6 A3 s7 sD5 CS 6 39† E O†1 Q R H B
+StuG IIIG(g) A3[4] s8 sD7 CS 4 A3 s8 sD7 CS 4 40† E Q R H B
+JgdPz 38(t) A3[4] HE7 CS 4 A3 HE7 CS 4 41† E H B
+SPW 250/1(g) CS 4 CS 4 42† E R
+SPW 251/1(g) CS 5 CS 5 42† E R C
+SPW 251/9(g) H5 s8 CS 4[brewup] H5 s8 CS 4[brewup] 42† E R
+OA vz 30(t) ® CS 2 ® CS 2 43† E R S
+AB 41(i) CS 4 CS 4 44† E R C
+PSW 222(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 222(L)(g) sD6 CS 3 sD6 CS 3 45† P†1 E M†2 R B
+PSW 223(g) sD6 CS 3 sD6 CS 3 46† E M†1 P†2 R B
+Komsomolet(r) cs 2†[1] cs 2†[1] 47† E F I†1 J R H S C B
+RSO(g) cs 5 cs 5 48 S B
+Light Tractor cs 4 cs 4 49 R H S C B
+Medium Tractor cs 5 cs 5 49 R H S C B
+Heavy Tractor cs 6 cs 6 49 R H S C B
+Light Truck cs 4 cs 4 50 R H S C B
+Medium Truck cs 5 cs 5 50 R H S C B
+Heavy Truck cs 7 cs 7 50 R H S C B
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1940.txt
index df49c6b..c26380d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1940.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1941.txt
index 3675493..288637a 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1941.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1942.txt
index ca19bcf..91dd774 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1942.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1943.txt
index a03eec8..4f032ad 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1943.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1944.txt
index eed1021..43171cd 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1944.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1945.txt
index fbf09b6..048afe0 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/belgian/1945.txt
@@ -1,9 +1,9 @@
=== vehicles/belgian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------- -------------- ------------- --- ----------------
-VCL Mk VI/c47(b) ® yes CS 2 n/a n/a 14† A Q†1
-T-13 II(b) ® yes CS 4 (brew up)† n/a n/a 15† A
-T-13 III(b) ® yes CS 4 (brew up) n/a n/a 16 A
-T-15(b) ® yes CS 2 n/a n/a 17 A
-ACG1(f) ® yes CS 3 (brew up) n/a n/a 18† A
+Name Capabilities (effective) # Notes
+---------------- --------------- --------------- --- ----------------
+VCL Mk VI/c47(b) ® CS 2 ® CS 2 14† A Q†1
+T-13 II(b) ® CS 4[brewup]† ® CS 4[brewup]† 15† A
+T-13 III(b) ® CS 4[brewup] ® CS 4[brewup] 16 A
+T-15(b) ® CS 2 ® CS 2 17 A
+ACG1(f) ® CS 3[brewup] ® CS 3[brewup] 18† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt
index 3d71956..4e83d29 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 HE7 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt
index a884870..96d6d0f 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 HE7 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt
index b855077..8982459 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 HE7 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 IR† s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt
index 3c67251..b3cae01 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 HE7†[1] sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 HE7 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 HE7†[1] sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 IR† s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt
index fd2ffcd..a7f9387 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- ------------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 C6†[1] HE sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] HE7†[1] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 C5†[1] HE s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 C5†[1] HE s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A4 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sD5 sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] HE8†[1] sD6 sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] HE7†[2] 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 D6†[1] HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† sD4† 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† sD4† 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 C6†[2] sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 HE8†[1] sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 C6†[3] sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] sD5†[2] 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] sD5†[2] 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] sD5†[2] 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 C6†[1] HE sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] HE7†[1] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 C5†[1] HE s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 C5†[1] HE s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 A4 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sD5 sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 HE8†[1] sD6 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 HE7†[2] CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 HE7 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 D6†[1] HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 sD4† CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 sD4† CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 C6†[2] sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 HE8†[1] sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 C6†[3] sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 sD5†[1] CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 sD5†[2] CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 sD5†[1] CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 sD5†[2] CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 sD5†[2] CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 IR† s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt
index 563df27..c32e1a6 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt
@@ -1,131 +1,131 @@
=== vehicles/british/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- -------------------------- ------ ----------------------------------------------------
-Mark VIB n/a yes CS 3 sD6 sD6 1† N P
-Mark VIC n/a yes CS 3 sD6 sD6 1† n/a
-Tetrarch n/a yes CS 3 sD6 sD6 2† n/a
-Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1
-Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P
-Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 C6†[1] HE sD5 3† A C†1 G N P
-Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G
-Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C†
-A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N
-A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2
-A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N
-A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2
-A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K†
-A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N
-A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2
-Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N
-Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N
-Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2
-Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] HE7†[1] sD7 sM8†[2] 10† N Y†1 Z†2
-Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 C5†[1] HE s8† sM8 11† A C†1 G N P
-Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 C5†[1] HE s8† sD6 11† A C†1 G N P
-Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 12† A G K†2 N R†1 W†3
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 13† A G K†2 N R†1 W†3
-Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 14† A G K†2 P R†1 W†3
-Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A5 s5 sM8 15† A G K†1
-Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 D6†[2] HE7 sM8 16† A J†2 K†1
-Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 D6†[2] HE7 sM8 16† A J†2 K†1
-Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1
-Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z†
-Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1
-Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1
-Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1
-Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] D6†[1] HE7 sD7 sM8†[2] 21† J†1 Z†2
-Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z†
-Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1
-Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1
-Matilda I ® yes CS 2 sD5 sD5 25† B†1
-Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P
-Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2
-Valentine II n/a yes CS 4 sM8 sM8 27† N
-Valentine V n/a yes CS 4 sM8 sM8 28† K†1 NT
-Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 NT
-Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a
-Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sD5 sM8†[1] 31† NT S†2 Z†1 CC
-Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] D7†[2] HE8†[1] sD6 sM8†[3] 32† J†2 N Y†1 Z†3 CC
-Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC
-Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] WP6†[1] s8 sD7 sM8†[2] 34† W†1 Z†2 CC
-Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC
-Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC
-Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P
-Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC
-Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC
-Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC
-Deacon n/a yes CS 5 HE7[F3+]†[2] HE7†[2] 39† L†1 N Y†2
-Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] A6†[1] HE7 s5 40† A J†1
-Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 D7†[1] HE7 40† A J†1
-Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 D7†[1] HE7 sD7 41† J†1
-Daimler n/a yes CS 2 sD4[4+]† sD4† 42† M N P
-Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P
-Humber n/a yes CS 2 sD4[4+]† sD4† 43† L†1 M P BB†2
-Stuart Recce n/a yes CS 5 n/a n/a 44† A D NT P
-Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2
-Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2
-Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1
-Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1
-Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2
-Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2
-Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3
-Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2
-Humber II n/a yes CS 3 sD6 sD6 50† L†1 N
-Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P
-Humber IV n/a yes CS 3 C6[4+]†[2] sD6 C6†[2] sD6 51† A C†2 L†1 P
-Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P
-AEC I n/a yes CS 3 sM8 sM8 53† N X†1
-AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 D7†[2] HE8†[1] sM8 53 J†2 X† Y†1
-AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X†
-Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 C6†[3] sM8 54† A C†3 G K†2 X†1
-Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1
-Bishop n/a n/a CS 5 s8 s8 55† K†1 N P
-Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P
-Sexton(a) n/a yes CS 7 s8 s8 57† A K†1
-M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 WP7†[1] s8 58† A NT W†1
-Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2
-Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1
-M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1
-Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3
-Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2
-M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N
-M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N
-M5A1(a) n/a yes cs 5† n/a n/a 63 A I†
-M9A1(a) n/a yes cs 4† n/a n/a 63 A I†
-Carrier A n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1
-Carrier B n/a yes CS 3 sD5[4+]†[2] sD5†[2] 64† N P Q†1 U†2
-Carrier C n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1
-Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] sD5†[2] 65† N P Q†1 U†2
-Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] sD5†[2] 65† U†2 BB†1
-Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1
-Carrier, 3-in. MTR n/a yes CS 4 (brew up)†1 n/a n/a 67† H†1 N P U BB†2
-Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D
-Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1
-White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N
-IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1
-IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1
-IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X†
-IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4
-Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U
-Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M
-Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1
-Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2
-Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1
-DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P
-Terrapin Mk I n/a yes cs 7 n/a n/a 76† D
-2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P
-Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1
-Loyd Carrier n/a yes cs 5 n/a n/a 79† N P
-Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P
-15-cwt Truck n/a yes cs 5 n/a n/a 81† N P
-30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P
-3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P
-¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P
-¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N
-1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N
-2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N
-7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N
+Name Capabilities (effective) # Notes
+------------------------- ---------------------------------------------------- -------------------------------- ------ ----------------------------------------------------
+Mark VIB sD6 CS 3 sD6 CS 3 1† N P
+Mark VIC sD6 CS 3 sD6 CS 3 1† n/a
+Tetrarch sD6 CS 3 sD6 CS 3 2† n/a
+Tetrarch CS HE9†[1] s†[1] sD6 CS 3 HE9†[1] s†[1] sD6 CS 3 2† S†1
+Stuart I(a) sD5 CS 4 sD5 CS 4 3† A N P
+Stuart III(a) C6[4+]†[1] HE[4+] sD5 CS 4 C6†[1] HE sD5 CS 4 3† A C†1 G N P
+Stuart V(a) C6†[1] sD5 CS 4 C6†[1] sD5 CS 4 4† A C†1 G
+Locust(a) C6† sD6 CS 3 C6† sD6 CS 3 5 A C†
+A9 sD6 CS 5[brewup] sD6 CS 5[brewup] 6† K†1 N
+A9 CS s†[2] sD6 CS 5[brewup] s†[2] sD6 CS 5[brewup] 6† K†1 N S†2
+A10 Mk IA sD6 CS 5[brewup]† sD6 CS 5[brewup]† 7† B†1 K†2 N
+A10 Mk IA CS s†[2] sD6 CS 5[brewup]† s†[2] sD6 CS 5[brewup]† 7† K†1 N S†2
+A13 Mk I sD6 CS 4[brewup] sD6 CS 4[brewup] 8 K†
+A13 Mk II sD6 CS 4[brewup] sD6 CS 4[brewup] 8† B†1 K†2 N
+A13 Mk II CS s†[2] sD6 CS 4[brewup] s†[2] sD6 CS 4[brewup] 8† K†1 N S†2
+Crusader I sM8 CS 5[brewup] sM8 CS 5[brewup] 9† K†1 N
+Crusader I CS HE9 s†[2] sM8 CS 5[brewup] HE9 s†[2] sM8 CS 5[brewup] 9† K†1 N S†2
+Crusader II sM8 CS 4[brewup] sM8 CS 4[brewup] 9† K†1 N
+Crusader II CS HE9 s†[2] sM8 CS 4[brewup] HE9 s†[2] sM8 CS 4[brewup] 9† K†1 N S†2
+Crusader III HE7[F3+]†[1] sD7 sM8†[2] CS 3[brewup] HE7†[1] sD7 sM8†[2] CS 3[brewup] 10† N Y†1 Z†2
+Grant(a) C5[4+]†[1] HE[4+] s8† sM8 CS 6 C5†[1] HE s8† sM8 CS 6 11† A C†1 G N P
+Lee(a) C5[4+]†[1] HE[4+] s8† sD6 CS 7 C5†[1] HE s8† sD6 CS 7 11† A C†1 G N P
+Sherman II(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] WP6†[3] s8 sD6 CS 5[brewup] 12† A G K†2 N R†1 W†3
+Sherman III(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] WP6†[3] s8 sD6 CS 5[brewup] 13† A G K†2 N R†1 W†3
+Sherman V(a) WP6[J4+]†[3] s8 sD6 CS 5[brewup] WP6†[3] s8 sD6 CS 5[brewup] 14† A G K†2 P R†1 W†3
+Sherman IIA(a) A4[4]5[5] s5[5] sM8 CS 6 A5 s5 sM8 CS 6 15† A G K†1
+Sherman IIC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] D6†[2] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman VC(a) D5[S4]6[5]†[2] HE7 sM8 CS 5[brewup] D6†[2] HE7 sM8 CS 5[brewup] 16† A J†2 K†1
+Sherman IB(a) H9 WP9 s7 sM8 CS 6 H9 WP9 s7 sM8 CS 6 17† A K†1
+Centaur IV H6 s9 sD7 sM8† CS 5 H6 s9 sD7 sM8† CS 5 18 S Z†
+Cromwell IV WP6 s8 sD7 sM8†[1] CS 5 WP6 s8 sD7 sM8†[1] CS 5 19† Z†1
+Cromwell VI H6 s9 sD7 sM8†[1] CS 5 H6 s9 sD7 sM8†[1] CS 5 20† S Z†1
+Cromwell VII WP6 s8 sD7 sM8† CS 6 WP6 s8 sD7 sM8† CS 6 19† Z†1
+Cromwell VIII H6 s9 sD7 sM8†[1] CS 6 H6 s9 sD7 sM8†[1] CS 6 20† S Z†1
+Challenger D5[S4]6[5]†[1] HE7 sD7 sM8†[2] CS 6 D6†[1] HE7 sD7 sM8†[2] CS 6 21† J†1 Z†2
+Comet sD7 sM8† CS 6 sD7 sM8† CS 6 22 Z†
+Sherman Dozer(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 23† A G K†2 P R†1
+Sherman Crab(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 24† A G K†2 P R†1
+Matilda I ® sD5 CS 2 ® sD5 CS 2 25† B†1
+Matilda II sD6 CS 5 sD6 CS 5 26† B†1 K†2 N P
+Matilda II CS HE9†[2] s†[2] sD6 CS 5 HE9†[2] s†[2] sD6 CS 5 26† K†1 N P S†2
+Valentine II sM8 CS 4 sM8 CS 4 27† N
+Valentine V sM8 CS 4 sM8 CS 4 28† K†1 NT
+Valentine VIII HE7 sD6 CS 4 HE7 sD6 CS 4 29 NT
+Valentine XI WP6 s8 sD8 CS 4 WP6 s8 sD8 CS 4 30 n/a
+Churchill I HE9†[2] s†[2] sD5[4] sM8†[1] CS 7 HE9†[2] s†[2] sD5 sM8†[1] CS 7 31† NT S†2 Z†1 CC
+Churchill IV D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] CS 7 D7†[2] HE8†[1] sD6 sM8†[3] CS 7 32† J†2 N Y†1 Z†3 CC
+Churchill V H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 33† S Z†1 CC
+Churchill VI WP6[J4+]†[1] s8 sD7 sM8†[2] CS 7 WP6†[1] s8 sD7 sM8†[2] CS 7 34† W†1 Z†2 CC
+Churchill VII WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 35† Z†1 CC
+Churchill VIII H6 s9 sD7 sM8†[1] CS 7 H6 s9 sD7 sM8†[1] CS 7 35† S Z†1 CC
+Valentine Bridgelayer sD7 CS 2 sD7 CS 2 36† M P
+Churchill Bridgelayer sD7 CS 2 sD7 CS 2 36† M CC
+Churchill AVRE no IF sD7 sM8†[1] CS 8 no IF sD7 sM8†[1] CS 8 37† Z†1 CC
+Churchill Crocodile WP6 s8 sD7 sM8†[1] CS 7 WP6 s8 sD7 sM8†[1] CS 7 38† Z†1 CC
+Deacon HE7[F3+]†[2] CS 5 HE7†[2] CS 5 39† L†1 N Y†2
+Wolverine(a) A5[S4]6[5]†[1] HE7 s5[5] CS 7 A6†[1] HE7 s5 CS 7 40† A J†1
+Achilles(a) D6[S4]7[5]†[1] HE7 CS 7 D7†[1] HE7 CS 7 40† A J†1
+Archer D6[4]7[5]†[1] HE7 sD7 CS 5 D7†[1] HE7 sD7 CS 5 41† J†1
+Daimler sD4[4+]† CS 2 sD4† CS 2 42† M N P
+Lynx sD5 CS 2 sD5 CS 2 42† L†1 M P
+Humber sD4[4+]† CS 2 sD4† CS 2 43† L†1 M P BB†2
+Stuart Recce CS 5 CS 5 44† A D NT P
+Humber III LRC sD5 CS 3 sD5 CS 3 45† L†1 N P Q†2
+Otter LRC sD5 CS 3 sD5 CS 3 45† L†1 P Q†2
+Morris CS9 sD5 CS 4 sD5 CS 4 46† N Q†2 T†3 X†1
+Rolls Royce sD5 CS 3 sD5 CS 3 47† N Q†2 T†3 X†1
+Marmon-Herrington II ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIv CS 4 CS 4 49† L†1 N AA†2
+Marmon-Herrington III MFF CS 4 CS 4 48† L†1 P Q†2
+Marmon-Herrington III ME CS 4 CS 4 48† L†1 N Q†2 T†3
+Marmon-Herrington IIIv CS 4 CS 4 49† K†2 L†1 N T†2
+Humber II sD6 CS 3 sD6 CS 3 50† L†1 N
+Humber III sD6 CS 4 sD6 CS 4 50† K†2 L†1 N P
+Humber IV C6[4+]†[2] sD6 CS 3 C6†[2] sD6 CS 3 51† A C†2 L†1 P
+Daimler sD6 CS 3 sD6 CS 3 52† K†1 N P
+AEC I sM8 CS 3 sM8 CS 3 53† N X†1
+AEC II D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 CS 4 D7†[2] HE8†[1] sM8 CS 4 53 J†2 X† Y†1
+AEC III WP6 s8 sM8 CS 4 WP6 s8 sM8 CS 4 53 X†
+Staghound I(a) C6[4+]†[3] sM8 CS 5 C6†[3] sM8 CS 5 54† A C†3 G K†2 X†1
+Staghound II(a) s9 sD6 CS 4 s9 sD6 CS 4 54† A K†3 S†2 X†1
+Bishop no IF s8 CS 5 no IF s8 CS 5 55† K†1 N P
+Priest(a) H6 WP7 s8 CS 7 H6 WP7 s8 CS 7 56† A N P
+Sexton(a) s8 CS 7 s8 CS 7 57† A K†1
+M3 GMC(a) WP7[J4+]†[1] s8 CS 4 WP7†[1] s8 CS 4 58† A NT W†1
+Mk VI AA CS 2 CS 2 59† N O†1 AA†2
+Crusader AA sD7 CS 4[brewup] sD7 CS 4[brewup] 60† AA†1
+M17 MGMC(a) CS 4 CS 4 61† A F† AA†1
+Humber AA CS 2 CS 2 62† L†1 N O†2 AA†3
+Staghound AA(a) CS 3 CS 3 62† A F† X†1 AA†2
+M5(a) cs 5†[1] cs 5†[1] 63† A I†1 N
+M9(a) cs 4†[1] cs 4†[1] 63† A I†1 N
+M5A1(a) cs 5† cs 5† 63 A I†
+M9A1(a) cs 4† cs 4† 63 A I†
+Carrier A sD5[4+]†[1] CS 3 sD5†[1] CS 3 64† N P U†1
+Carrier B sD5[4+]†[2] CS 3 sD5†[2] CS 3 64† N P Q†1 U†2
+Carrier C sD5[4+]†[1] CS 3 sD5†[1] CS 3 64† N P U†1
+Carrier, MMG A sD5[4+]†[2] CS 3 sD5†[2] CS 3 65† N P Q†1 U†2
+Carrier, MMG B sD5[4+]†[2] CS 4 sD5†[2] CS 4 65† U†2 BB†1
+Carrier, 2-in. MTR IR[2+]† s7 CS 3 IR† s7 CS 3 66† N P U†1
+Carrier, 3-in. MTR CS 4[brewup]†[1] CS 4[brewup]†[1] 67† H†1 N P U BB†2
+Priest Kangaroo(a) CS 7 CS 7 68† A D
+Ram Kangaroo(a) CS 7 CS 7 68† A D K†1
+White(a) SC cs 4†[1] cs 4†[1] 69† A I†1 N
+IP Carrier Mk IIA CS 4 CS 4 70† N P V X†1
+IP Carrier Mk IIB CS 4 CS 4 70† N P Q†2 V X†1
+IP Carrier AOV CS 4 CS 4 70† P Q†1 V X†
+IP Carrier, 3-in. MTR IR WP7 s8 CS 5[brewup]† IR WP7 s8 CS 5[brewup]† 71†[2] E†3 H† P V X†1 BB†4
+Wasp sD5† CS 3[brewup] sD5† CS 3[brewup] 72† K†1 U
+Badger(a) CS 3 CS 3 72† A K†1 M
+Buffalo Mk II(a) sD5† CS 6 sD5† CS 6 73† A D AA†1
+Buffalo Mk IV(a) sD5† CS 6 sD5† CS 6 73† A D E†1 AA†2
+Sherman III DD(a) WP6 s8 sD6 CS 5[brewup] WP6 s8 sD6 CS 5[brewup] 74† A G K†2 R†1
+DUKW(a) cs 7†[1] cs 7†[1] 75† A D I†1 P
+Terrapin Mk I cs 7 cs 7 76† D
+2pdr Portee CS 4†[1] CS 4†[1] 77† H†1 N P
+Morris C9/B CS 4 CS 4 78† P AA†1
+Loyd Carrier cs 5 cs 5 79† N P
+Quad FAT CS 5[brewup]† CS 5[brewup]† 80† N P
+15-cwt Truck cs 5 cs 5 81† N P
+30-cwt Lorry cs 6 cs 6 82† N P
+3-Ton Lorry cs 7 cs 7 83† N P
+¼-Ton Jeep(a) cs 2†[1] cs 2†[1] 84† A I†1 N P
+¾-Ton Truck(a) cs 4 cs 4 85 A N
+1½-Ton Truck(a) cs 6 cs 6 85 A N
+2½-Ton Truck(a) cs 7 cs 7 85 A N
+7½-Ton Truck(a) cs 7 cs 7 85† A N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1940.txt
index 29b8b2e..bbb4938 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1940.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1941.txt
index 1c16b42..8890e30 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1941.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1942.txt
index ca1b849..98de2a2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1942.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1943.txt
index e9ff946..7b17f74 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1943.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1944.txt
index 429e69c..d02b35d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1944.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1945.txt
index f5dbddb..d4089d1 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/bulgarian/1945.txt
@@ -1,5 +1,5 @@
=== vehicles/bulgarian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------- ------- ---- --------------- -------------- ------------- --- -------
-Vickers 6-Ton Mk E ® yes CS 3 C5† C5† 28† n/a
+Name Capabilities (effective) # Notes
+------------------ -------------- ------------- --- -------
+Vickers 6-Ton Mk E ® C5† CS 3 ® C5† CS 3 28† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1940.txt
index 45a929d..7daf16a 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1940.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- --------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1941.txt
index de9fd36..6bdc4a5 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1941.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- --------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1942.txt
index 91f87cc..88296ed 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1942.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- --------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1943.txt
index 4f460f6..399ce02 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1943.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- --------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1944.txt
index 080db50..c5adb2f 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1944.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- --------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1945.txt
index 1bd40ba..587ba90 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/chinese/1945.txt
@@ -1,25 +1,25 @@
=== vehicles/chinese/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------- ------- ---- ------------------------------------ -------------- ------------- ------ ----------------------------------------
-VCL M1931(b) ® yes CS 2 n/a n/a 1† A B
-L3/35(i) ® yes CS 2† n/a n/a 2† A B D†1
-PzKpfw IA(g) ® yes CS 2 n/a n/a 3† A B D†1
-Vickers 6-Ton Mk E(b) ® yes CS 3 C5†[2] C5†[2] 4† A B C†2 E†1
-T-26TU M33(r) n/a yes CS 3 n/a n/a 5† A E†1
-M3A3(a) n/a yes CS 4 C9†[1] C9†[1] 6† A B C†1 E†2 G
-M4A4(a) n/a yes CS 5 (brew up) WP7[J4+]† s8 WP7† s8 7† A B E†1 G
-M3A1(a) n/a yes CS 4 n/a n/a 8† A B E†1
-Stuart Recon(a) n/a yes CS 5 n/a n/a 9† A B D†1 E†2
-Type 22 ® yes CS 4 n/a n/a 10†[1] B E†2 F†
-PSW 221(g) n/a yes CS 2 n/a n/a 11† A B F†
-PSW 222(g) n/a yes CS 3 n/a n/a 11† A B E†1 F†
-BA-20(r) ® yes CS 3 n/a n/a 12 A B F†
-BA-6(r) ® yes CS 4 n/a n/a 12 A B E†1 F†
-VCL Mk VI Carrier(b) n/a yes CS 2† n/a n/a 13† A B H†1
-Carrier A(b) n/a yes CS 3 n/a n/a 14† A
-Carrier B(b) n/a yes CS 3 n/a n/a 14† A E†1
-Carrier C(b) n/a yes CS 3 n/a n/a 14† A E†1
-Henschel 33(g) n/a yes cs 7 n/a n/a 15†[1] A F†
-Jeep(a) n/a yes cs 2† n/a n/a 16† A H†1
-2½-Ton(a) n/a yes cs 7 n/a n/a 16† A
+Name Capabilities (effective) # Notes
+--------------------- ------------------------- -------------------- ------ ----------------------------------------
+VCL M1931(b) ® CS 2 ® CS 2 1† A B
+L3/35(i) ® CS 2† ® CS 2† 2† A B D†1
+PzKpfw IA(g) ® CS 2 ® CS 2 3† A B D†1
+Vickers 6-Ton Mk E(b) ® C5†[2] CS 3 ® C5†[2] CS 3 4† A B C†2 E†1
+T-26TU M33(r) CS 3 CS 3 5† A E†1
+M3A3(a) C9†[1] CS 4 C9†[1] CS 4 6† A B C†1 E†2 G
+M4A4(a) WP7[J4+]† s8 CS 5[brewup] WP7† s8 CS 5[brewup] 7† A B E†1 G
+M3A1(a) CS 4 CS 4 8† A B E†1
+Stuart Recon(a) CS 5 CS 5 9† A B D†1 E†2
+Type 22 ® CS 4 ® CS 4 10†[1] B E†2 F†
+PSW 221(g) CS 2 CS 2 11† A B F†
+PSW 222(g) CS 3 CS 3 11† A B E†1 F†
+BA-20(r) ® CS 3 ® CS 3 12 A B F†
+BA-6(r) ® CS 4 ® CS 4 12 A B E†1 F†
+VCL Mk VI Carrier(b) CS 2† CS 2† 13† A B H†1
+Carrier A(b) CS 3 CS 3 14† A
+Carrier B(b) CS 3 CS 3 14† A E†1
+Carrier C(b) CS 3 CS 3 14† A E†1
+Henschel 33(g) cs 7 cs 7 15†[1] A F†
+Jeep(a) cs 2† cs 2† 16† A H†1
+2½-Ton(a) cs 7 cs 7 16† A
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1940.txt
index 98183a1..fa4b355 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1940.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1941.txt
index e7eef16..7b6f242 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1941.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1942.txt
index d93e12b..4c56243 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1942.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1943.txt
index a27e0f0..021b0a7 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1943.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1944.txt
index c183fde..355800f 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1944.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1945.txt
index c1a5852..d1f8d99 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/croatian/1945.txt
@@ -1,10 +1,10 @@
=== vehicles/croatian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- --------------- -------------- ------------- --- --------------
-TKS ® yes CS 2 n/a n/a 24† F
-TKS(L) ® yes CS 2 n/a n/a 24† F
-L6/40(i) n/a yes CS 2 n/a n/a 25 n/a
-wz 34-I ® yes CS 2 n/a n/a 26 n/a
-wz 34-II ® yes CS 2 n/a n/a 26 n/a
-SMV L40 da 47/32 n/a yes CS 3 n/a n/a 27† O†1
+Name Capabilities (effective) # Notes
+---------------- -------------- ------------- --- --------------
+TKS ® CS 2 ® CS 2 24† F
+TKS(L) ® CS 2 ® CS 2 24† F
+L6/40(i) CS 2 CS 2 25 n/a
+wz 34-I ® CS 2 ® CS 2 26 n/a
+wz 34-II ® CS 2 ® CS 2 26 n/a
+SMV L40 da 47/32 CS 3 CS 3 27† O†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1940.txt
index a4b3794..b9ee24c 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1940.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1941.txt
index 28ba143..5e4dfe4 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1941.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1942.txt
index eca5bc2..100381a 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1942.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1943.txt
index 57ac211..d7566e6 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1943.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1944.txt
index 8e1aacc..57440ac 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1944.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1945.txt
index 2384e14..d3d76db 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/danish/1945.txt
@@ -1,5 +1,5 @@
=== vehicles/danish/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
-Nimbus n/a yes † M8† M8† 24† n/a
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
+Nimbus M8† † M8† † 24† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1940.txt
index 5006800..4f5c50b 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1940.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1941.txt
index 0a15be4..f8fbd05 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1941.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1942.txt
index ef06e9b..f424309 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1942.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1943.txt
index 58d580b..b4d4258 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1943.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1944.txt
index bb96de6..82aa065 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1944.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1945.txt
index 4f9c4bd..b0c1769 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/dutch/1945.txt
@@ -1,11 +1,11 @@
=== vehicles/dutch/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------------- ------- ---- --------------- -------------- ------------- --- --------
-VCL M1936(b) ® yes CS 2 n/a n/a 25† A V
-CTLS-4(a) ® yes CS 2 n/a n/a 26† A V
-M36 ® yes CS 5 HE10 HE10 27 V
-M38 ® yes CS 5 HE10 HE10 27 V
-M39 ® yes CS 6 HE10 HE10 28 V
-Marmon-Herrington III(b) ® yes CS 4 n/a n/a 29† A V
-Jeep(a) n/a yes cs 2† n/a n/a 30† A V
+Name Capabilities (effective) # Notes
+------------------------ -------------- ------------- --- --------
+VCL M1936(b) ® CS 2 ® CS 2 25† A V
+CTLS-4(a) ® CS 2 ® CS 2 26† A V
+M36 ® HE10 CS 5 ® HE10 CS 5 27 V
+M38 ® HE10 CS 5 ® HE10 CS 5 27 V
+M39 ® HE10 CS 6 ® HE10 CS 6 28 V
+Marmon-Herrington III(b) ® CS 4 ® CS 4 29† A V
+Jeep(a) cs 2† cs 2† 30† A V
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1940.txt
index d7f5085..9ccbfd3 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1940.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] n/a 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1941.txt
index 36dfacd..13c17e3 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1941.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] n/a 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1942.txt
index 77d5a33..f369cb2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1942.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] A3 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 A3 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1943.txt
index c9b8193..b5b39d5 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1943.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] A3 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 A3 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1944.txt
index 02fa14a..8e8be0b 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1944.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] A3 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 A3 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1945.txt
index 3ad6505..bfddaeb 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/finnish/1945.txt
@@ -1,36 +1,36 @@
=== vehicles/finnish/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------- ------- ---- ------------------------------------ -------------- ------------- --- ----------------
-T-37(r) ® yes CS 2 n/a n/a 1† D M
-T-50(r) n/a yes CS 4 n/a n/a 2† D
-Vikkersi(b) ® yes CS 3 n/a n/a 3† B†1 D
-T-26E(b) ® yes CS 3 n/a n/a 4 B† D
-T-26A(r) ® yes CS 3 n/a n/a 5† D M
-T-26B(r) ® yes CS 3 n/a n/a 6 C† D M
-T-26C(r) ® yes CS 3 n/a n/a 7 C† D M
-OT-133(r) ® yes CS 3 n/a n/a 8 D M
-BT-5(r) ® yes CS 3 n/a n/a 9 D M
-BT-7(r) ® yes CS 3 n/a n/a 9 D M
-Postijuna(r) ® yes CS 5 s8 s8 10 D F† M
-Postijuna(L)(r) ® yes CS 6 s8 s8 11 D F† M
-Sotka(r) n/a yes CS 5 A3[2+] A3 12† D E M
-Sotka(L)(r) n/a yes CS 5 A3 A3 13† D E
-Pitkäputkinen Sotka(r) n/a yes CS 6 A3 sD6† A3 sD6† 14† D
-KV-1E(r) n/a yes CS 6 n/a n/a 15† D E M
-KV-1 M42(r) n/a yes CS 6 A3 A3 15† D E M
-BT-42(r) ® n/a CS 3 (brew up) H† s6 H† s6 16† D M
-Sturmi(g) n/a yes CS 4 A3 H4 s8 A3 H4 s8 17† D
-Landsverk Anti II(s) ® yes CS 6 n/a n/a 18 A† D
-L182(s) n/a yes CS 5 n/a n/a 19† n/a
-L182(L)(s) n/a yes CS 5 n/a n/a 19† n/a
-BA-20(r) ® yes CS 3 n/a n/a 20† n/a
-BA-6(r) ® yes CS 4 n/a n/a 21 D
-GAZ-4M-AA(r) n/a yes CS 4 n/a n/a 22† A†1
-T-20(r) n/a yes CS 2† n/a n/a 23† D
-RSO(g) n/a yes cs 5 n/a n/a 24 D
-STZ-3(r) n/a yes cs 4 n/a n/a 25 D
-Tempo G1200 n/a yes cs 2 n/a n/a 26† n/a
-Light Truck n/a yes cs 6 n/a n/a 27† n/a
-Medium Truck n/a yes cs 7 n/a n/a 27† n/a
-Heavy Truck n/a yes cs 7 n/a n/a 27 n/a
+Name Capabilities (effective) # Notes
+--------------------------- -------------------------- -------------------------- --- ----------------
+T-37(r) ® CS 2 ® CS 2 1† D M
+T-50(r) CS 4 CS 4 2† D
+Vikkersi(b) ® CS 3 ® CS 3 3† B†1 D
+T-26E(b) ® CS 3 ® CS 3 4 B† D
+T-26A(r) ® CS 3 ® CS 3 5† D M
+T-26B(r) ® CS 3 ® CS 3 6 C† D M
+T-26C(r) ® CS 3 ® CS 3 7 C† D M
+OT-133(r) ® CS 3 ® CS 3 8 D M
+BT-5(r) ® CS 3 ® CS 3 9 D M
+BT-7(r) ® CS 3 ® CS 3 9 D M
+Postijuna(r) ® s8 CS 5 ® s8 CS 5 10 D F† M
+Postijuna(L)(r) ® s8 CS 6 ® s8 CS 6 11 D F† M
+Sotka(r) A3[2+] CS 5 A3 CS 5 12† D E M
+Sotka(L)(r) A3 CS 5 A3 CS 5 13† D E
+Pitkäputkinen Sotka(r) A3 sD6† CS 6 A3 sD6† CS 6 14† D
+KV-1E(r) CS 6 CS 6 15† D E M
+KV-1 M42(r) A3 CS 6 A3 CS 6 15† D E M
+BT-42(r) ® no IF H† s6 CS 3[brewup] ® no IF H† s6 CS 3[brewup] 16† D M
+Sturmi(g) A3 H4 s8 CS 4 A3 H4 s8 CS 4 17† D
+Landsverk Anti II(s) ® CS 6 ® CS 6 18 A† D
+L182(s) CS 5 CS 5 19† n/a
+L182(L)(s) CS 5 CS 5 19† n/a
+BA-20(r) ® CS 3 ® CS 3 20† n/a
+BA-6(r) ® CS 4 ® CS 4 21 D
+GAZ-4M-AA(r) CS 4 CS 4 22† A†1
+T-20(r) CS 2† CS 2† 23† D
+RSO(g) cs 5 cs 5 24 D
+STZ-3(r) cs 4 cs 4 25 D
+Tempo G1200 cs 2 cs 2 26† n/a
+Light Truck cs 6 cs 6 27† n/a
+Medium Truck cs 7 cs 7 27† n/a
+Heavy Truck cs 7 cs 7 27 n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1940.txt
index bf77281..dc9e0a2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1940.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1941.txt
index 0d6aa4c..013088e 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1941.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1942.txt
index 12634f4..6e7e055 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1942.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1943.txt
index 3afc7b2..ef2201d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1943.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1944.txt
index 2e130dc..bc51005 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1944.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1945.txt
index 4c7b052..41bcbf4 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/french/1945.txt
@@ -1,54 +1,54 @@
=== vehicles/french/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------------------- --------------- ----- ------------------------------------ -------------- ------------- --- -----------------------------------------------------------------
-FT-17M ® yes CS 2 n/a n/a 1† C
-FT-17C ® yes CS 2 AP9 AP9 1† C
-FT-17 75BS ® n/a CS 3 (brew up) n/a n/a 1† C
-AMR 33 ® yes CS 2 n/a n/a 2† E
-AMR 35 ® yes CS 2 n/a n/a 3† E
-AMR 35(L) ® yes CS 2 n/a n/a 3† E
-R35 ® yes CS 2 AP10 AP10 4† A†1 C
-H35 ® yes CS 2 AP10 AP10 5† A†1 C E
-FCM 36 ® yes CS 2 AP10 AP10 6† C E I†1
-H39 ® yes CS 2 AP10 AP10 7† A†1 C F
-H39(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-H35(L) ® yes CS 2 AP10 AP10 8† A†1 C E
-R35(L) ® yes CS 2 AP10 AP10 8† A†1 C E F
-R40 ® yes CS 2 AP10 AP10 9 A†1 C E I†
-D1 ®9†1 yes CS 3 n/a n/a 10† B†3 C I†2 R†1
-D2 ®9†1 yes CS 3 n/a n/a 11† B†3 C E I†2 R†1
-D2(L) ®9†1 yes CS 3 n/a n/a 11† A†4 B†3 C E I†2 R†1
-S35 ®9†1 yes CS 4 n/a n/a 12† A†3 C F I†2 R†1
-B1-bis ®9†1 (75†) CS 5 (brew up) AP9[75]† AP9[75]† 13† A†4 B†3 C E F I†2 R†1
-Valentine V(b) n/a yes CS 4 sM8 sM8 14† F
-AM Dodge(a) n/a yes CS 6† AP10 AP10 15† F
-AMD 20 cv TOE ®9†1 yes CS 4 AP9 AP9 16† D†2 R†1
-AMD 50 AM ® yes CS 4 AP9 AP9 17† D†1
-AMD 80 AM ® yes CS 4 n/a n/a 17† D†1
-AMD 35 ® yes CS 4 n/a n/a 18† E
-Laffly W15T CC n/a yes CS 3 n/a n/a 19† E J†1
-Ac de 75 Conus(b) n/a yes CS 5 s8 s8 20† F M†1
-Ac de 75 mle 97 n/a yes CS 4 s8 s8 20† M†1
-Camion de Mitrailleuse CA n/a yes CS 4 n/a n/a 21† n/a
-Camion de 13.2 CAJ n/a yes CS 4 n/a n/a 21† AA†1
-Camion de 20 CA n/a yes CS 4 n/a n/a 21† AA†1
-Ac de 25 CA n/a yes CS 4 n/a n/a 21† F AA†1
-Ac de 40 CA(a) n/a yes CS 4 n/a n/a 22 E F M† AA†1
-Ac de 75 mle 13/34 n/a yes CS 7 n/a n/a 23† D†1 F AA†2
-AMC 29 ® yes CS 3 AP9 AP9 24† n/a
-C-K P17 n/a yes cs 4 n/a n/a 25† n/a
-C-K P19 n/a yes cs 5 n/a n/a 25† H†1
-SOMUA MCG n/a yes cs 4 n/a n/a 26† n/a
-Unic P107 n/a yes cs 5 n/a n/a 27† L†1
-Renault UE n/a yes cs 2†1 n/a n/a 28† G†1 K
-Lorraine 38L n/a yes cs 3/2† n/a n/a 29† E H†
-Lorraine 37L 44 n/a yes CS 3 n/a n/a 30† E K
-Carrier AC(b) n/a yes CS 3 n/a n/a 31† F M†1
-Latil TAR H2 n/a yes cs 5 n/a n/a 32† J†1
-Laffly S15T n/a yes cs 5 n/a n/a 33† J†1 L†2
-Laffly S20TL n/a yes cs 5 n/a n/a 34† E J†1
-Laffly V15T n/a yes cs 5 n/a n/a 35 E J†
-Peugeot 202 n/a yes cs 2†1 n/a n/a 36† G†1
-Citroën 23 n/a yes cs 5 n/a n/a 36† n/a
-Renault AGR2 n/a yes cs 7 n/a n/a 36† n/a
+Name Capabilities (effective) # Notes
+------------------------- --------------------------------------- --------------------------------------- --- -----------------------------------------------------------------
+FT-17M ® CS 2 ® CS 2 1† C
+FT-17C ® AP9 CS 2 ® AP9 CS 2 1† C
+FT-17 75BS ® no IF CS 3[brewup] ® no IF CS 3[brewup] 1† C
+AMR 33 ® CS 2 ® CS 2 2† E
+AMR 35 ® CS 2 ® CS 2 3† E
+AMR 35(L) ® CS 2 ® CS 2 3† E
+R35 ® AP10 CS 2 ® AP10 CS 2 4† A†1 C
+H35 ® AP10 CS 2 ® AP10 CS 2 5† A†1 C E
+FCM 36 ® AP10 CS 2 ® AP10 CS 2 6† C E I†1
+H39 ® AP10 CS 2 ® AP10 CS 2 7† A†1 C F
+H39(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+H35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E
+R35(L) ® AP10 CS 2 ® AP10 CS 2 8† A†1 C E F
+R40 ® AP10 CS 2 ® AP10 CS 2 9 A†1 C E I†
+D1 ®9†[1] CS 3 ®9†[1] CS 3 10† B†3 C I†2 R†1
+D2 ®9†[1] CS 3 ®9†[1] CS 3 11† B†3 C E I†2 R†1
+D2(L) ®9†[1] CS 3 ®9†[1] CS 3 11† A†4 B†3 C E I†2 R†1
+S35 ®9†[1] CS 4 ®9†[1] CS 4 12† A†3 C F I†2 R†1
+B1-bis ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] ®9†[1] no IF[75]† AP9[75]† CS 5[brewup] 13† A†4 B†3 C E F I†2 R†1
+Valentine V(b) sM8 CS 4 sM8 CS 4 14† F
+AM Dodge(a) AP10 CS 6† AP10 CS 6† 15† F
+AMD 20 cv TOE ®9†[1] AP9 CS 4 ®9†[1] AP9 CS 4 16† D†2 R†1
+AMD 50 AM ® AP9 CS 4 ® AP9 CS 4 17† D†1
+AMD 80 AM ® CS 4 ® CS 4 17† D†1
+AMD 35 ® CS 4 ® CS 4 18† E
+Laffly W15T CC CS 3 CS 3 19† E J†1
+Ac de 75 Conus(b) s8 CS 5 s8 CS 5 20† F M†1
+Ac de 75 mle 97 s8 CS 4 s8 CS 4 20† M†1
+Camion de Mitrailleuse CA CS 4 CS 4 21† n/a
+Camion de 13.2 CAJ CS 4 CS 4 21† AA†1
+Camion de 20 CA CS 4 CS 4 21† AA†1
+Ac de 25 CA CS 4 CS 4 21† F AA†1
+Ac de 40 CA(a) CS 4 CS 4 22 E F M† AA†1
+Ac de 75 mle 13/34 CS 7 CS 7 23† D†1 F AA†2
+AMC 29 ® AP9 CS 3 ® AP9 CS 3 24† n/a
+C-K P17 cs 4 cs 4 25† n/a
+C-K P19 cs 5 cs 5 25† H†1
+SOMUA MCG cs 4 cs 4 26† n/a
+Unic P107 cs 5 cs 5 27† L†1
+Renault UE cs 2†[1] cs 2†[1] 28† G†1 K
+Lorraine 38L cs 3/2† cs 3/2† 29† E H†
+Lorraine 37L 44 CS 3 CS 3 30† E K
+Carrier AC(b) CS 3 CS 3 31† F M†1
+Latil TAR H2 cs 5 cs 5 32† J†1
+Laffly S15T cs 5 cs 5 33† J†1 L†2
+Laffly S20TL cs 5 cs 5 34† E J†1
+Laffly V15T cs 5 cs 5 35 E J†
+Peugeot 202 cs 2†[1] cs 2†[1] 36† G†1
+Citroën 23 cs 5 cs 5 36† n/a
+Renault AGR2 cs 7 cs 7 36† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1940.txt
index 9897818..8be3eeb 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1940.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] n/a 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] n/a 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] HE7 s7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] HE7 s7 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] n/a 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] n/a 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- ------------------------ ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 HE7 s7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 HE7 s7 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1941.txt
index ca8c16b..fe56a35 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1941.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 A4 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 A4 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 A4 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 A4 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 A4 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] n/a 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] n/a 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 A5 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 A5 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] HE7 s7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] HE7 s7 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] A4 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] A4 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- ------------------------ ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 A4 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 A4 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 A4 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 A4 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 A4 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 A5 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 A5 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 HE7 s7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 HE7 s7 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 A4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 A4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1942.txt
index 50aceb8..27c02d6 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1942.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 A5 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 A5 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 A4 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 A4 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 A4 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 A6 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 A6 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 A5 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 A5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] n/a 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 A6 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] n/a 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 A6 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 A5 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 A5 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 A6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] HE7 s7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] HE7 s7 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] A4 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] A4 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- -------------------------- ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 A5 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 A5 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 A4 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 A4 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 A4 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 A6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 A6 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 A5 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 A5 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 A6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 A6 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 A5 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 A5 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] A6 HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 HE7 s7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 HE7 s7 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 A4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 A4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1943.txt
index 9e1eefd..6d9a996 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1943.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 A5 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 A5 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 A4 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 A4 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 A4 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 A6 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 A6 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 A5 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 A5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] n/a 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 A6 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] n/a 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 A6 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 A5 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 A5 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 A6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 A5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] HE7 s7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] HE7 s7 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] A4 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] A4 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 A5 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- -------------------------- ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 A5 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 A5 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 A4 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 A4 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 A4 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 A6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 A6 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 A5 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 A5 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 A6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 A6 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 A5 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 A5 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] A6 HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] A5 HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 HE7 s7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 HE7 s7 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 A4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 A4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 A5 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1944.txt
index 06dff17..10ed25e 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1944.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 A5 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 A5 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 A4 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 A4 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 A4 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 A6 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 A6 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 A5 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 A5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 A3 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] sN7 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 A6 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] A4 sN7 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 A6 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 A4 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 A5 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 A5 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 A4 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 A6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 A5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 A4 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] A4 HE7 s7 sN7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] A4 HE7 s7 sN8 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] A4 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] A4 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 A4 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 A5 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- -------------------------- ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 A5 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 A5 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 A4 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 A4 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 A4 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 A6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 A6 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 A5 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 A5 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 A3 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 sN7 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 A6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 A4 sN7 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 A6 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 A4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 A5 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 A5 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 A4 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] A6 HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] A5 HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 A4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 A4 HE7 s7 sN7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 A4 HE7 s7 sN8 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 A4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 A4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 A4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 A5 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1945.txt
index 6e11d21..576144b 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/german/1945.txt
@@ -1,124 +1,124 @@
=== vehicles/german/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------------- ------- ---- ------------------------------------ ------------------- ------------- ----- ---------------------------------
-PzKpfw IB n/a yes CS 2 sD6 sD6 1† NF
-PzKpfw IIA n/a yes CS 3 sD6 sD6 2 n/a
-PzKpfw IIF n/a yes CS 3 sD7 sD7 3 N
-PzKpfw II(Fl) n/a yes CS 2 (brew up) sD7† sD7† 4† n/a
-PzKpfw IIL n/a yes CS 4 sD7 sD7 5 n/a
-PzKpfw 35t n/a yes CS 4 sD5 sD5 6† n/a
-PzKpfw 38(t)A n/a yes CS 4 A4[1]5[2] sD6 A5 sD6 7† E
-PzKpfw 38(t)E n/a yes CS 4 A4[1]5[2] sD7 A5 sD7 8† E
-Aufklaerer 38(t) n/a yes CS 5 n/a n/a 9 A† E
-FT-17 730m(f) n/a yes CS 2 n/a n/a 9.1† a c f
-FT-17 730(f) n/a yes CS 2 AP9 AP9 9.1† a c f
-38H 735(f) n/a yes CS 3 AP10 AP10 9.2 a b† f
-35-S 739(f) n/a yes CS 4 n/a n/a 9.3 a b†2 d†1 f
-PzKpfw IIID n/a yes CS 5 sD6 sD6 10† n/a
-PzKpfw IIIF n/a yes CS 5 A4[1] sD7 A4 sD7 11† n/a
-PzKpfw IIIG n/a yes CS 5 A4[1] sD7 A4 sD7 12 N
-PzKpfw IIIH n/a yes CS 6 A4[1] sD7 A4 sD7 13† N
-PzKpfw IIIJ n/a yes CS 6 A6[2] sD7 A6 sD7 14† N S
-PzKpfw IIIL n/a yes CS 5 A6[2] sD7 A6 sD7 15† B† N S
-PzKpfw IIIN n/a yes CS 5 H9 s9 sD7 H9 s9 sD7 16 B† NT S
-PzKpfw III(Fl) n/a yes CS 3 sD7 sD7 17 n/a
-PzKpfw IVA n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 18† n/a
-PzKpfw IVC n/a yes CS 5 AP7 s9 sD6 AP7 s9 sD6 19† n/a
-PzKpfw IVD n/a yes CS 5 AP7 H6 s9 sD7 AP7 H6 s9 sD7 20 N R†
-PzKpfw IVE n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 21 N R†
-PzKpfw IVF1 n/a yes CS 6 AP7 H6 s9 sD7 AP7 H6 s9 sD7 22 N R†
-PzKpfw IVF2 n/a yes CS 6 A5[2] s8 sD6 A5 s8 sD6 23† N S
-PzKpfw IVH n/a yes CS 6 A5[2] s8 sD5 A5 s8 sD5 24† B† S
-PzKpfw IVJ n/a yes CS 6 A3[4] s8 sN9 A3 s8 sN9 25 S
-PzKpfw VD n/a yes CS 5 (brew up) sD5 sD5 26 F†
-PzKpfw VG n/a yes CS 6 sN7[4] sN7 27† H†
-PzKpfw M15/42(i) n/a yes CS 4 n/a n/a 28 I
-PzKpfw P26/40(i) n/a yes CS 4 s8 s8 29 I
-PzKpfw VIE n/a yes CS 6 A6[2] M7† sD7 A6 M7† sD7 30† K NFT
-PzKpfw VIE (L) n/a yes CS 6 A4[4] sN7[4] A4 sN7 31 K
-PzKpfw VIB n/a yes CS 6 sN9 sN9 32† K
-StuG IIIB n/a yes CS 4 AP7 H6 s9 sD7 AP7 H6 s9 sD7 33† n/a
-StuG IIIG n/a yes CS 4 A6[2] s8 sD7 A6 s8 sD7 34† NFT P† S
-StuG IIIG (L) n/a yes CS 4 A4[4] s8 sN9 A4 s8 sN9 35 O† Q† S
-StuH 42 n/a yes CS 4 H9 s9 sD7 H9 s9 sD7 36† NFT P† S
-StuH 42 (L) n/a yes CS 4 H9 s9 sN9 H9 s9 sN9 35 O† Q† S
-StuPz IV n/a n/a CS 6 H7 s9 H7 s9 37† S
-Sturmtiger n/a n/a CS 5 sN9 sN9 37.1† K
-PzJg Tiger n/a yes CS 7 n/a n/a 38 n/a
-StuG 75/18(i) n/a yes CS 3 H7 s9 H7 s9 39 I P†
-StuG 75/34(i) n/a yes CS 3 s9 s9 40 I P†
-StuG 105/25(i) n/a n/a CS 3 H7 s9 H7 s9 41 I P†
-StuG 75/46(i) n/a yes CS 3 s9 s9 42 I P†
-PzJg I n/a yes CS 3 A5[1] HE7 A5 HE7 43 N
-PzJg 35R(f) n/a yes CS 3 A5[1] HE7 A5 HE7 44 a
-Pz 35R 731(f) n/a yes CS 2 n/a n/a 44.1† a
-Marder I n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 45† a
-GSW 39H(f) Pak n/a yes CS 3 A4[4] HE9 A4 HE9 45.1 a e
-Marder II n/a yes CS 4 (brew up) A6[2] HE7 s7 A6 HE7 s7 46 M† NFT
-Marder III(t)H n/a yes CS 4 (brew up) A6[2] HE7 s7 sD6 A6 HE7 s7 sD6 47 E G NF
-Marder III(t)M n/a yes CS 4 (brew up) A5[3] HE7 s7 sD5 A5 HE7 s7 sD5 48 E
-PzJg III/IV n/a yes CS 5 HE7 HE7 49 M†
-JgdPz 38(t) n/a yes CS 4 A4[4] HE7 A4 HE7 50 E O†
-JgdPz 38(t) (Fl) n/a yes CS 4 n/a n/a 51 E O†
-JgdPz IV n/a yes CS 4 A4[4] HE7 s7 sN7[4] A4 HE7 s7 sN7 52 S
-JgdPz IV (L) n/a yes CS 4 A4[4] HE7 s7 sN8[4] A4 HE7 s7 sN8 52 S
-StuIG 33B n/a n/a CS 5 H7 s9 H7 s9 53† n/a
-JgdPz IV/70 n/a yes CS 4 HE7 sN9 HE7 sN9 54† S
-JgdPz V n/a yes CS 6 HE7 sN9 HE7 sN9 55 H
-JgdPz VI n/a yes CS 7 HE7 sN9 HE7 sN9 56 n/a
-SPW 250/1 n/a yes CS 4 n/a n/a 57 N
-SPW 250/sMG n/a yes CS 4† n/a n/a 58† J† N
-SPW 250/7 n/a yes CS 4 (brew up) IR s8 IR s8 59 J† N
-SPW 250/8 n/a yes CS 4 (brew up) H6 s8 H6 s8 60 Q†
-SPW 250/9 n/a yes CS 4 n/a n/a 61† A†
-SPW 250/10 n/a yes CS 4 A4[1] A4 62 J† N
-SPW 251/1 n/a yes CS 5 n/a n/a 63 C† N
-SPW 251/sMG n/a yes CS 5† n/a n/a 58† C† J† N
-SPW 251/2 n/a yes CS 4 (brew up) IR s8 IR s8 59 C† J† N
-SPW 251/9 n/a yes CS 4 (brew up) H6 s9 H6 s9 64 C† N Q†
-SPW 251/10 n/a yes CS 4 A4[1] A4 65 C† J† N
-SPW 251/16 n/a yes CS 4 (brew up) n/a n/a 66† n/a
-SPW 251/21 n/a yes CS 4 n/a n/a 66.1† n/a
-SPW 251/22 n/a yes CS 4 (brew up) HE7 s7 HE7 s7 67 J†
-SPW S307(f) n/a yes CS 4 A4[4] HE9 A4 HE9 67.1 a e
-mSPW S307(f) n/a n/a CS 4 IR s5 IR s5 67.2 a e
-Kfz 13 n/a yes CS 2 n/a n/a 68† n/a
-PSW 221 n/a yes CS 2 sD6 sD6 69† A† N
-PSW 222 n/a yes CS 3 sD6 sD6 70† A† N
-PSW 222 (L) n/a yes CS 3 sD6 sD6 70† A† NF
-PSW 231 (6 rad) n/a yes CS 4 n/a n/a 71† n/a
-PSW 231 (8 rad) n/a yes CS 4 sD6 sD6 72† N
-PSW 232 (8 rad) n/a yes CS 4 sD6 sD6 72 NF
-PSW 233 n/a yes CS 5 H8 s9 sD7 H8 s9 sD7 73 NT
-PSW 234/1 n/a yes CS 5 n/a n/a 74 A†
-PSW 234/2 n/a yes CS 4 A5[3] sD7 A5 sD7 75 n/a
-PSW 234/3 n/a yes CS 5 H8 s9 H8 s9 76 Q†
-PSW 234/4 n/a yes CS 5 (brew up) HE7 s7 HE7 s7 77† n/a
-sIG IB n/a n/a CS 4 (brew up) H6 s9 H6 s9 78 G
-sIG II n/a n/a CS 4 (brew up) H6 s9 H6 s9 79 N
-sIG 38(t)M n/a n/a CS 4 (brew up) H6 s9 H6 s9 80 E NFT
-PzA II n/a yes CS 4 H5 s8 H5 s8 81 M†
-PzA LrS(f) n/a n/a CS 4 H4 s8 H4 s8 82 a N
-GSW 39H(f) n/a yes CS 4 H4 s7 H4 s7 82.1 a e
-PzA III/IV n/a n/a CS 6 H5 s8 H5 s8 83 n/a
-FlaKPz 38(t) n/a yes CS 4 n/a n/a 84 A† E
-37 FlaK/Pz IV n/a yes CS 5 n/a n/a 85† A†
-(Moebelwagen) n/a yes CS 6 n/a n/a 85† A†
-FlaKPz IV/20 n/a yes CS 6 n/a n/a 86 A†
-FlaKPz IV/37 n/a yes CS 6 n/a n/a 87 A†
-SdKfz 10/4 n/a yes CS 5 n/a n/a 88 A† D† N
-SdKfz 10/5 n/a yes CS 4 n/a n/a 88.1† A†2 D†1
-SdKfz 6/2 n/a yes CS 5 n/a n/a 89 A† D† N
-SdKfz 7/1 n/a yes CS 4 n/a n/a 90 A† D† N
-Kfz 4 n/a yes CS 3 n/a n/a 91† N
-2cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-3.7cm FlaK LKW n/a yes CS 5 n/a n/a 92 A†
-Goliath n/a yes n/a n/a n/a 93† L†
-Kfz 1 n/a yes cs 2† n/a n/a 94† L† N
-Kfz 1/20 n/a yes cs 2 n/a n/a 95† L†
-Opel 6700 (Blitz) n/a yes cs 6 n/a n/a 96 N
-Buessing-NAG 4500 n/a yes cs 7 n/a n/a 96 N
-SdKfz 2 n/a yes cs 2 n/a n/a 97† L† N
-SdKfz 7 n/a yes cs 6 n/a n/a 98 N
-SdKfz 11 n/a yes cs 5 n/a n/a 99 N
+Name Capabilities (effective) # Notes
+---------------------- ----------------------------- -------------------------- ----- ---------------------------------
+PzKpfw IB sD6 CS 2 sD6 CS 2 1† NF
+PzKpfw IIA sD6 CS 3 sD6 CS 3 2 n/a
+PzKpfw IIF sD7 CS 3 sD7 CS 3 3 N
+PzKpfw II(Fl) sD7† CS 2[brewup] sD7† CS 2[brewup] 4† n/a
+PzKpfw IIL sD7 CS 4 sD7 CS 4 5 n/a
+PzKpfw 35t sD5 CS 4 sD5 CS 4 6† n/a
+PzKpfw 38(t)A A4[1]5[2] sD6 CS 4 A5 sD6 CS 4 7† E
+PzKpfw 38(t)E A4[1]5[2] sD7 CS 4 A5 sD7 CS 4 8† E
+Aufklaerer 38(t) CS 5 CS 5 9 A† E
+FT-17 730m(f) CS 2 CS 2 9.1† a c f
+FT-17 730(f) AP9 CS 2 AP9 CS 2 9.1† a c f
+38H 735(f) AP10 CS 3 AP10 CS 3 9.2 a b† f
+35-S 739(f) CS 4 CS 4 9.3 a b†2 d†1 f
+PzKpfw IIID sD6 CS 5 sD6 CS 5 10† n/a
+PzKpfw IIIF A4[1] sD7 CS 5 A4 sD7 CS 5 11† n/a
+PzKpfw IIIG A4[1] sD7 CS 5 A4 sD7 CS 5 12 N
+PzKpfw IIIH A4[1] sD7 CS 6 A4 sD7 CS 6 13† N
+PzKpfw IIIJ A6[2] sD7 CS 6 A6 sD7 CS 6 14† N S
+PzKpfw IIIL A6[2] sD7 CS 5 A6 sD7 CS 5 15† B† N S
+PzKpfw IIIN H9 s9 sD7 CS 5 H9 s9 sD7 CS 5 16 B† NT S
+PzKpfw III(Fl) sD7 CS 3 sD7 CS 3 17 n/a
+PzKpfw IVA AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 18† n/a
+PzKpfw IVC AP7 s9 sD6 CS 5 AP7 s9 sD6 CS 5 19† n/a
+PzKpfw IVD AP7 H6 s9 sD7 CS 5 AP7 H6 s9 sD7 CS 5 20 N R†
+PzKpfw IVE AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 21 N R†
+PzKpfw IVF1 AP7 H6 s9 sD7 CS 6 AP7 H6 s9 sD7 CS 6 22 N R†
+PzKpfw IVF2 A5[2] s8 sD6 CS 6 A5 s8 sD6 CS 6 23† N S
+PzKpfw IVH A5[2] s8 sD5 CS 6 A5 s8 sD5 CS 6 24† B† S
+PzKpfw IVJ A3[4] s8 sN9 CS 6 A3 s8 sN9 CS 6 25 S
+PzKpfw VD sD5 CS 5[brewup] sD5 CS 5[brewup] 26 F†
+PzKpfw VG sN7[4] CS 6 sN7 CS 6 27† H†
+PzKpfw M15/42(i) CS 4 CS 4 28 I
+PzKpfw P26/40(i) s8 CS 4 s8 CS 4 29 I
+PzKpfw VIE A6[2] M7† sD7 CS 6 A6 M7† sD7 CS 6 30† K NFT
+PzKpfw VIE (L) A4[4] sN7[4] CS 6 A4 sN7 CS 6 31 K
+PzKpfw VIB sN9 CS 6 sN9 CS 6 32† K
+StuG IIIB AP7 H6 s9 sD7 CS 4 AP7 H6 s9 sD7 CS 4 33† n/a
+StuG IIIG A6[2] s8 sD7 CS 4 A6 s8 sD7 CS 4 34† NFT P† S
+StuG IIIG (L) A4[4] s8 sN9 CS 4 A4 s8 sN9 CS 4 35 O† Q† S
+StuH 42 H9 s9 sD7 CS 4 H9 s9 sD7 CS 4 36† NFT P† S
+StuH 42 (L) H9 s9 sN9 CS 4 H9 s9 sN9 CS 4 35 O† Q† S
+StuPz IV no IF H7 s9 CS 6 no IF H7 s9 CS 6 37† S
+Sturmtiger no IF sN9 CS 5 no IF sN9 CS 5 37.1† K
+PzJg Tiger CS 7 CS 7 38 n/a
+StuG 75/18(i) H7 s9 CS 3 H7 s9 CS 3 39 I P†
+StuG 75/34(i) s9 CS 3 s9 CS 3 40 I P†
+StuG 105/25(i) no IF H7 s9 CS 3 no IF H7 s9 CS 3 41 I P†
+StuG 75/46(i) s9 CS 3 s9 CS 3 42 I P†
+PzJg I A5[1] HE7 CS 3 A5 HE7 CS 3 43 N
+PzJg 35R(f) A5[1] HE7 CS 3 A5 HE7 CS 3 44 a
+Pz 35R 731(f) CS 2 CS 2 44.1† a
+Marder I A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 45† a
+GSW 39H(f) Pak A4[4] HE9 CS 3 A4 HE9 CS 3 45.1 a e
+Marder II A6[2] HE7 s7 CS 4[brewup] A6 HE7 s7 CS 4[brewup] 46 M† NFT
+Marder III(t)H A6[2] HE7 s7 sD6 CS 4[brewup] A6 HE7 s7 sD6 CS 4[brewup] 47 E G NF
+Marder III(t)M A5[3] HE7 s7 sD5 CS 4[brewup] A5 HE7 s7 sD5 CS 4[brewup] 48 E
+PzJg III/IV HE7 CS 5 HE7 CS 5 49 M†
+JgdPz 38(t) A4[4] HE7 CS 4 A4 HE7 CS 4 50 E O†
+JgdPz 38(t) (Fl) CS 4 CS 4 51 E O†
+JgdPz IV A4[4] HE7 s7 sN7[4] CS 4 A4 HE7 s7 sN7 CS 4 52 S
+JgdPz IV (L) A4[4] HE7 s7 sN8[4] CS 4 A4 HE7 s7 sN8 CS 4 52 S
+StuIG 33B no IF H7 s9 CS 5 no IF H7 s9 CS 5 53† n/a
+JgdPz IV/70 HE7 sN9 CS 4 HE7 sN9 CS 4 54† S
+JgdPz V HE7 sN9 CS 6 HE7 sN9 CS 6 55 H
+JgdPz VI HE7 sN9 CS 7 HE7 sN9 CS 7 56 n/a
+SPW 250/1 CS 4 CS 4 57 N
+SPW 250/sMG CS 4† CS 4† 58† J† N
+SPW 250/7 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 J† N
+SPW 250/8 H6 s8 CS 4[brewup] H6 s8 CS 4[brewup] 60 Q†
+SPW 250/9 CS 4 CS 4 61† A†
+SPW 250/10 A4[1] CS 4 A4 CS 4 62 J† N
+SPW 251/1 CS 5 CS 5 63 C† N
+SPW 251/sMG CS 5† CS 5† 58† C† J† N
+SPW 251/2 IR s8 CS 4[brewup] IR s8 CS 4[brewup] 59 C† J† N
+SPW 251/9 H6 s9 CS 4[brewup] H6 s9 CS 4[brewup] 64 C† N Q†
+SPW 251/10 A4[1] CS 4 A4 CS 4 65 C† J† N
+SPW 251/16 CS 4[brewup] CS 4[brewup] 66† n/a
+SPW 251/21 CS 4 CS 4 66.1† n/a
+SPW 251/22 HE7 s7 CS 4[brewup] HE7 s7 CS 4[brewup] 67 J†
+SPW S307(f) A4[4] HE9 CS 4 A4 HE9 CS 4 67.1 a e
+mSPW S307(f) no IF IR s5 CS 4 no IF IR s5 CS 4 67.2 a e
+Kfz 13 CS 2 CS 2 68† n/a
+PSW 221 sD6 CS 2 sD6 CS 2 69† A† N
+PSW 222 sD6 CS 3 sD6 CS 3 70† A† N
+PSW 222 (L) sD6 CS 3 sD6 CS 3 70† A† NF
+PSW 231 (6 rad) CS 4 CS 4 71† n/a
+PSW 231 (8 rad) sD6 CS 4 sD6 CS 4 72† N
+PSW 232 (8 rad) sD6 CS 4 sD6 CS 4 72 NF
+PSW 233 H8 s9 sD7 CS 5 H8 s9 sD7 CS 5 73 NT
+PSW 234/1 CS 5 CS 5 74 A†
+PSW 234/2 A5[3] sD7 CS 4 A5 sD7 CS 4 75 n/a
+PSW 234/3 H8 s9 CS 5 H8 s9 CS 5 76 Q†
+PSW 234/4 HE7 s7 CS 5[brewup] HE7 s7 CS 5[brewup] 77† n/a
+sIG IB no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 78 G
+sIG II no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 79 N
+sIG 38(t)M no IF H6 s9 CS 4[brewup] no IF H6 s9 CS 4[brewup] 80 E NFT
+PzA II H5 s8 CS 4 H5 s8 CS 4 81 M†
+PzA LrS(f) no IF H4 s8 CS 4 no IF H4 s8 CS 4 82 a N
+GSW 39H(f) H4 s7 CS 4 H4 s7 CS 4 82.1 a e
+PzA III/IV no IF H5 s8 CS 6 no IF H5 s8 CS 6 83 n/a
+FlaKPz 38(t) CS 4 CS 4 84 A† E
+37 FlaK/Pz IV CS 5 CS 5 85† A†
+(Moebelwagen) CS 6 CS 6 85† A†
+FlaKPz IV/20 CS 6 CS 6 86 A†
+FlaKPz IV/37 CS 6 CS 6 87 A†
+SdKfz 10/4 CS 5 CS 5 88 A† D† N
+SdKfz 10/5 CS 4 CS 4 88.1† A†2 D†1
+SdKfz 6/2 CS 5 CS 5 89 A† D† N
+SdKfz 7/1 CS 4 CS 4 90 A† D† N
+Kfz 4 CS 3 CS 3 91† N
+2cm FlaK LKW CS 5 CS 5 92 A†
+3.7cm FlaK LKW CS 5 CS 5 92 A†
+Goliath 93† L†
+Kfz 1 cs 2† cs 2† 94† L† N
+Kfz 1/20 cs 2 cs 2 95† L†
+Opel 6700 (Blitz) cs 6 cs 6 96 N
+Buessing-NAG 4500 cs 7 cs 7 96 N
+SdKfz 2 cs 2 cs 2 97† L† N
+SdKfz 7 cs 6 cs 6 98 N
+SdKfz 11 cs 5 cs 5 99 N
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1940.txt
index 830bb64..84b5343 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1940.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1941.txt
index 820cac2..94411f2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1941.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1942.txt
index ec19674..7a0279f 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1942.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1943.txt
index 812a46c..d2999c3 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1943.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1944.txt
index d0614ca..0c5bdbe 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1944.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1945.txt
index 8a40aff..0a977a2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/greek/1945.txt
@@ -1,4 +1,4 @@
=== vehicles/greek/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------- ------- ---- --------------- -------------- ------------- --- -------
+Name Capabilities (effective) # Notes
+------ -------------- ------------- --- -------
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1940.txt
index b0e7587..131ac80 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1940.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] n/a 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1941.txt
index 4ea5385..a09dfa7 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1941.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] n/a 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1942.txt
index 6fb6450..64e0022 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1942.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] n/a 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1943.txt
index 79e89fd..2eb012c 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1943.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 A4 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] H6[9] 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ---------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] A4 HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 H6[9] CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1944.txt
index 688f92f..5c8bb10 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1944.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 A3 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 A3 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] H6[9] 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ---------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 A3 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] A3 HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 H6[9] CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1945.txt
index 5c744d7..9467f80 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/hungarian/1945.txt
@@ -1,15 +1,15 @@
=== vehicles/hungarian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
----------------- ------- ---- ------------------------------------ ---------------- ------------- --- --------------
-38M Toldi I n/a yes CS 3 n/a n/a 7† A†1
-38M Toldi IIA n/a yes CS 3 n/a n/a 8† A†1
-40M Turan I(r) n/a yes CS 5 sD5 sD5 9† E N Q
-41M Turan II(r) n/a yes CS 5 AP6 s7 sD5 AP6 s7 sD5 10† E N Q
-PzKpfw VG(g) n/a yes CS 6 sN6 sN6 11† E
-PzKpfw VIE(L)(g) n/a yes CS 6 A3[4] sN6 A3 sN6 12† E
-43M Zrinyi II n/a yes CS 4 s7 sD5 s7 sD5 13† Q
-39M Csaba n/a yes CS 4 n/a n/a 14 n/a
-40M Csaba n/a yes CS 4 n/a n/a 14 n/a
-Marder II(g) n/a yes CS 4 (brew up) A4[3]3[4] HE7 s6 A3 HE7 s6 15 E
-40M Nimrod n/a yes CS 6 H6[9][3+] H6[9] 16† P†1
+Name Capabilities (effective) # Notes
+---------------- ----------------------------- ---------------------- --- --------------
+38M Toldi I CS 3 CS 3 7† A†1
+38M Toldi IIA CS 3 CS 3 8† A†1
+40M Turan I(r) sD5 CS 5 sD5 CS 5 9† E N Q
+41M Turan II(r) AP6 s7 sD5 CS 5 AP6 s7 sD5 CS 5 10† E N Q
+PzKpfw VG(g) sN6 CS 6 sN6 CS 6 11† E
+PzKpfw VIE(L)(g) A3[4] sN6 CS 6 A3 sN6 CS 6 12† E
+43M Zrinyi II s7 sD5 CS 4 s7 sD5 CS 4 13† Q
+39M Csaba CS 4 CS 4 14 n/a
+40M Csaba CS 4 CS 4 14 n/a
+Marder II(g) A4[3]3[4] HE7 s6 CS 4[brewup] A3 HE7 s6 CS 4[brewup] 15 E
+40M Nimrod H6[9][3+] CS 6 H6[9] CS 6 16† P†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1940.txt
index 36a29d8..1ca9e04 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1940.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] n/a 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1941.txt
index bb6da73..121a31c 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1941.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] n/a 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1942.txt
index a937946..3f90f26 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1942.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] n/a 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1943.txt
index e6c36cd..1c7dcbe 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1943.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] H7†[2] 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 H7†[2] CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1944.txt
index cd8a3ae..d77cb2a 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1944.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] H7†[2] 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 H7†[2] CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1945.txt
index 54377b5..19b3154 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/italian/1945.txt
@@ -1,45 +1,45 @@
=== vehicles/italian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ----------------- -------------- ------------- --- -------------------------------------------------
-L5/21 ® yes CS 2 n/a n/a 1† A†1
-L5/30 ® yes CS 2 n/a n/a 1† n/a
-L3/35 ® yes CS 2 n/a n/a 2† A†1 B†1 E N R
-L3 aa ® yes CS 2 n/a n/a 3† C E†2 F†1 N R
-L3 cc ® yes CS 2 n/a n/a 4† E J†1 N
-L3 Lf ® yes CS 2 n/a n/a 5† E†1 N
-L6/40 n/a yes CS 2 n/a n/a 6† N R
-M11/39 ® yes CS 3 n/a n/a 7† A†1 N
-M13/40 ®† yes CS 4 n/a n/a 8† B†1 C†2 N
-M14/41 n/a yes CS 4 n/a n/a 9† B†1 C†2 N
-M15/42 n/a yes CS 4 n/a n/a 10† B†1 C†2
-MR/35(f) n/a yes CS 2 n/a n/a 11† I†1
-SMV M40 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12 C†1 F† H†2 N
-SMV M41 75/18 n/a yes CS 3 H7[S2+]†[2] s8 H7†[2] s8 12† C†1 H†2 N
-SMV M42 75/18 n/a yes CS 3 H7 s8 H7 s8 13 C†
-SMV M42 75/32 n/a yes CS 3 H7 s8 H7 s8 13† C†1
-SMV M43 105/25 n/a n/a CS 4 H7 s8 H7 s8 14 C†
-SMV L40 47/32 n/a yes CS 3 n/a n/a 15† NT R
-SMV M41M 90/53 n/a yes CS 5 HE7 HE7 16† D†1
-AS 42 n/a yes CS 3 n/a n/a 17† L†1 M N
-AS 42 aa n/a yes CS 4 n/a n/a 17† G†1 L†2 M N AA†1
-AS 42 cc n/a yes CS 4 n/a n/a 17† G†1 J†1 L†2 M N
-Lince n/a yes CS 2 n/a n/a 18 E
-Lancia 1ZM ® yes CS 6 n/a n/a 19† A†2 F†3 M†1
-Fiat 611A ® yes CS 5 n/a n/a 20† A†2 F†3 M†1
-Fiat 611B ® yes CS 5 HE7 HE7 20† F†2 M†1
-AB 40 n/a yes CS 4 n/a n/a 21 A† I†1 N
-AB 41 n/a yes CS 4 n/a n/a 21† N R
-Autoprot S37 n/a yes CS 4 n/a n/a 22† R
-Autocann 20/65(b) n/a yes CS 4 n/a n/a 23† G†1 N R AA†
-Autocann 65/17(b) n/a yes CS 4 H7[S2+]†[2] H7†[2] 23† G†1 H†2 N
-Autocann 75/27 n/a yes CS 4 AP7 AP7 24 D† N AA†1
-Autocann 90/53 n/a yes CS 4 n/a n/a 24 D† N AA†1
-TL 37 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TM 40 n/a yes cs 5 n/a n/a 25† L†1 M N R
-TP 32 n/a yes cs 5 n/a n/a 25† L†1 M N R
-Autocaretta n/a yes cs 5†1 n/a n/a 26† K†1 N R
-Fiat 508 MC n/a yes cs 2†1 n/a n/a 27† A†2 K†1 N R
-Autocarro L n/a yes cs 6 n/a n/a 28† N R
-Autocarro M n/a yes cs 7 n/a n/a 28† N R
-Autocarro P n/a yes cs 7 n/a n/a 28† N R
+Name Capabilities (effective) # Notes
+----------------- ------------------- ---------------- --- -------------------------------------------------
+L5/21 ® CS 2 ® CS 2 1† A†1
+L5/30 ® CS 2 ® CS 2 1† n/a
+L3/35 ® CS 2 ® CS 2 2† A†1 B†1 E N R
+L3 aa ® CS 2 ® CS 2 3† C E†2 F†1 N R
+L3 cc ® CS 2 ® CS 2 4† E J†1 N
+L3 Lf ® CS 2 ® CS 2 5† E†1 N
+L6/40 CS 2 CS 2 6† N R
+M11/39 ® CS 3 ® CS 3 7† A†1 N
+M13/40 ®† CS 4 ®† CS 4 8† B†1 C†2 N
+M14/41 CS 4 CS 4 9† B†1 C†2 N
+M15/42 CS 4 CS 4 10† B†1 C†2
+MR/35(f) CS 2 CS 2 11† I†1
+SMV M40 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12 C†1 F† H†2 N
+SMV M41 75/18 H7[S2+]†[2] s8 CS 3 H7†[2] s8 CS 3 12† C†1 H†2 N
+SMV M42 75/18 H7 s8 CS 3 H7 s8 CS 3 13 C†
+SMV M42 75/32 H7 s8 CS 3 H7 s8 CS 3 13† C†1
+SMV M43 105/25 no IF H7 s8 CS 4 no IF H7 s8 CS 4 14 C†
+SMV L40 47/32 CS 3 CS 3 15† NT R
+SMV M41M 90/53 HE7 CS 5 HE7 CS 5 16† D†1
+AS 42 CS 3 CS 3 17† L†1 M N
+AS 42 aa CS 4 CS 4 17† G†1 L†2 M N AA†1
+AS 42 cc CS 4 CS 4 17† G†1 J†1 L†2 M N
+Lince CS 2 CS 2 18 E
+Lancia 1ZM ® CS 6 ® CS 6 19† A†2 F†3 M†1
+Fiat 611A ® CS 5 ® CS 5 20† A†2 F†3 M†1
+Fiat 611B ® HE7 CS 5 ® HE7 CS 5 20† F†2 M†1
+AB 40 CS 4 CS 4 21 A† I†1 N
+AB 41 CS 4 CS 4 21† N R
+Autoprot S37 CS 4 CS 4 22† R
+Autocann 20/65(b) CS 4 CS 4 23† G†1 N R AA†
+Autocann 65/17(b) H7[S2+]†[2] CS 4 H7†[2] CS 4 23† G†1 H†2 N
+Autocann 75/27 AP7 CS 4 AP7 CS 4 24 D† N AA†1
+Autocann 90/53 CS 4 CS 4 24 D† N AA†1
+TL 37 cs 5 cs 5 25† L†1 M N R
+TM 40 cs 5 cs 5 25† L†1 M N R
+TP 32 cs 5 cs 5 25† L†1 M N R
+Autocaretta cs 5†[1] cs 5†[1] 26† K†1 N R
+Fiat 508 MC cs 2†[1] cs 2†[1] 27† A†2 K†1 N R
+Autocarro L cs 6 cs 6 28† N R
+Autocarro M cs 7 cs 7 28† N R
+Autocarro P cs 7 cs 7 28† N R
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1940.txt
index 4324aa6..23d1ca3 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1940.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] n/a 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] n/a 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1941.txt
index 6e22436..cc32409 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1941.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] n/a 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] sD5†[1] 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] sD5†[1] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1942.txt
index 6d62a16..2771f65 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1942.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] n/a 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] sD5†[1] 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] sD5†[1] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1943.txt
index cd44146..168c6fb 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1943.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] n/a 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] sD5†[1] 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] sD5†[1] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1944.txt
index c900596..fdd9f14 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1944.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] sD5†[1] 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] sD5†[1] 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] sD5†[1] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] sD5†[1] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1945.txt
index 5975cd0..364efc0 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/japanese/1945.txt
@@ -1,29 +1,29 @@
=== vehicles/japanese/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
---------------------------------------- -------------- ---- ------------------------------------ -------------- ------------- --- -----------------------------
-Type 92A ® yes CS 3 n/a n/a 1† A†1
-Type 92B ® yes CS 3 n/a n/a 1† A†1
-Type 94 ® yes CS 2 n/a n/a 2† n/a
-Type 95 SO-KI ® yes CS 5 n/a n/a 3† n/a
-Type 97A TE-KE ® yes CS 2 n/a n/a 4† n/a
-Type 97B TE-KE ® n/a CS 2 n/a n/a 4† n/a
-Type 95 HA-GO ®†2 yes CS 3 sD5[4+]†[1] sD5†[1] 5† B†1 C†2
-Type 2 KA-MI n/a yes CS 5† n/a n/a 6† n/a
-Type 2 KA-MI (without pontoons) n/a yes CS 5† n/a n/a 6† n/a
-Type 89A CHI-RO ® yes CS 4 n/a n/a 7† A†1
-Type 89B CHI-RO ® yes CS 4 n/a n/a 7† n/a
-Type 97A CHI-HA ®†2 yes CS 4 sD5[1+]†[1] sD5†[1] 8† B†1 C†2
-Type 97B CHI-HA n/a yes CS 4 sD5 sD5 8† n/a
-Type 1 CHI-HE n/a yes CS 5 sD5 sD5 9† n/a
-Type 91 n/a yes CS 6 n/a n/a 10† A†1
-Type 92 n/a yes CS 4 n/a n/a 11† A†1
-Type 1 HO-NI I n/a yes CS 5 WP5 WP5 12† n/a
-Type 4 HO-RO n/a n/a CS 5 (brew up) WP6 WP6 13† n/a
-Type 1 HO-KI n/a yes cs 5 n/a n/a 14† n/a
-Type 98 SHI-KE n/a yes cs 5 n/a n/a 15† n/a
-Type 92 I-KE n/a yes cs 5 n/a n/a 16† n/a
-Type 95 n/a yes cs 2 n/a n/a 17† n/a
-Type 94 n/a yes cs 6 n/a n/a 18 n/a
-Type 97 n/a yes cs 7 n/a n/a 18 n/a
-Vickers 8-in. Costal Defense Gun Turret n/a yes n/a n/a n/a 19† n/a
+Name Capabilities (effective) # Notes
+--------------------------------------- ---------------------- ---------------------- --- -----------------------------
+Type 92A ® CS 3 ® CS 3 1† A†1
+Type 92B ® CS 3 ® CS 3 1† A†1
+Type 94 ® CS 2 ® CS 2 2† n/a
+Type 95 SO-KI ® CS 5 ® CS 5 3† n/a
+Type 97A TE-KE ® CS 2 ® CS 2 4† n/a
+Type 97B TE-KE ® no IF CS 2 ® no IF CS 2 4† n/a
+Type 95 HA-GO ®†[2] sD5[4+]†[1] CS 3 ®†[2] sD5†[1] CS 3 5† B†1 C†2
+Type 2 KA-MI CS 5† CS 5† 6† n/a
+Type 2 KA-MI (without pontoons) CS 5† CS 5† 6† n/a
+Type 89A CHI-RO ® CS 4 ® CS 4 7† A†1
+Type 89B CHI-RO ® CS 4 ® CS 4 7† n/a
+Type 97A CHI-HA ®†[2] sD5[1+]†[1] CS 4 ®†[2] sD5†[1] CS 4 8† B†1 C†2
+Type 97B CHI-HA sD5 CS 4 sD5 CS 4 8† n/a
+Type 1 CHI-HE sD5 CS 5 sD5 CS 5 9† n/a
+Type 91 CS 6 CS 6 10† A†1
+Type 92 CS 4 CS 4 11† A†1
+Type 1 HO-NI I WP5 CS 5 WP5 CS 5 12† n/a
+Type 4 HO-RO no IF WP6 CS 5[brewup] no IF WP6 CS 5[brewup] 13† n/a
+Type 1 HO-KI cs 5 cs 5 14† n/a
+Type 98 SHI-KE cs 5 cs 5 15† n/a
+Type 92 I-KE cs 5 cs 5 16† n/a
+Type 95 cs 2 cs 2 17† n/a
+Type 94 cs 6 cs 6 18 n/a
+Type 97 cs 7 cs 7 18 n/a
+Vickers 8-in. Costal Defense Gun Turret 19† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1940.txt
index 33bcae8..5639ee6 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1940.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1941.txt
index dd86e54..136caf4 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1941.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1942.txt
index f1ab891..d6cbc9d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1942.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1943.txt
index 8bfcb20..27a2801 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1943.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1944.txt
index f94b30e..9e5338d 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1944.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1945.txt
index ed76354..9e20a34 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/polish/1945.txt
@@ -1,21 +1,21 @@
=== vehicles/polish/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- --------------- -------------- ------------- --- ---------------------------------------------
-TKS ® yes CS 2 n/a n/a 1† D
-TKS(L) ® yes CS 2 n/a n/a 1† D
-Vickers Edw(b) ® yes CS 3 n/a n/a 2† A K†1
-Vickers Ejw(b) ® yes CS 3 n/a n/a 2 A
-7TPdw ® yes CS 3 n/a n/a 3† K†1
-7TPjw n/a yes CS 3 n/a n/a 3 n/a
-H35(f) ® yes CS 2 AP10 AP10 4 A E† F
-Peugeot 1918(f) ® yes CS 4 n/a n/a 5 A D G†
-wz.29 "Ursus" ® yes CS 5 n/a n/a 6† n/a
-wz.34-I ® yes CS 2 n/a n/a 7 n/a
-wz.34-II ® yes CS 2 n/a n/a 7 n/a
-De Dion-Bouton(f) n/a yes CS 7 n/a n/a 8† A Q†1 AA†2
-PF 621L SPAA n/a yes CS 5 n/a n/a 9† G†1 Q†2 AA†3
-302T n/a yes CS 3 n/a n/a 10† n/a
-C2P n/a yes cs 4 n/a n/a 11 n/a
-C4P n/a yes cs 5 n/a n/a 12 n/a
-"Taczanka" n/a yes cs 3 n/a n/a 13† Q†1
+Name Capabilities (effective) # Notes
+----------------- -------------- ------------- --- ---------------------------------------------
+TKS ® CS 2 ® CS 2 1† D
+TKS(L) ® CS 2 ® CS 2 1† D
+Vickers Edw(b) ® CS 3 ® CS 3 2† A K†1
+Vickers Ejw(b) ® CS 3 ® CS 3 2 A
+7TPdw ® CS 3 ® CS 3 3† K†1
+7TPjw CS 3 CS 3 3 n/a
+H35(f) ® AP10 CS 2 ® AP10 CS 2 4 A E† F
+Peugeot 1918(f) ® CS 4 ® CS 4 5 A D G†
+wz.29 "Ursus" ® CS 5 ® CS 5 6† n/a
+wz.34-I ® CS 2 ® CS 2 7 n/a
+wz.34-II ® CS 2 ® CS 2 7 n/a
+De Dion-Bouton(f) CS 7 CS 7 8† A Q†1 AA†2
+PF 621L SPAA CS 5 CS 5 9† G†1 Q†2 AA†3
+302T CS 3 CS 3 10† n/a
+C2P cs 4 cs 4 11 n/a
+C4P cs 5 cs 5 12 n/a
+"Taczanka" cs 3 cs 3 13† Q†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1940.txt
index 5befdc0..26abfa1 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1940.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1941.txt
index 2094f80..906f8d7 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1941.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1942.txt
index 0a5f700..d00e296 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1942.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1943.txt
index 4455622..6d1be7e 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1943.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1944.txt
index bb29d9e..dd18194 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1944.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1945.txt
index 0a21be8..a20f060 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/romanian/1945.txt
@@ -1,12 +1,12 @@
=== vehicles/romanian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ----------------- -------------- ------------- --- ------------------
-R-1(t) ® yes CS 2 n/a n/a 1† E
-R-35/45(f) ® yes CS 2 n/a n/a 2 D
-TACAM T-60(r) n/a yes CS 3 n/a n/a 3† E
-TACAM T-60A(r) n/a yes CS 3 n/a n/a 3† E
-TACAM R-2(r) n/a yes CS 3 AP5 AP5 4† E N
-BA-6(r) ® yes CS 4 n/a n/a 5† E
-BA-20(r) ® yes CS 3 n/a n/a 5† E
-Malaxa UE2 n/a yes cs 2†1 n/a n/a 6† F I†1 J
+Name Capabilities (effective) # Notes
+-------------- -------------- ------------- --- ------------------
+R-1(t) ® CS 2 ® CS 2 1† E
+R-35/45(f) ® CS 2 ® CS 2 2 D
+TACAM T-60(r) CS 3 CS 3 3† E
+TACAM T-60A(r) CS 3 CS 3 3† E
+TACAM R-2(r) AP5 CS 3 AP5 CS 3 4† E N
+BA-6(r) ® CS 4 ® CS 4 5† E
+BA-20(r) ® CS 3 ® CS 3 5† E
+Malaxa UE2 cs 2†[1] cs 2†[1] 6† F I†1 J
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt
index 9ba60b8..306d119 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] n/a 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] n/a 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] n/a 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] n/a 16† n/a
-T-43 ®† yes CS 5 A4[2] n/a 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] n/a 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] n/a 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] n/a 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] n/a 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] n/a 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] n/a 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] n/a 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] n/a 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] n/a 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt
index 0c846cd..d544556 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] n/a 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] n/a 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] n/a 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] n/a 16† n/a
-T-43 ®† yes CS 5 A4[2] n/a 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] n/a 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] n/a 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] n/a 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] n/a 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] n/a 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] n/a 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] n/a 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] n/a 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] n/a 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt
index 68163b7..40d4b66 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] A4 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] A4 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
-T-43 ®† yes CS 5 A4[2] A4 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] n/a 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] A4 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] n/a 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] n/a 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] n/a 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] A4 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 A4 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt
index 1bc26cf..07397fa 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] A4 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] A4 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
-T-43 ®† yes CS 5 A4[2] A4 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] n/a 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] A4 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] A4 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] A5 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] A5 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 A5 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] A4 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 A4 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 A4 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt
index 1945211..aa96272 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] A4 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] A4 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
-T-43 ®† yes CS 5 A4[2] A4 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† A5 sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] n/a 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] A4 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] A5 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] A5 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] A5 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 A5 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] A4 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† HE8† sD6 sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 A4 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 HE8† sD6 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt
index b55abf9..f2d5fe1 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt
@@ -1,89 +1,89 @@
=== vehicles/russian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
------------------ ------- ---- ------------------------------------ -------------------------------------- ----------------- ----- ---------------------
-T-37 ® yes CS 2 n/a n/a 1 H† M
-T-27 ® yes CS 2 n/a n/a 1.1† M Q
-T-40 ® yes CS 2 n/a n/a 2† H†
-T-50 ® yes CS 4 A4[2] A4 3 n/a
-T-60 M40 ® yes CS 2 n/a n/a 4 n/a
-T-60 M42 ®† yes CS 2 n/a n/a 4 C†
-T-70 ®† yes CS 2 A4[2] A4 5 C†
-T-26 M33 ® yes CS 3 n/a n/a 6 D I† M P
-T-26 M37/39 ® yes CS 3 n/a n/a 6 D M P
-T-26 M31 ® yes CS 3 n/a n/a 6.1† M P
-T-26 M32 ® yes CS 3 n/a n/a 6.2† M P
-OT-26 ® yes CS 3 (brew up) n/a n/a 6.3† M P
-ST-26 Bridgelayer n/a yes CS 3 n/a n/a 6.4† M
-OT-133 ® yes CS 3 n/a n/a 7† M P
-BT-2A ® yes CS 3 n/a n/a 7.1† M
-BT-5 M34 ® yes CS 3 n/a n/a 8† M P
-BT-7 M37 ® yes CS 3 n/a n/a 9 D I† M P
-BT-7A n/a yes CS 3 AP7 s9 AP7 s9 10 M P
-T-28 M34 ® yes CS 5 s8 s8 11† M
-T-28 M34(L) ® yes CS 5 s8 s8 11.1† M
-T-28E M40 ® yes CS 6 s8 s8 12† M
-T-28E M40(L) ® yes CS 6 s8 s8 12.1† M
-T-34 M40 ® yes CS 5 n/a n/a 13 M
-T-34 M41 ®† yes CS 5 A4[2] A4 14† C† M
-OT-34 ®† n/a CS 4 A2[2] AP7 A2 AP7 15† C† M
-T-34 M43 n/a yes CS 5 A4[2] A4 16† n/a
-T-43 ®† yes CS 5 A4[2] A4 17 C† M
-T-34/85 n/a yes CS 6 A5[4] sD6† A5 sD6† 18† J†
-M4/76(a) n/a yes CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N
-T-44 n/a yes CS 5 A6[5] A6 20 B† M
-T-35 ® yes CS 8 s9 s9 21† M
-SMK n/a yes CS 7 n/a n/a 21.1 M T†
-T-100 n/a yes CS 7 n/a n/a 22.1 M T†
-KV-1 M39/40 n/a yes CS 6 n/a n/a 22† M
-KV-1E n/a yes CS 6 n/a n/a 23 D M
-KV-1 M41 n/a yes CS 6 A4[2] A4 23 D M
-KV-1 M42 n/a yes CS 6 A4[2] A4 23 D M
-KV-2 n/a n/a CS 7 AP9 AP9 24† M
-KV-8 n/a yes CS 6 A4[2] AP7 A4 AP7 15† D M
-KV-1S n/a yes CS 6 A4[2] A4 25† n/a
-KV-85 n/a yes CS 5 A4[3]5[4] A5 26 B†
-IS-2 n/a n/a CS 6 n/a n/a 27 B†
-IS-2m n/a n/a CS 6 n/a n/a 28 B† G†
-IS-3 n/a n/a CS 6 sD6† sD6† 29 G† J†
-SU-76M n/a yes CS 4 (brew up) A5[3] A5 30† n/a
-SU-76i(g) n/a yes CS 5 A5[3] A5 31 K
-SU-122 n/a n/a CS 5 H9 s8 H9 s8 32 n/a
-SU-152 n/a n/a CS 6 n/a n/a 33† n/a
-ISU-122 n/a n/a CS 6 s8 s8 34 G†
-ISU-152 n/a n/a CS 6 n/a n/a 34 G†
-SU-85 n/a yes CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a
-SU-100 n/a yes CS 5 HE7 HE7 36 n/a
-SU-57(a) n/a yes CS 4 A5[3] HE7 A5 HE7 37 K
-BA-20 ® yes CS 3 n/a n/a 38 n/a
-BA-6 ® yes CS 4 A4[2] A4 39 n/a
-BA-64B n/a yes CS 2 n/a n/a 40† A†
-ZSU-37 n/a yes CS 4 n/a n/a 41† A†
-SU-12 n/a yes CS 4 AP7 s8 AP7 s8 42 F†
-GAZ-4M-AA n/a yes CS 4 n/a n/a 43† A†
-ZIS-42-AA n/a yes CS 4 n/a n/a 44 A† F†
-LANO AT ® yes CS 5 A4[2+] A4 44.1 n/a
-LANO AA ® yes CS 5 n/a n/a 44.2† A†1
-IAG-10-AA n/a yes CS 4 AP7 AP7 45 A† F†
-GAZ-67B n/a yes CS 2 n/a n/a 46 L†
-Komsomolet n/a yes CS 2† n/a n/a 46.1† n/a
-STZ-3 n/a yes cs 4 n/a n/a 46.2 n/a
-STZ-5 n/a yes cs 7 n/a n/a 46.3 n/a
-GAZ-MM n/a yes cs 6 n/a n/a 47 n/a
-ZIS-5 n/a yes cs 7 n/a n/a 47 n/a
-IAG-6 n/a yes cs 7 n/a n/a 47 n/a
-NKL-6 n/a yes CS 2† n/a n/a 47.1† S†1
-NKL-16 n/a yes cs 2 n/a n/a 47.1† S†1
-NKL-26 n/a yes CS 2 n/a n/a 47.2† Q S†1
-RF-8-GAZ-98 n/a yes CS 3 n/a n/a 47.3† S†1
-Stuart III(a) n/a yes CS 4 C6 C6 48 N O LL
-Lee(a) n/a yes CS 7 C4† s8† C4† s8† 49† B†1 N O LL
-Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]† s8 WP6† s8 50† N O R†1 LL
-Sherman III(L)(a) n/a yes CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL
-Matilda II(b) n/a yes CS 5 sD6 sD6 51† M†1 N LL
-Valentine V(b) n/a yes CS 4 sM8 sM8 52.1 N LL
-Valentine VIII(b) n/a yes CS 4 HE7 sD6 HE7 sD6 52.2 N LL
-Churchill III(b) n/a yes CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† D7† HE8† sD6 sM8† 53† N LL
-M3A1 Scout Car(a) n/a yes CS 4 n/a n/a 54† N LL
-Jeep GPA(a) n/a yes cs 2 n/a n/a 59 H† L†1
-DUKW(a) n/a yes cs 7 n/a n/a 60† n/a
+Name Capabilities (effective) # Notes
+----------------- ------------------------------------------- ----------------------- ----- ---------------------
+T-37 ® CS 2 ® CS 2 1 H† M
+T-27 ® CS 2 ® CS 2 1.1† M Q
+T-40 ® CS 2 ® CS 2 2† H†
+T-50 ® A4[2] CS 4 ® A4 CS 4 3 n/a
+T-60 M40 ® CS 2 ® CS 2 4 n/a
+T-60 M42 ®† CS 2 ®† CS 2 4 C†
+T-70 ®† A4[2] CS 2 ®† A4 CS 2 5 C†
+T-26 M33 ® CS 3 ® CS 3 6 D I† M P
+T-26 M37/39 ® CS 3 ® CS 3 6 D M P
+T-26 M31 ® CS 3 ® CS 3 6.1† M P
+T-26 M32 ® CS 3 ® CS 3 6.2† M P
+OT-26 ® CS 3[brewup] ® CS 3[brewup] 6.3† M P
+ST-26 Bridgelayer CS 3 CS 3 6.4† M
+OT-133 ® CS 3 ® CS 3 7† M P
+BT-2A ® CS 3 ® CS 3 7.1† M
+BT-5 M34 ® CS 3 ® CS 3 8† M P
+BT-7 M37 ® CS 3 ® CS 3 9 D I† M P
+BT-7A AP7 s9 CS 3 AP7 s9 CS 3 10 M P
+T-28 M34 ® s8 CS 5 ® s8 CS 5 11† M
+T-28 M34(L) ® s8 CS 5 ® s8 CS 5 11.1† M
+T-28E M40 ® s8 CS 6 ® s8 CS 6 12† M
+T-28E M40(L) ® s8 CS 6 ® s8 CS 6 12.1† M
+T-34 M40 ® CS 5 ® CS 5 13 M
+T-34 M41 ®† A4[2] CS 5 ®† A4 CS 5 14† C† M
+OT-34 ®† no IF A2[2] AP7 CS 4 ®† no IF A2 AP7 CS 4 15† C† M
+T-34 M43 A4[2] CS 5 A4 CS 5 16† n/a
+T-43 ®† A4[2] CS 5 ®† A4 CS 5 17 C† M
+T-34/85 A5[4] sD6† CS 6 A5 sD6† CS 6 18† J†
+M4/76(a) A3[4] s8 sM8 CS 6 A3 s8 sM8 CS 6 19† N
+T-44 A6[5] CS 5 A6 CS 5 20 B† M
+T-35 ® s9 CS 8 ® s9 CS 8 21† M
+SMK CS 7 CS 7 21.1 M T†
+T-100 CS 7 CS 7 22.1 M T†
+KV-1 M39/40 CS 6 CS 6 22† M
+KV-1E CS 6 CS 6 23 D M
+KV-1 M41 A4[2] CS 6 A4 CS 6 23 D M
+KV-1 M42 A4[2] CS 6 A4 CS 6 23 D M
+KV-2 no IF AP9 CS 7 no IF AP9 CS 7 24† M
+KV-8 A4[2] AP7 CS 6 A4 AP7 CS 6 15† D M
+KV-1S A4[2] CS 6 A4 CS 6 25† n/a
+KV-85 A4[3]5[4] CS 5 A5 CS 5 26 B†
+IS-2 no IF CS 6 no IF CS 6 27 B†
+IS-2m no IF CS 6 no IF CS 6 28 B† G†
+IS-3 no IF sD6† CS 6 no IF sD6† CS 6 29 G† J†
+SU-76M A5[3] CS 4[brewup] A5 CS 4[brewup] 30† n/a
+SU-76i(g) A5[3] CS 5 A5 CS 5 31 K
+SU-122 no IF H9 s8 CS 5 no IF H9 s8 CS 5 32 n/a
+SU-152 no IF CS 6 no IF CS 6 33† n/a
+ISU-122 no IF s8 CS 6 no IF s8 CS 6 34 G†
+ISU-152 no IF CS 6 no IF CS 6 34 G†
+SU-85 A5[3] HE7 s7 CS 5 A5 HE7 s7 CS 5 35 n/a
+SU-100 HE7 CS 5 HE7 CS 5 36 n/a
+SU-57(a) A5[3] HE7 CS 4 A5 HE7 CS 4 37 K
+BA-20 ® CS 3 ® CS 3 38 n/a
+BA-6 ® A4[2] CS 4 ® A4 CS 4 39 n/a
+BA-64B CS 2 CS 2 40† A†
+ZSU-37 CS 4 CS 4 41† A†
+SU-12 AP7 s8 CS 4 AP7 s8 CS 4 42 F†
+GAZ-4M-AA CS 4 CS 4 43† A†
+ZIS-42-AA CS 4 CS 4 44 A† F†
+LANO AT ® A4[2+] CS 5 ® A4 CS 5 44.1 n/a
+LANO AA ® CS 5 ® CS 5 44.2† A†1
+IAG-10-AA AP7 CS 4 AP7 CS 4 45 A† F†
+GAZ-67B CS 2 CS 2 46 L†
+Komsomolet CS 2† CS 2† 46.1† n/a
+STZ-3 cs 4 cs 4 46.2 n/a
+STZ-5 cs 7 cs 7 46.3 n/a
+GAZ-MM cs 6 cs 6 47 n/a
+ZIS-5 cs 7 cs 7 47 n/a
+IAG-6 cs 7 cs 7 47 n/a
+NKL-6 CS 2† CS 2† 47.1† S†1
+NKL-16 cs 2 cs 2 47.1† S†1
+NKL-26 CS 2 CS 2 47.2† Q S†1
+RF-8-GAZ-98 CS 3 CS 3 47.3† S†1
+Stuart III(a) C6 CS 4 C6 CS 4 48 N O LL
+Lee(a) C4† s8† CS 7 C4† s8† CS 7 49† B†1 N O LL
+Sherman III(a) WP6[J4+]† s8 CS 5[brewup] WP6† s8 CS 5[brewup] 50† N O R†1 LL
+Sherman III(L)(a) WP7 s5 sM8 CS 6[brewup] WP7 s5 sM8 CS 6[brewup] 50.1 N O R† LL
+Matilda II(b) sD6 CS 5 sD6 CS 5 51† M†1 N LL
+Valentine V(b) sM8 CS 4 sM8 CS 4 52.1 N LL
+Valentine VIII(b) HE7 sD6 CS 4 HE7 sD6 CS 4 52.2 N LL
+Churchill III(b) D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† CS 7 D7† HE8† sD6 sM8† CS 7 53† N LL
+M3A1 Scout Car(a) CS 4 CS 4 54† N LL
+Jeep GPA(a) cs 2 cs 2 59 H† L†1
+DUKW(a) cs 7 cs 7 60† n/a
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1940.txt
index 50199a9..aa71e29 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1940.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- ----------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1941.txt
index f4813d1..71514a2 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1941.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- ----------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1942.txt
index 56037bc..2ea45ca 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1942.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- ----------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1943.txt
index e60f541..ec96104 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1943.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 A4 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- -------------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] A4 HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1944.txt
index 28d137c..0dc3199 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1944.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 A3 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- -------------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] A3 HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1945.txt
index 0ffab99..6fa2c09 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/slovakian/1945.txt
@@ -1,11 +1,11 @@
=== vehicles/slovakian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
--------------- ------- ---- ------------------------------------ -------------------- ------------- --- ---------------------------------
-T vz 33(t) ® yes CS 2 n/a n/a 17† K†1 E F G†2
-LT vz 34 ® yes CS 2 n/a n/a 18 n/a
-PzKpfw IIA(g) n/a yes CS 3 sD6 sD6 19 E
-LT vz 40(t) n/a yes CS 4 sD6 sD6 20† K†1 E
-Marder III(t)H n/a yes CS 4 (brew up) A4[3]3[4] HE7 s7 sD6 A3 HE7 s7 sD6 21† E
-Kfz 1(g) n/a yes cs 2†1 n/a n/a 22† E L†2 I†1
-SdKfz 2(g) n/a yes cs 2 n/a n/a 23† E L†1
+Name Capabilities (effective) # Notes
+-------------- --------------------------------- -------------------------- --- ---------------------------------
+T vz 33(t) ® CS 2 ® CS 2 17† K†1 E F G†2
+LT vz 34 ® CS 2 ® CS 2 18 n/a
+PzKpfw IIA(g) sD6 CS 3 sD6 CS 3 19 E
+LT vz 40(t) sD6 CS 4 sD6 CS 4 20† K†1 E
+Marder III(t)H A4[3]3[4] HE7 s7 sD6 CS 4[brewup] A3 HE7 s7 sD6 CS 4[brewup] 21† E
+Kfz 1(g) cs 2†[1] cs 2†[1] 22† E L†2 I†1
+SdKfz 2(g) cs 2 cs 2 23† E L†1
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1940.txt
index d869b9b..1b168fd 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1940.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1940.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1940 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1941.txt
index 73087d3..72a41ba 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1941.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1941.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1941 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1942.txt
index b4a458a..ade715c 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1942.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1942.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1942 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1943.txt
index a8fc855..b5d1755 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1943.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1943.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1943 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1944.txt
index 96db758..3ad9812 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1944.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1944.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1944 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1945.txt
index 94b09ea..07a9476 100644
--- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1945.txt
+++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/yugoslavian/1945.txt
@@ -1,10 +1,10 @@
=== vehicles/yugoslavian/1945 ===
-Name Radio IF Crew survival Capabilities (effective) # Notes
-------------- ------- ---- --------------- -------------- ------------- --- ----------------------------------
-T-32 ® yes CS 2 n/a n/a 19 D
-M3A1(a) n/a yes CS 4 C3† C3† 20† A B C L
-M3A3(a) n/a yes CS 4 C3† sD3 C3† sD3 20† A B C L
-M3(a) PaK 40 n/a yes CS 2 n/a n/a 21† A H†1 L
-M3(a) FlaK 38 n/a yes CS 2 n/a n/a 22† A H†1 L AA†2
-AEC II(b) n/a yes CS 4 D4 HE5 sM8 D4 HE5 sM8 23 A G† L
+Name Capabilities (effective) # Notes
+------------- --------------- --------------- --- ----------------------------------
+T-32 ® CS 2 ® CS 2 19 D
+M3A1(a) C3† CS 4 C3† CS 4 20† A B C L
+M3A3(a) C3† sD3 CS 4 C3† sD3 CS 4 20† A B C L
+M3(a) PaK 40 CS 2 CS 2 21† A H†1 L
+M3(a) FlaK 38 CS 2 CS 2 22† A H†1 L AA†2
+AEC II(b) D4 HE5 sM8 CS 4 D4 HE5 sM8 CS 4 23 A G† L
diff --git a/vasl_templates/webapp/tests/test_capabilities.py b/vasl_templates/webapp/tests/test_capabilities.py
index d3797c8..9db9be2 100644
--- a/vasl_templates/webapp/tests/test_capabilities.py
+++ b/vasl_templates/webapp/tests/test_capabilities.py
@@ -3,8 +3,15 @@
import re
import pytest
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+from vasl_templates.webapp.tests.utils import \
+ init_webapp, select_menu_option, select_tab, click_dialog_button, \
+ find_child, find_children, wait_for_clipboard
from vasl_templates.webapp.tests.test_vo_reports import get_vo_report
+from vasl_templates.webapp.tests.test_vehicles_ordnance import add_vo
+from vasl_templates.webapp.tests.test_scenario_persistence import save_scenario, load_scenario
# ---------------------------------------------------------------------
@@ -17,225 +24,237 @@ def test_month_capabilities( webapp, webdriver ):
# Sherman III(a): WP6(J4+)† s8
vehicle = [ "russian", "vehicles", "Sherman III(a)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP6\u2020 s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP6\u2020 s8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP6[!] s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP6[!] s8 CS 5 [brewup]" )
# Churchill III(b): D6(J4)/7(5)† ; HE7(F3)/8(4+)† ; sD6(4+) ; sM8†
vehicle = [ "russian", "vehicles", "Churchill III(b)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8\u2020" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8\u2020" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7\u2020 sM8\u2020" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8\u2020 sD6 sM8\u2020" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "D6\u2020 HE8\u2020 sD6 sM8\u2020" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7\u2020 HE8\u2020 sD6 sM8\u2020" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8[!] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8[!] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7[!] sM8[!] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8[!] sD6 sM8[!] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "D6[!] HE8[!] sD6 sM8[!] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7[!] HE8[!] sD6 sM8[!] CS 7" )
# M3A1 37mm AT Gun: NT, QSU, C7(A2+)†1
ordnance = [ "american", "ordnance", "M3A1 37mm AT Gun" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "07/1942", "NT QSU" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1942", "NT QSU C7\u20201" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1942", "NT QSU C7[!1]" )
# M1 57mm AT Gun: NT, QSU, HE7(J4E)/7(5)†, D4(J4+E)†
ordnance = [ "american", "ordnance", "M1 57mm AT Gun" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D4\u2020 HE7\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D4[!] HE7[!]" )
_check_capabilities( webdriver, webapp, *ordnance, "PTO", "06/1944", "NT QSU" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D4\u2020 HE7\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU HE7\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D4[!] HE7[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU HE7[!]" )
# M3: C7(A2+)†2
vehicle = [ "american", "vehicles", "M3" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1941", "n/a", (1,3) )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1942", "n/a", (1,3) )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1942", "C7\u20202", (1,3) )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "C7\u20202", (1,3) )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1941", "CS 4", (1,3) )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1942", "CS 4", (1,3) )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1942", "C7[!2] CS 4", (1,3) )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "C7[!2] CS 4", (1,3) )
# M4/M4A1/M4A2/M4A3: WP7(J4+)†3 s5(J4+) sM5(4+)
for vo_name in ("M4","M4A1","M4A2","M4A3"):
vehicle = [ "american", "vehicles", vo_name ]
- ref = "\u2020{}".format( 2 if vo_name == "M4A2" else 3 )
+ ref = "[!{}]".format( 2 if vo_name == "M4A2" else 3 )
sM = 4 if vo_name == "M4A3" else 5
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "n/a" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM{}".format(sM) )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7{} s5 sM{}".format(ref,sM) )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7{} s5 sM{}".format(ref,sM) )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM{} CS 5 [brewup]".format(sM) )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "06/1944", "WP7{} s5 sM{} CS 5 [brewup]".format(ref,sM)
+ )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "01/1945", "WP7{} s5 sM{} CS 5 [brewup]".format(ref,sM)
+ )
# M4A3E2 (L): A4(4)/5(5), s5(5)
vehicle = [ "american", "vehicles", "M4A3E2 (L)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A4 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1944", "A4 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5 s5 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5 s5 sM8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A4 sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1944", "A4 sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5 s5 sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5 s5 sM8 CS 6" )
# M4A1(76)W & M4A3(76)W: A4(A4)/5(5)†2, s5(5)
for vo_name in ("M4A1(76)W","M4A3(76)W"):
vehicle = [ "american", "vehicles", vo_name ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A4\u20202 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5\u20202 s5 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5\u20202 s5 sM8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A4[!2] sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5[!2] s5 sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5[!2] s5 sM8 CS 6" )
# Sherman Crab: s5(J4+); WP7(J4+)†2
vehicle = [ "american", "vehicles", "Sherman Crab" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM4" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM4" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7\u20202 s5 sM4" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7\u20202 s5 sM4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM4 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM4 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7[!2] s5 sM4 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7[!2] s5 sM4 CS 5 [brewup]" )
# M8 HMC: C4(4+)†1
vehicle = [ "american", "vehicles", "M8 HMC" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "H9 WP9" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "C4\u20201 H9 WP9" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "C4\u20201 H9 WP9" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "H9 WP9 CS 5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "C4[!1] H9 WP9 CS 5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "C4[!1] H9 WP9 CS 5" )
# OML 2-in. Mortar: IR(2)+†
ordnance = [ "british", "ordnance", "OML 2-in. Mortar" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "4PP s7" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "4PP IR\u2020 s7" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "4PP IR\u2020 s7" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "4PP IR[!] s7" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "4PP IR[!] s7" )
# OML 3-in. Mortar: IR(2)+†1
ordnance = [ "british", "ordnance", "OML 3-in. Mortar" ]
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "NT QSU WP7 s8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU IR\u20201 WP7 s8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "NT QSU IR\u20201 WP7 s8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "NT QSU WP7 s8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU IR[!1] WP7 s8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "NT QSU IR[!1] WP7 s8[!]" )
# OQF 6-Pounder 7-cwt: D6(J4E)7(5)† HE7(F3)8(4+)†
ordnance = [ "british", "ordnance", "OQF 6-Pounder 7-cwt" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1942", "NT QSU" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943", "NT QSU" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "02/1943", "NT QSU HE7\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D6\u2020 HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "06/1944", "NT QSU HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D7\u2020 HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU D7\u2020 HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "02/1943", "NT QSU HE7[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D6[!] HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "06/1944", "NT QSU HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D7[!] HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU D7[!] HE8[!]" )
# OQF 17-Pounder: D5(S4)6(5)† HE8(J4+)†
ordnance = [ "british", "ordnance", "OQF 17-Pounder" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "09/1944", "NT D5\u2020 HE8\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT D6\u2020 HE8\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "09/1944", "NT D5[!] HE8[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT D6[!] HE8[!]" )
# Crusader III: HE7(F3+)†1
vehicle = [ "british", "vehicles", "Crusader III" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sD7 sM8\u20202" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sD7 sM8\u20202" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sD7 sM8[!2] CS 3 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sD7 sM8[!2] CS 3 [brewup]" )
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "02/1943", "HE7\u20201 sD7 sM8\u20202"
+ "ETO", "02/1943", "HE7[!1] sD7 sM8[!2] CS 3 [brewup]"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "01/1944", "HE7\u20201 sD7 sM8\u20202"
+ "ETO", "01/1944", "HE7[!1] sD7 sM8[!2] CS 3 [brewup]"
)
# Sherman II(a)/III(a)/V(a): WP6(J4+)†3
for vo_name in ("Sherman II(a)","Sherman III(a)","Sherman V(a)"):
vehicle = [ "british", "vehicles", vo_name ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD6" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD6" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP6\u20203 s8 sD6" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP6\u20203 s8 sD6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD6 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD6 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "06/1944", "WP6[!3] s8 sD6 CS 5 [brewup]"
+ )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "01/1945", "WP6[!3] s8 sD6 CS 5 [brewup]"
+ )
# Sherman IIC(a)/VC(a): D5(S4)6(5)†2
for vo_name in ("Sherman IIC(a)","Sherman VC(a)"):
vehicle = [ "british", "vehicles", vo_name ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "D5\u20202 HE7 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D6\u20202 HE7 sM8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sM8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sM8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "09/1944", "D5[!2] HE7 sM8 CS 5 [brewup]"
+ )
+ _check_capabilities( webdriver, webapp, *vehicle,
+ "ETO", "01/1945", "D6[!2] HE7 sM8 CS 5 [brewup]"
+ )
# Challenger: D5(S4)6(5)†1
vehicle = [ "british", "vehicles", "Challenger" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sD7 sM8\u20202" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sD7 sM8\u20202" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sD7 sM8[!2] CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sD7 sM8[!2] CS 6" )
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "09/1944", "D5\u20201 HE7 sD7 sM8\u20202"
+ "ETO", "09/1944", "D5[!1] HE7 sD7 sM8[!2] CS 6"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "01/1945", "D6\u20201 HE7 sD7 sM8\u20202"
+ "ETO", "01/1945", "D6[!1] HE7 sD7 sM8[!2] CS 6"
)
# Churchill IV: D6(J4)7(5)†2 HE7(F3)8(4)+†1 sD6(4+)
vehicle = [ "british", "vehicles", "Churchill IV" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8\u20203" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8\u20203" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8[!3] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8[!3] CS 7" )
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "02/1943", "HE7\u20201 sM8\u20203"
+ "ETO", "02/1943", "HE7[!1] sM8[!3] CS 7"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "05/1944", "HE8\u20201 sD6 sM8\u20203"
+ "ETO", "05/1944", "HE8[!1] sD6 sM8[!3] CS 7"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "06/1944", "D6\u20202 HE8\u20201 sD6 sM8\u20203"
+ "ETO", "06/1944", "D6[!2] HE8[!1] sD6 sM8[!3] CS 7"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "01/1945", "D7\u20202 HE8\u20201 sD6 sM8\u20203"
+ "ETO", "01/1945", "D7[!2] HE8[!1] sD6 sM8[!3] CS 7"
)
# Churchill VI: WP6(J4+)†1
vehicle = [ "british", "vehicles", "Churchill VI" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD7 sM8\u20202" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD7 sM8\u20202" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD7 sM8[!2] CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD7 sM8[!2] CS 7" )
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "06/1944", "WP6\u20201 s8 sD7 sM8\u20202"
+ "ETO", "06/1944", "WP6[!1] s8 sD7 sM8[!2] CS 7"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "01/1945", "WP6\u20201 s8 sD7 sM8\u20202"
+ "ETO", "01/1945", "WP6[!1] s8 sD7 sM8[!2] CS 7"
)
# Deacon: HE7(F3+)†2
vehicle = [ "british", "vehicles", "Deacon" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "n/a" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "n/a" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7\u20202" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "HE7\u20202" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "CS 5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "CS 5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7[!2] CS 5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "HE7[!2] CS 5" )
# Wolverine(a): A5(S4)6(5)†1 s5(5)
vehicle = [ "british", "vehicles", "Wolverine(a)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "A5\u20201 HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u20201 HE7 s5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "A5[!1] HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6[!1] HE7 s5 CS 7" )
# Achilles(a): D6(S4)7(5)†1
vehicle = [ "british", "vehicles", "Achilles(a)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "D6\u20201 HE7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7\u20201 HE7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "D6[!1] HE7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7[!1] HE7 CS 7" )
# AEC II: D6(J4)7(5)†2 HE7(3)8(4)+†1
vehicle = [ "british", "vehicles", "AEC II" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "HE7\u20201 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8\u20201 sM8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8 CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "HE7[!1] sM8 CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8[!1] sM8 CS 4" )
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "06/1944", "D6\u20202 HE8\u20201 sM8"
+ "ETO", "06/1944", "D6[!2] HE8[!1] sM8 CS 4"
)
_check_capabilities( webdriver, webapp, *vehicle,
- "ETO", "01/1945", "D7\u20202 HE8\u20201 sM8"
+ "ETO", "01/1945", "D7[!2] HE8[!1] sM8 CS 4"
)
- # M3C GMC(a): WP7(J4+)†1
+ # M3 GMC(a): WP7(J4+)†1
vehicle = [ "british", "vehicles", "M3 GMC(a)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7\u20201 s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7\u20201 s8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7[!1] s8 CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7[!1] s8 CS 4" )
# Cannone da 47/32: Towed(A1+)†
ordnance = [ "italian", "ordnance", "Cannone da 47/32" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1940", "NT QSU no Gunshield" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "07/1941", "NT QSU no Gunshield" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1941", "NT QSU no Gunshield Towed\u2020" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU no Gunshield Towed\u2020" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1941", "NT QSU no Gunshield Towed[!]" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU no Gunshield Towed[!]" )
# Cannone da 65/17, 75/27, 75/32 + Obice da 75/18: H6(S2+)†1
for vo_name in ("Cannone da 65/17", "Cannone da 75/27","Cannone da 75/32","Obice da 75/18"):
@@ -244,7 +263,7 @@ def test_month_capabilities( webapp, webdriver ):
assert "H6" not in val
assert _get_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1942" ) == val
val2 = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "09/1942" )
- assert "H6\u20201" in val2
+ assert "H6[!1]" in val2
assert _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1943" ) == val2
# SMV M40 75/18, SMV M41 75/18, Autocann 65/17(b): H7(S2+)†2
@@ -254,29 +273,29 @@ def test_month_capabilities( webapp, webdriver ):
assert "H7" not in val
assert _get_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1942" ) == val
val2 = _get_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1942" )
- assert "H7\u20202" in val2
+ assert "H7[!2]" in val2
assert _get_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943" ) == val2
# M4A4(a): WP7(J4+)†
vehicle = [ "chinese", "vehicles", "M4A4(a)" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7\u2020 s8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7\u2020 s8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7[!] s8 CS 5 [brewup]" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7[!] s8 CS 5 [brewup]" )
# 81 Krh/32: s8(N1)†
ordnance = [ "finnish", "ordnance", "81 Krh/32" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1940", "NT QSU 5PP dm" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "10/1941", "NT QSU 5PP dm" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "11/1941", "NT QSU s8\u2020 5PP dm" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU s8\u2020 5PP dm" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "11/1941", "NT QSU s8[!] 5PP dm" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1942", "NT QSU s8[!] 5PP dm" )
# 76 RK/27(r): H6J4+†
ordnance = [ "finnish", "ordnance", "76 RK/27(r)" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT QSU s6" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU s6" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU H6\u2020 s6" )
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU H6\u2020 s6" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU H6[!] s6" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU H6[!] s6" )
# 105 H/33(g) ; 105 H/41(t): H6A4+†
for vo_name in ("105 H/33(g)","105 H/41(t)"):
@@ -286,7 +305,7 @@ def test_month_capabilities( webapp, webdriver ):
assert _get_capabilities( webdriver, webapp, *ordnance, "ETO", "07/1944" ) == val
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1944" )
print(vo_name)
- assert "H6\u2020" in val
+ assert "H6[!]" in val
assert _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945" ) == val
# ---------------------------------------------------------------------
@@ -304,69 +323,69 @@ def test_theater_capabilities( webapp, webdriver ):
_check_capabilities( webdriver, webapp, *ordnance , "ETO", "01/1944", "NT H6 WP8 s7" )
_check_capabilities( webdriver, webapp, *ordnance , "ETO", "01/1945", "NT H6 WP8 s7" )
_check_capabilities( webdriver, webapp, *ordnance , "PTO", "12/1943", "NT H6 WP8 s7" )
- _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1944", "NT C7\u20201 H6 WP8 s7" )
- _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1945", "NT C7\u20201 H6 WP8 s7" )
+ _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1944", "NT C7[!1] H6 WP8 s7" )
+ _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1945", "NT C7[!1] H6 WP8 s7" )
# M3 105mm Howitzer: C7(P)†1
ordnance = [ "american", "ordnance", "M3 105mm Howitzer" ]
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", "NT H7 WP8 s7" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1940", "NT C7\u20201 H7 WP8 s7" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1940", "NT C7[!1] H7 WP8 s7" )
# M2A4: C10(P)†1
vehicle = [ "american", "vehicles", "M2A4" ]
- _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10\u20201" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "n/a" )
+ _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10[!1] CS 4" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "CS 4" )
# M4(105) & M4A3(105): C7P†1
for vo_name in ("M4(105)","M4A3(105)"):
vehicle = [ "american", "vehicles", vo_name ]
- _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u20201 H9 WP9 s7 sM8" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H9 WP9 s7 sM8" )
+ _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7[!1] H9 WP9 s7 sM8 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H9 WP9 s7 sM8 CS 6" )
# NOTE: We do a bit of hackery for the APCR specification for the M10 GMC and M18 GMC,
# to flag them as ETO-only, so we make sure everything's working properly here.
# M10 GMC: A(E)5(A4)/6(5)†1
vehicle = [ "american", "vehicles", "M10 GMC" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A5\u20201 sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u20201 s5 sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sP5 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A5[!1] sP5 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6[!1] s5 sP5 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5 CS 7" )
# M18 GMC: A(E)5(4)/6(5)†1
vehicle = [ "american", "vehicles", "M18 GMC" ]
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A5\u20201 sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u20201 s5 sP5" )
- _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A5[!1] sP5 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6[!1] s5 sP5 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5 CS 6" )
# M7 HMC: C7(P)†1
vehicle = [ "american", "vehicles", "M7 HMC" ]
- _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u20201 H7 WP8 s7" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H7 WP8 s7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7[!1] H7 WP8 s7 CS 7" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H7 WP8 s7 CS 7" )
# LVT(A)1: C10(P)†2
vehicle = [ "american", "vehicles", "LVT(A)1" ]
- _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10\u20202" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "n/a" )
+ _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10[!2] CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "CS 6" )
# LVT(A)4: C7(P)†3
vehicle = [ "american", "vehicles", "LVT(A)4" ]
- _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u20203 H8 WP9" )
- _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H8 WP9" )
+ _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7[!3] H8 WP9 CS 6" )
+ _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H8 WP9 CS 6" )
# OQF 3.7-in. Howitzer: H6(3+P)†
ordnance = [ "british", "ordnance", "OQF 3.7-in. Howitzer" ]
_check_capabilities( webdriver, webapp, *ordnance, "PTO", "12/1942", "NT QSU WP7 s8" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1943", "NT QSU H6\u2020 WP7 s8" )
- _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1944", "NT QSU H6\u2020 WP7 s8" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1943", "NT QSU H6[!] WP7 s8" )
+ _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1944", "NT QSU H6[!] WP7 s8" )
_check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1944", "NT QSU WP7 s8" )
# Obice da 149/13: WP6(B)
ordnance = [ "chinese", "ordnance", "Obice da 149/13" ]
- _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", "NT h-dC\u2020 s5" )
- _check_capabilities( webdriver, webapp, *ordnance, "Burma", "01/1940", "NT h-dC\u2020 WP6\u2020 s5" )
+ _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", "NT h-dC[!] s5" )
+ _check_capabilities( webdriver, webapp, *ordnance, "Burma", "01/1940", "NT h-dC[!] WP6[!] s5" )
# ---------------------------------------------------------------------
@@ -380,35 +399,138 @@ def test_nationality_capabilities( webapp, webdriver ):
# G obr. 38: s5(1-2R)†
ordnance = [ "romanian", "ordnance", "G obr. 38" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", merge_common=True )
- assert not re.search( r"s5\u2020", val )
+ assert "s5[!]" not in val
ordnance = [ "romanian", "ordnance", "G obr. 38" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1941", merge_common=True )
- assert re.search( r"s5\u2020", val )
+ assert "s5[!]" in val
ordnance = [ "slovakian", "ordnance", "G obr. 38" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1941", merge_common=True )
- assert not re.search( r"s5\u2020", val )
+ assert "s5[!]" not in val
# Skoda M35: C7(CS)†
ordnance = [ "croatian", "ordnance", "Skoda M35" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", merge_common=True )
- assert re.search( r"C7\u2020", val )
+ assert "C7[!]" in val
ordnance = [ "slovakian", "ordnance", "Skoda M35" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", merge_common=True )
- assert re.search( r"C7\u2020", val )
+ assert "C7[!]" in val
ordnance = [ "bulgarian", "ordnance", "Skoda M35" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", merge_common=True )
- assert not re.search( r"C7\u2020", val )
+ assert "C7[!]" not in val
# Kanon PUV vz. 37(t): A4(1S)
ordnance = [ "slovakian", "ordnance", "Kanon PUV vz. 37(t)" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", merge_common=True )
- assert not re.search( r"A4", val )
+ assert "A4" not in val
ordnance = [ "slovakian", "ordnance", "Kanon PUV vz. 37(t)" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1941", merge_common=True )
- assert re.search( r"A4", val )
+ assert "A4" in val
ordnance = [ "croatian", "ordnance", "Kanon PUV vz. 37(t)" ]
val = _get_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1941", merge_common=True )
- assert not re.search( r"A4", val )
+ assert "A4" not in val
+
+# ---------------------------------------------------------------------
+
+def test_custom_capabilities( webapp, webdriver ): #pylint: disable=too-many-statements
+ """Test custom capabilities."""
+
+ # initialize
+ init_webapp( webapp, webdriver, scenario_persistence=1 )
+
+ # add a vehicle
+ add_vo( webdriver, "vehicles", 1, "another german vehicle" )
+
+ snippet_btn = find_child( "button[data-id='ob_vehicles_1']" )
+ def extract_capabilities( clipboard ):
+ """Extract the capabilities."""
+ mo = re.search( r"^- capabilities: (.*)$", clipboard, re.MULTILINE )
+ return mo.group(1)
+ def check_snippet( expected ):
+ """Check the vehicle's snippet."""
+ snippet_btn.click()
+ wait_for_clipboard( 2, expected, transform=extract_capabilities )
+ def check_capabilities_in_dialog( expected ):
+ """Check the vehicle's capabilities."""
+ elems = find_children( "#vo_capabilities-sortable li" )
+ elems2 = [ find_child("input[type='text']",c) for c in elems ]
+ assert [ e.get_attribute("value") for e in elems2 ] == expected
+ return elems
+
+ # check the vehicle's snippet
+ check_snippet( '"QSU" "cs 4 (brew up)"' )
+
+ # edit the vehicle's capabilities
+ vehicles_sortable = find_child( "#ob_vehicles-sortable_1" )
+ elems = find_children( "li", vehicles_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ elems = check_capabilities_in_dialog( [ "QSU", "cs 4 (brew up)" ] )
+
+ # edit one of the capabilities
+ elem = find_child( "input[type='text']", elems[0] )
+ elem.clear()
+ elem.send_keys( "QSU (modified)" )
+
+ # delete a capability
+ ActionChains(webdriver).key_down( Keys.CONTROL ).click( elems[1] ).key_up( Keys.CONTROL ).perform()
+
+ # add a new capability
+ elem = find_child( "#vo_capabilities-add" )
+ elem.click()
+ elems = find_children( "#vo_capabilities-sortable input[type='text']" )
+ assert len(elems) == 2
+ elems[1].send_keys( "a new capability" )
+
+ # save the changes and check the vehicle's snippet
+ click_dialog_button( "OK" )
+ check_snippet( '"QSU (modified)" "a new capability"' )
+
+ # save the scenario
+ saved_scenario = save_scenario()
+ assert len(saved_scenario["OB_VEHICLES_1"]) == 1
+ assert saved_scenario["OB_VEHICLES_1"][0]["custom_capabilities"] == [ "QSU (modified)", "a new capability" ]
+
+ # reload the scenario, and check the vehicle's snippet
+ select_menu_option( "new_scenario" )
+ load_scenario( saved_scenario )
+ select_tab( "ob1" )
+ check_snippet( '"QSU (modified)" "a new capability"' )
+
+ # make sure the capabilities are loaded correcly when editing the vehicle
+ elems = find_children( "li", vehicles_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ elems = check_capabilities_in_dialog( [ "QSU (modified)", "a new capability" ] )
+
+ # delete all capabilities (this will revert the capabilities back to default)
+ for elem in elems:
+ ActionChains(webdriver).key_down( Keys.CONTROL ).click( elem ).key_up( Keys.CONTROL ).perform()
+ click_dialog_button( "OK" )
+ check_snippet( '"QSU" "cs 4 (brew up)"')
+
+ # make sure the custom capabilities are no longer saved in the scenario
+ saved_scenario2 = save_scenario()
+ assert len(saved_scenario2["OB_VEHICLES_1"]) == 1
+ assert "custom_capabilities" not in saved_scenario2["OB_VEHICLES_1"][0]
+
+ # reload the scenario, and edit the vehicle's capabilities to be the default
+ load_scenario( saved_scenario )
+ select_tab( "ob1" )
+ elems = find_children( "li", vehicles_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ elems = find_children( "#vo_capabilities-sortable input[type='text']" )
+ assert len(elems) == 2
+ elems[0].clear()
+ elems[0].send_keys( "QSU" )
+ elems[1].clear()
+ elems[1].send_keys( "cs 4 (brew up)" )
+ click_dialog_button( "OK" )
+
+ # make sure the custom capabilities are no longer saved in the scenario
+ saved_scenario = save_scenario()
+ assert len(saved_scenario["OB_VEHICLES_1"]) == 1
+ assert "custom_capabilities" not in saved_scenario["OB_VEHICLES_1"][0]
# ---------------------------------------------------------------------
@@ -450,11 +572,9 @@ def _get_capabilities( webdriver, webapp,
assert len(results) == 1+expected_rows
# check the capabilities
- if vo_type == "vehicles":
- assert "Capabilities" in results[0][4]
- return results[row_no][5]
- if vo_type == "ordnance":
- assert "Capabilities" in results[0][1]
- return results[row_no][2]
- assert False
- return None
+ assert "Capabilities" in results[0][1]
+ capabilities = results[row_no][2]
+ capabilities = capabilities.replace( "(brew up)", "[brewup]" )
+ capabilities = re.sub( "\u2020(\\d)", lambda mo: "[!{}]".format(mo.group(1)), capabilities )
+ capabilities = capabilities.replace( "\u2020", "[!]" )
+ return capabilities
diff --git a/vasl_templates/webapp/tests/test_vehicles_ordnance.py b/vasl_templates/webapp/tests/test_vehicles_ordnance.py
index 614c63c..9583685 100644
--- a/vasl_templates/webapp/tests/test_vehicles_ordnance.py
+++ b/vasl_templates/webapp/tests/test_vehicles_ordnance.py
@@ -143,15 +143,16 @@ def test_snippets( webapp, webdriver ):
add_vo( webdriver, vo_type, 1, "a german {}".format(vo_type) )
btn = find_child( "button[data-id='ob_{}_1']".format( vo_type ) )
btn.click()
+ caps = '"QSU" "IR" "A1" "H2" "can do other stuff"'
+ if vo_type == "vehicles":
+ caps += ' "CS 5"'
expected = [
'[German] ; width=',
'[*] a german {}: #=1'.format( vo_type0 ),
'- notes: "A" "B†"',
- '- capabilities: "QSU" "IR" "A1" "H2" "can do other stuff"',
- '- raw capabilities: "QSU" "IR" "A1" "H2" "can do other stuff"'
+ '- capabilities: {}'.format( caps ),
+ '- raw capabilities: {}'.format( caps ),
]
- if vo_type == "vehicles":
- expected.insert( 3, "- CS 5" )
wait_for_clipboard( 2, "\n".join(expected) )
delete_vo( vo_type, 1, "a german {}".format(vo_type0), webdriver )
@@ -159,14 +160,15 @@ def test_snippets( webapp, webdriver ):
add_vo( webdriver, vo_type, 1, "another german {}".format(vo_type) )
btn = find_child( "button[data-id='ob_{}_1']".format( vo_type ) )
btn.click()
+ caps = '"QSU"'
+ if vo_type == "vehicles":
+ caps += ' "cs 4 (brew up)"'
expected = [
'[German] ; width=',
'[*] another german {}: #=2'.format( vo_type0 ),
- '- capabilities: "QSU"',
- '- raw capabilities: "QSU"'
+ '- capabilities: {}'.format( caps ),
+ '- raw capabilities: {}'.format( caps ),
]
- if vo_type == "vehicles":
- expected.insert( 2, '- cs 4 (brew up)' )
wait_for_clipboard( 2, "\n".join(expected) )
delete_vo( vo_type, 1, "another german {}".format(vo_type0), webdriver )
@@ -174,10 +176,13 @@ def test_snippets( webapp, webdriver ):
add_vo( webdriver, vo_type, 1, "name only" )
btn = find_child( "button[data-id='ob_{}_1']".format( vo_type ) )
btn.click()
- wait_for_clipboard( 2, \
-'''[German] ; width=
-[*] name only: #='''
- )
+ expected = [
+ '[German] ; width=',
+ '[*] name only: #=',
+ '- capabilities:',
+ '- raw capabilities:',
+ ]
+ wait_for_clipboard( 2, "\n".join(expected) )
# do the test
do_test( "vehicles" )
@@ -206,17 +211,17 @@ def test_variable_capabilities( webapp, webdriver ):
mo = re.search( r"^- capabilities: (.*)$", clipboard, re.MULTILINE )
return mo.group( 1 )
wait_for_clipboard( 2, expected, transform=reformat )
- do_test( 1, 1940, '"sM8\u2020"' )
- do_test( 1, 1943, '"sM8\u2020"' )
- do_test( 2, 1943, '"HE7\u2020" "sM8\u2020"' )
- do_test( 12, 1943, '"HE7\u2020" "sM8\u2020"' )
- do_test( 1, 1944, '"HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 5, 1944, '"HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 6, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 12, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 1, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 12, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
- do_test( 1, 1946, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
+ do_test( 1, 1940, '"sM8\u2020" "CS 7"' )
+ do_test( 1, 1943, '"sM8\u2020" "CS 7"' )
+ do_test( 2, 1943, '"HE7\u2020" "sM8\u2020" "CS 7"' )
+ do_test( 12, 1943, '"HE7\u2020" "sM8\u2020" "CS 7"' )
+ do_test( 1, 1944, '"HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 5, 1944, '"HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 6, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 12, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 1, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 12, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
+ do_test( 1, 1946, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020" "CS 7"' )
# ---------------------------------------------------------------------
@@ -581,6 +586,103 @@ def test_vo_images( webapp, webdriver, monkeypatch ): #pylint: disable=too-many-
# ---------------------------------------------------------------------
+@pytest.mark.skipif(
+ not pytest.config.option.vasl_mods, #pylint: disable=no-member
+ reason = "--vasl-mods not specified"
+ ) #pylint: disable=too-many-statements
+def test_change_vo_image( webapp, webdriver, monkeypatch ):
+ """Test changing a V/O image."""
+
+ # initialize
+ monkeypatch.setitem( webapp.config, "DATA_DIR", REAL_DATA_DIR )
+ load_vasl_mod( REAL_DATA_DIR, monkeypatch )
+ init_webapp( webapp, webdriver, scenario_persistence=1 )
+
+ # add an ISU-152
+ add_vo( webdriver, "vehicles", 2, "ISU-152 (AG)" )
+
+ # save the scenario
+ saved_scenario = save_scenario()
+ assert saved_scenario["OB_VEHICLES_2"] == [ { "id": "ru/v:049", "name": "ISU-152" } ]
+
+ # change the vehicle's image
+ vehicles_sortable = find_child( "#ob_vehicles-sortable_2" )
+ elems = find_children( "li", vehicles_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ img = find_child( "#edit-vo img.vasl-image" )
+ assert img.get_attribute( "src" ).endswith( "/counter/657/front" )
+ btn = find_child( "#edit-vo input.select-vo-image" )
+ btn.click()
+ images = find_children( ".ui-dialog.select-vo-image .vo-images img" )
+ assert len(images) == 2
+ images[1].click()
+ assert img.get_attribute( "src" ).endswith( "/counter/659/front/0" )
+ click_dialog_button( "OK" )
+ elems = find_children( "img.vasl-image", vehicles_sortable )
+ assert len(elems) == 1
+ assert elems[0].get_attribute( "src" ).endswith( "/counter/659/front/0" )
+
+ # save the scenario
+ saved_scenario = save_scenario()
+ assert saved_scenario["OB_VEHICLES_2"] == [ { "id": "ru/v:049", "image_id": "659/0", "name": "ISU-152" } ]
+
+ # reload the scenario, and check the vehicle's image
+ select_menu_option( "new_scenario" )
+ load_scenario( saved_scenario )
+ select_tab( "ob2" )
+ elems = find_children( "img.vasl-image", vehicles_sortable )
+ assert len(elems) == 1
+ assert elems[0].get_attribute( "src" ).endswith( "/counter/659/front/0" )
+
+ # change the vehicle's image back to the default
+ elems = find_children( "li", vehicles_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ img = find_child( "#edit-vo img.vasl-image" )
+ assert img.get_attribute( "src" ).endswith( "/counter/659/front/0" )
+ btn = find_child( "#edit-vo input.select-vo-image" )
+ btn.click()
+ images = find_children( ".ui-dialog.select-vo-image .vo-images img" )
+ assert len(images) == 2
+ images[0].click()
+ assert img.get_attribute( "src" ).endswith( "/counter/657/front/0" )
+ click_dialog_button( "OK" )
+ elems = find_children( "img.vasl-image", vehicles_sortable )
+ assert len(elems) == 1
+ assert elems[0].get_attribute( "src" ).endswith( "/counter/657/front/0" )
+
+ # save the scenario
+ saved_scenario = save_scenario()
+ assert saved_scenario["OB_VEHICLES_2"] == [ { "id": "ru/v:049", "image_id": "657/0", "name": "ISU-152" } ]
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+@pytest.mark.skipif(
+ not pytest.config.option.vasl_mods, #pylint: disable=no-member
+ reason = "--vasl-mods not specified"
+)
+def test_change_vo_image2( webapp, webdriver, monkeypatch ):
+ """Test changing the image for a V/O that has no alternative images."""
+
+ # initialize
+ monkeypatch.setitem( webapp.config, "DATA_DIR", REAL_DATA_DIR )
+ load_vasl_mod( REAL_DATA_DIR, monkeypatch )
+ init_webapp( webapp, webdriver, scenario_persistence=1 )
+
+ # add an 107mm GVPM
+ add_vo( webdriver, "ordnance", 2, "107mm GVPM obr. 38 (MTR)" )
+
+ # make sure the "change image" button is not present
+ ordnance_sortable = find_child( "#ob_ordnance-sortable_2" )
+ elems = find_children( "li", ordnance_sortable )
+ assert len(elems) == 1
+ ActionChains(webdriver).double_click( elems[0] ).perform()
+ btn = find_child( "#edit-vo input.select-vo-image" )
+ assert btn is None
+
+# ---------------------------------------------------------------------
+
def test_invalid_vo_image_ids( webapp, webdriver ):
"""Test loading scenarios that contain invalid V/O image ID's."""
diff --git a/vasl_templates/webapp/tests/test_vo_reports.py b/vasl_templates/webapp/tests/test_vo_reports.py
index f075835..bae1b81 100644
--- a/vasl_templates/webapp/tests/test_vo_reports.py
+++ b/vasl_templates/webapp/tests/test_vo_reports.py
@@ -34,6 +34,7 @@ def test_vo_reports( webapp, webdriver ): #pylint: disable=too-many-locals
lambda mo: "[{}]".format( mo.group(1) ),
results[i][col]
)
+ results[i][col] = results[i][col].replace( " (brew up)", "[brewup]" )
# check each vehicle/ordnance report
nationalities = [
@@ -148,6 +149,8 @@ def _parse_report( buf ):
def tidy( cell ):
"""Tidy up a cell value."""
val = lxml.etree.tostring( cell ).decode( "utf-8" ) #pylint: disable=c-extension-no-member
+ if val in (" | | "," | "):
+ return ""
mo = re.search( r"^<(th|td).*?>(.*)\1>$", val )
val = mo.group(2)
if val == "n/a":
|