**Main Changes**
- Pymetdecoder and csv2bufr logs are now captured and stored appropriately in warning and error arrays which can be accessed in the webapp.
- Valid min and max values have been implemented directly into the 307080 and 307096 mapping files so that out of range errors are handled before ecCodes and are more informative for the user. Many of these valid ranges have been taken from the [WMO Guide to Instruments and Methods](https://library.wmo.int/viewer/41650/?offset=#page=47&viewer=picture&o=bookmark&n=0&q=).
- A verification that, if both reported, the dewpoint temperature is less than or equal to the air temperature has been added.
- Unit tests have been added for the two quality control steps above.
- NIL reports are no longer written as an empty BUFR and the user is informed of this through a warning.
- Test data has been updated, most notably the wis2box-data now has a `barometer_height` column to meet the current requirements of synop2bufr.
**Bug Fixes**
- When `iR = 3`, absent precipitation groups represent zero preciptation, not missing data. Previously this was not supported and precipitation levels were set to missing.
- Section 3 and section 4 mappings were not being updated correctly which caused the incorrect error `Missing station height`.