Skip to content

Echosounder S500 - ping-python implementation ?  #142

@Tchiimy

Description

@Tchiimy

Hello,

I'm trying to use the functions you are defining in this api related to the S500 echosounder.

From what I understood the ping-python library is "general" but I tried to make some modifications in the definitions.py and ping1D.py to add these functions for the api:
image

I tried to manually add the definitions and functions in the library:
definitions.py:

PING1D_DISTANCE2 = 1223
PING1D_PROFILE6_T = 1308
PING1D_SET_PING_PARAMETERS = 1015

    PING1D_SET_PING_PARAMETERS: {
        "name": "set_ping_params",
        "format": "IIhhHHHBB",
        "field_names": (
            "start_mm",
            "length_mm",
            "gain_index",
            "msec_per_ping",
            "pulse_len_usec",
            "report_id",
            "reserved",
            "chirp",
            "decimation",
        ),
        "payload_length": 20
    },

    PING1D_DISTANCE2: {
        "name": "distance2",
        "format": "IIHBBI",
        "field_names": (
            "this_ping_distance_mm",
            "averaged_distance_mm",
            "reserved",
            "this_ping_confidence",
            "confidence_of_averaged_distance",
            "timestamp",
        ),
        "payload_length": 16
    },

    PING1D_PROFILE6_T: {
        "name": "profile6_t",
        "format": "IIIIIIIIfffffffBBBBHH",
        "field_names": (
            "ping_number",
            "start_mm",
            "length_mm",
            "start_ping_hz",
            "end_ping_hz",
            "adc_sample_hz",
            "timestamp_msec",
            "spare2",
            "pulse_duration_sec",
            "analog_gain",
            "max_pwr_db",
            "min_pwr_db",
            "this_ping_depth_m",
            "smooth_depth_m",
            "fspare2",
            "this_ping_depth_measurement_confidence",
            "gain_index",
            "decimation",
            "smoothed_depth_measurement_confidence",
            "num_results",
            "pwr_results",
        ),
        "payload_length": 68
    },

and pind1D.py:

    def get_distance2(self):
        if self.legacyRequest(definitions.PING1D_DISTANCE2) is None:
            return None
        data = ({
            "this_ping_distance_mm": self._this_ping_distance_mm,  # Units: mm; Distance to the target in this ping.
            "averaged_distance_mm": self._averaged_distance_mm,      # Units: mm; Averaged distance across multiple pings.
            "reserved": self._reserved,                               # Reserved field, not used.
            "this_ping_confidence": self._this_ping_confidence,      # Units: %; Confidence in this ping's distance measurement.
            "confidence_of_averaged_distance": self._confidence_of_averaged_distance,  # Units: %; Confidence in the averaged distance measurement.
            "timestamp": self._timestamp,                             # Units: ms; Timestamp of the measurement.
        })
        return data

    def get_profile6_t(self):
        if self.legacyRequest(definitions.PING1D_PROFILE6_T) is None:
            return None
        data = ({
            "ping_number": self._ping_number,                       # Units: N/A; The ping number.
            "start_mm": self._start_mm,                             # Units: mm; Start position for the ping.
            "length_mm": self._length_mm,                           # Units: mm; Length of the ping measurement.
            "start_ping_hz": self._start_ping_hz,                   # Units: Hz; Starting frequency of the ping.
            "end_ping_hz": self._end_ping_hz,                       # Units: Hz; Ending frequency of the ping.
            "adc_sample_hz": self._adc_sample_hz,                   # Units: Hz; ADC sampling frequency.
            "timestamp_msec": self._timestamp_msec,                 # Units: ms; Timestamp in milliseconds.
            "spare2": self._spare2,                                 # Units: N/A; Spare field, not used.
            "pulse_duration_sec": self._pulse_duration_sec,         # Units: sec; Duration of the pulse.
            "analog_gain": self._analog_gain,                       # Units: N/A; Gain used in the analog signal processing.
            "max_pwr_db": self._max_pwr_db,                         # Units: dB; Maximum power level measured.
            "min_pwr_db": self._min_pwr_db,                         # Units: dB; Minimum power level measured.
            "this_ping_depth_m": self._this_ping_depth_m,           # Units: m; Depth measurement for this ping.
            "smooth_depth_m": self._smooth_depth_m,                 # Units: m; Smoothed depth measurement.
            "fspare2": self._fspare2,                               # Units: N/A; Spare field, not used.
            "this_ping_depth_measurement_confidence": self._this_ping_depth_measurement_confidence,  # Units: %; Confidence in this ping's depth measurement.
            "gain_index": self._gain_index,                         # Units: N/A; Index of the gain setting used.
            "decimation": self._decimation,                         # Units: N/A; Decimation factor used.
            "smoothed_depth_measurement_confidence": self._smoothed_depth_measurement_confidence,  # Units: %; Confidence in the smoothed depth measurement.
            "num_results": self._num_results,                       # Units: N/A; Number of results returned.
            "pwr_results": self._pwr_results,                       # Units: N/A; Array of power results.
        })
        return data

    def set_ping_params(self, start_mm, length_mm, gain_index, msec_per_ping,
                        pulse_len_usec, report_id, reserved, chirp, decimation,
                        verify=True):
        # Create and pack the message
        m = pingmessage.PingMessage(definitions.PING1D_SET_PING_PARAMETERS)
        m.start_mm = start_mm
        m.length_mm = length_mm
        m.gain_index = gain_index
        m.msec_per_ping = msec_per_ping
        m.pulse_len_usec = pulse_len_usec
        m.report_id = report_id
        m.reserved = reserved
        m.chirp = chirp
        m.decimation = decimation
        m.pack_msg_data()
        
        self.write(m.msg_data)
        
        if self.legacyRequest(definitions.PING1D_SET_PING_PARAMETERS) is None:
            return False

        if (verify and (
            self._start_mm != start_mm or
            self._length_mm != length_mm or
            self._gain_index != gain_index or
            self._msec_per_ping != msec_per_ping or
            self._pulse_len_usec != pulse_len_usec or
            self._report_id != report_id or
            self._reserved != reserved or
            self._chirp != chirp or
            self._decimation != decimation)):
            return False
        
        return True  # Success

Then I made a basic test with my S500:

from brping.ping1d import Ping1D
import time

# Create class object
myPing = Ping1D()

# Connect via UDP (Ethernet for example)
myPing.connect_udp("192.168.3.51", 51200)

if not myPing.initialize():
    print("Failed to initialize Ping!")
    exit(1)

test_0 = myPing.get_distance()
print(test_0)

print("")
test = myPing.get_distance2()
print(test)

print("")
test2 = myPing.get_profile6_t()
print(test2)

myPing.set_ping_params(start_mm=0, length_mm=0, gain_index=-1, msec_per_ping=-1,
                        pulse_len_usec=0, report_id=1308, reserved=0, chirp=0, decimation=0,verify=True)

And got theses output:

Opening 192.168.3.51:51200
{'distance': 0, 'confidence': 0, 'transmit_duration': 50, 'ping_number': 0, 'scan_start': 0, 'scan_length': 1000, 'gain_setting': 0}

{'this_ping_distance_mm': 352, 'averaged_distance_mm': 0, 'reserved': 0, 'this_ping_confidence': 0, 'confidence_of_averaged_distance': 0, 'timestamp': 29833152}

error unpacking payload: unpack requires a buffer of 68 bytes
msg_data: bytearray(b'BRB\x08\x1c\x05\x00\x00=\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00 \xa1\x07\x00 \xa1\x07\x00\x80\x84\x1e\x00\xf87\xc7\x01\x00\x00\x00\x00\x17\xb7Q8R\xb8~@VQ\xa2B\xae\xef\x04B\x00\x80\xb4>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xeba\t\x8a\xeb\xb0\xd5\xc9t\xd6\xba\xe1\x92\xe8C\xf3\xa6\xf6\x1e\xfa#\xff\xe7\xff\xff\xff\n\xfe\x13\xfc(\xfa\xf9\xf6\xe1\xed\x9a\xe7\xc0\xdf&\xcbB\xbb\xda\xa1\xf3\xa0\x9f\xb0\x06\xb9-\xc5\xa7\xd2\x1c\xd9\xeb\xde\xbd\xe2\xa5\xe4\x18\xe5\xb7\xe1\xc1\xde\xfc\xdaS\xd3c\xcc\x17\xbf,\xb2\xc3\x97j\x1e\x8f\x84\x8b\xa4\x8f\xb9\xf5\xcd\xc1\xd4\xc4\xd6\xd8\xd8S\xd8\xb0\xd9V\xd3B\xd1\x08\xc90\xc0\x16\xae\xda\x9a(\x87>\x831uQeWj\xa9f\xedh\xe7P\xeap\xe5\x95M\x9d\xfb\xa4?\xaa\xe9\xa4$\xa3g\xa1\x83\xb2\x1f\xb7\xa3\xbc\xf5\xba\xc0\xbb3\xb8+\xb6\xca\xb2\x84\xb4)\xb5\xad\xb9\xb5\xbaA\xbd\x0e\xc0\x1c\xc5\xfa\xcd5\xd2\xba\xd3L\xd6>\xd6\x11\xd3\xa0\xcd\xb7\xcai\xc7L\xc3\xac\xbbY\xb6\xd1\xb1\xa0\xa5W\xa1\x9e\x9cf\x83\x05kPU\xd3o(\x9a\xb1\xa5@\xacE\xb7T\xb9\x17\xba\xc1\xb6A\xb4\x02\xb2H\xae\x19\xa7\x81\xa3\xd0\xa0\xa0\x9c \x9e\xfa\xa4u\xad[\xb2Y\xb7\xfb\xba\xd1\xc0\xec\xc1v\xc3\xc5\xc4\xc6\xc4"\xc4\xa7\xc1\x17\xc0\xed\xbd\x17\xbce\xb7\xdb\xb4\xf9\xb2\xc6\xb0\xc0\xb0\x04\xb0\t\xb0+\xb0&\xb0\xf5\xaf\x19\xb0\xcb\xb3\xe9\xb5d\xb7\x93\xbe\xcc\xc1P\xc4h\xc7;\xce\xa0\xd08\xd3\xe6\xd7\xe1\xd9\xf6\xdbI\xdf\xb7\xe0E\xe2\x98\xe3\xc9\xe5\xb5\xe6\x8c\xe7\xab\xe8\x0b\xe9Q\xe9\x88\xe9\x86\xe91\xe9\xe4\xe8\xf9\xe7w\xe7\xdf\xe6c\xe5\x91\xe4t\xe3\x1b\xe1\xae\xdf)\xdem\xdct\xd8/\xd6\x9b\xd3\x9c\xcd\xee\xc9\xfb\xc5\x90\xbc\xd1\xb6D\xb0\xba\xa8\x17\x96X\x85\x13o\x13Qwj\xa1\x80\xcd\x97v\x9f\x8b\xa7\xc3\xae\xd4\xb1*\xb5\xa3\xb6\x18\xb7\x9f\xb7\xf5\xb6\x17\xb4i\xb2l\xafa\xaa,\xa7b\xa0(\x9b(\x93\xe8\x86w~Xr4g\\P\x7f<\xf80iE\x85M>W<f\x83leq\x86u\xa4{\xf7~o\x82\xb8\x89\xd4\x8dr\x91\x9d\x98\x1b\x9ct\x9f\x90\xa2\xd3\xa8\xd0\xabm\xae3\xb3H\xb5\xe7\xb7"\xbb\x93\xbc%\xbf\x99\xc0g\xc1\xe4\xc3\x91\xc4\x87\xc3\xa7\xc5\xe4\xc5\xda\xc4\xab\xc5\x06\xc8q\xc8\xa9\xc9+\xcc\x83\xcd\xe3\xce\xa7\xd1\x1d\xd3\xd1\xd4\x14\xd6\x9f\xd7\xf0\xd8p\xd9\x84\xd9\x9a\xd9\xdd\xd9\x08\xd9t\xd8\xdd\xd7\x18\xd7\xbc\xd5\xe6\xd4M\xd4|\xd3\t\xd3\xb8\xd2 \xd2\xde\xd1\x8a\xd1+\xd1\xfd\xcf\x1a\xcf\x1b\xce\xa7\xcb \xca\x99\xc7k\xc3\xa0\xc0\xda\xbb\xdf\xb7\xb8\xb0\xb6\xa8n\xa2\xf3\x96\x01\x8f\xb2\x8a\xec\x85\x1c\x8c\x90\x9c\x01\xa3\x1c\xa9|\xb3\x04\xb8\xde\xbb>\xc1B\xc31\xc5I\xc6\x1b\xc7\x86\xc7J\xc7v\xc6\xe2\xc5!\xc5\x8c\xc4%\xc4\xbd\xc3\xe2\xc3d\xc5\x1b\xc6G\xc7\x97\xc9\x80\xcaf\xcbV\xcc\x84\xccQ\xcc\xf5\xcb:\xca\xd2\xc8-\xc7\xec\xc2\x84\xc0\xac\xbd\xaf\xb7\xab\xb4\x17\xb2\xab\xaf\x1b\xab2\xae,\xb0\x9e\xb2C\xb7 \xc1\x00\xc6\xa2\xca^\xd2\xc1\xd5V\xd9\xd5\xdd\xf2\xdff\xe2\x05\xe4\t\xe6\x82\xe76\xe8\xd8\xe8<\xe9\xae\xe9a\xe9C\xe9T\xe9\x9a\xe8d\xe8\x97\xe8f\xe8\x8a\xe7\xd6\xe7\xa7\xe7\xc2\xe6q\xe6v\xe6\x02\xe5-\xe4(\xe3\xf2\xe1\x93\xdfj\xdd\xac\xdb8\xd9\x83\xd7\x0c\xd4K\xd2\x98\xd0\xf5\xcb\xff\xc9\x0c\xcaa\xc5l\xc4J\xc5H\xc4\x0f\xc2\xe1\xc1\x02\xc13\xc0\\\xbf\xc6\xbbZ\xbb\xd3\xb9\xc9\xb4\r\xb3\xa9\xb2x\xae\xa9\xad\x0e\xad\x04\xacK\xab\xcc\xa9\x9e\xa9\x1b\xaa\xb6\xa9#\xa8\xa8\xa8\x85\xa8\x01\xa8*\xa8\xcd\xa77\xa7\xbd\xa6\x82\xa5\x15\xa5@\xa4N\xa2\x90\xa2\xd7\xa5\xfa\xa7A\xab\x0f\xb1 \xb4\xa8\xb74\xbce\xbe\xc2\xc0X\xc2&\xc4\xa7\xc5h\xc6Y\xc7\xfb\xc7\xe2\xc8k\xc9\xbd\xc94\xca3\xca>\xca\x17\xca\xe4\xc9\x8f\xc96\xc9P\xc89\xc77\xc6[\xc4\xfe\xc2\xa2\xc0\xf8\xbd\x01\xbc\xda\xb7\x01\xb5\x8a\xb1\xbc\xaa\xb5\xa6]\xa2\xae\x9dp\x92\xfc\x8b}\x84\xe5r\x85g\x8ac\xecd\x17r\x8d\x899\x93\xa8\x9b\x87\xa9\x9c\xaf\xf4\xb5\x9f\xbe\xb2\xc2\xa4\xc7\x11\xcbl\xcfI\xd3|\xd5\xa9\xd7=\xd9\x04\xdc\xfe\xdc\xf7\xdd\xb9\xdfT\xe0\xc1\xe0\xeb\xe1n\xe2%\xe3\xd3\xe3\x06\xe5%\xe6\xef\xe6F\xe8\t\xe9\xa9\xe9\x8f\xea\xc9\xea\x93\xeau\xea{\xea\x9f\xe93\xe9\x8b\xe8\xcc\xe7r\xe6\xd0\xe4~\xe3\x85\xe1\xcf\xdf\xcc\xdb\xf2\xd8#\xd6w\xcf\x98\xcbh\xc7J\xbe\x81\xb9G\xb5O\xb18\xa9\x08\xab\xd5\xaa\x10\xaac\xaek\xaf\xcb\xafb\xb0\xfd\xaf\x10\xaf\xfd\xad\xdd\xa9\xa4\xa7/\xa6\\\xa0\x8c\x9e\x16\xa0K\xa0\x93\x9f1\xa5r\xa7+\xaa\x97\xac\x0c\xb1\xd5\xb2h\xb4\x92\xb6\x05\xb7\x98\xb7\x91\xb6\xb8\xb5\x06\xb6\xf1\xb4\xa0\xafo\xb0\xfa\xae\xd1\xab3\xac\x87\xab\xde\xaeL\xb0\xbd\xafp\xb1.\xb6\xb5\xb6\xb0\xb8&\xbdC\xbfI\xc1&\xc6\x81\xc8\xc8\xca\xf3\xcc(\xd0\x19\xd2X\xd3N\xd4\xc1\xd4p\xd5\xc1\xd4\x86\xd4\xae\xd4A\xd4h\xd4d\xd56\xd6\x94\xd7A\xda\xf2\xdbz\xdd\n\xdf\xda\xe2v\xe3\xc6\xe4\xe2\xe7\xac\xe8\x9e\xe8\xdb\xe9\xcc\xe9{\xe9\x16\xe9_\xe7d\xe6\x08\xe5\x8d\xe1\xba\xdf\xc9\xdd\x95\xd9q\xd7\x1d\xd5\xcb\xd2\xbc\xcd\xca\xca\xae\xc7C\xc1\xc1\xbdp\xb9\x10\xb2\xba\xad)\xa8\x1f\xa4 \x9f\x98\x9c#\x9c\xac\x9d\xb1\x9e\x15\xa0\xa7\xa1\xfb\xa1b\xa2\xf5\xa1\xce\x9f\xac\x9e1\x9d\x05\x9a\xb3\x97x\x96U\x97%\x99\x82\x9b!\xa2\x81\xa5\xc7\xa8\x98\xab\xfd\xaf\x81\xb1\x85\xb2H\xb3\x03\xb3Z\xb2%\xb0\xbe\xae\x97\xad\xc7\xac\xe3\xab\xe3\xae5\xb1\x8a\xb4\xde\xb7m\xbd5\xc1\xe0\xc3\\\xc7$\xc9i\xcb\x07\xcd\xe2\xcd\xdb\xce<\xcf\x81\xcf_\xcf\x0b\xcfr\xce\xbe\xcd\xf2\xcb\xb4\xcaz\xc9\xe1\xc6\x93\xc5\xb5\xc4\xd1\xc2Y\xc2\xb5\xc2\xb5\xc2\x97\xc2\xfa\xc2\xea\xc2\xa8\xc2 \xc2\xd7\xbf&\xbe\x15\xbc\xca\xb6\xca\xb3|\xb0;\xa9\x1a\xa6Q\xa5\xd6\xa1\xd0\xa2\x17\xa8\xa2\xaa\xa0\xadw\xb3U\xb6\xc6\xb9g\xbc\x08\xc0\xe4\xc2\x9f\xc4h\xc6g\xc7\xf2\xc8\xd7\xc8\xcf\xc8\xfd\xc8W\xc8d\xc6\xbe\xc4\x02\xc3\xd5\xbf\x96\xbdi\xb9\x1a\xb5\xad\xb1\x04\xab\x9c\xa6\xec\xa0\xcd\x97\x7f\x92\xdd\x8cr\x88\x04\x82\xe5\x81\x7f\x82\x89\x85\x16\x88Q\x8b\xc7\x8f\x08\x92n\x94<\x96;\x99\xd5\x9a%\x9cf\x9ep\x9f\x86\xa0\xd9\xa1r\xa2B\xa3\x19\xa3\xe1\xa2\x01\xa3B\xa2\x81\x9f\xe5\x9d\x97\x9bQ\x97T\x94\x8c\x8e+\x8a\xa2\x86{\x7f\x1b} \x7f^~,\x81~\x89}\x8d\x1c\x91\xac\x99h\x9d\xc3\xa0\x06\xa4\xb4\xa9\x1e\xacN\xae\xb4\xb1&\xb3\xc3\xb4\xab\xb6\xae\xb7\xe1\xb8\xae\xb9\xc6\xba\xd1\xbb\x86\xbc\x88\xbd9\xbe0\xbf\xe9\xbfn\xc0T\xc1\xb3\xc1\xa9\xc1;\xc2"\xc29\xc1\xd1\xc0l\xc0\xd9\xbe\xf4\xbd\x0c\xbd\x02\xbc\xd1\xb9\x8f\xb8A\xb7\x8b\xb4\xc8\xb2\x05\xb1\xec\xad\xf3\xab\x8e\xa8j\xa5\x06\xa3\xdf\x9d\xde\x9a\n\x98\x89\x91]\x8e\xbd\x8b\xb2\x88\xc5\x81h\x80D~py\x17y%{P{\x14}\'\x80\xf3\x81\xc0\x84I\x86J\x87~\x89\xfd\x89\xc4\x88\xb0\x89\x19\x89\x9b\x86\xb4\x85"\x85\xe2\x82\x1f\x82\x83\x81;\x81\x80\x82\xe3\x81\xa1\x82\xd5\x86#\x88\xb9\x87\xbc\x8b\xbc\x8c\xef\x8c\xfa\x8d\x1b\x90\xd4\x90\x91\x91\xe3\x92\x86\x93\xb7\x94\xf7\x95\xa7\x96\xd8\x97\xf0\x98\xba\x99\xb7\x9aT\x9b\xe8\x9bO\x9cT\x9c\xba\x9b6\x9b\x1f\x9a\t\x98\x8d\x96D\x94F\x92W\x8eF\x8b\x93\x88#\x83\xd9\x7f\xe6{\xdes\x9an?h\xf4`TN\xbd=\xea\'\x00\x00J\x1d;5TP\xb5Ylb\x08i\xd4r\xd4w\xba{\xb5\x81\x8e\x84!\x88\xcc\x8b\xce\x8d\xc8\x90o\x92\x0f\x94U\x96M\x97\xcd\x97I\x98^\x99\xb2\x98{\x98\xce\x98{\x97\x0e\x97\xd1\x961\x96\xe8\x94k\x94\xd1\x93\xd3\x92W\x92"\x91z\x90\xd9\x8f\x9e\x8d\xe8\x8c\x83\x8dc\x8bp\x8b&\x8d\x8f\x8d\xe7\x8c\xc8\x8f\xdb\x90 \x91q\x92\x15\x95\x9a\x95i\x96\xfa\x97\x88\x98\xe8\x98\x9a\x99\xd7\x99?\x9aF\x9a\xe0\x99"\x9a\xd4\x99\xed\x98o\x98?\x98%\x97\x84\x96\x86\x960\x96\xc8\x95\xed\x95\xf5\x95\x85\x96\xd4\x96\x8c\x97\xe4\x98\xc3\x99t\x9a>\x9b\xa6\x9c[\x9d\x14\x9e1\x9f\x0b\xa0\xab\xa0\xe4\xa1\xb4\xa2\x98\xa3\xe2\xa4j\xa5e\xa6\xea\xa6w\xa7\x04\xa8\x1d\xa8\xc3\xa7a\xa7U\xa7;\xa6\x85\xa5\xaf\xa4\xd5\xa3e\xa2\xfd\xa0\x00\xa0Y\x9eL\x9d\\\x9bh\x99@\x98K\xd3'), header: (66, 82, 2114, 1308, 0, 0)
format: <IIIIIIIIfffffffBBBBHH, buf: bytearray(b'=\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00 \xa1\x07\x00 \xa1\x07\x00\x80\x84\x1e\x00\xf87\xc7\x01\x00\x00\x00\x00\x17\xb7Q8R\xb8~@VQ\xa2B\xae\xef\x04B\x00\x80\xb4>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xeba\t\x8a\xeb\xb0\xd5\xc9t\xd6\xba\xe1\x92\xe8C\xf3\xa6\xf6\x1e\xfa#\xff\xe7\xff\xff\xff\n\xfe\x13\xfc(\xfa\xf9\xf6\xe1\xed\x9a\xe7\xc0\xdf&\xcbB\xbb\xda\xa1\xf3\xa0\x9f\xb0\x06\xb9-\xc5\xa7\xd2\x1c\xd9\xeb\xde\xbd\xe2\xa5\xe4\x18\xe5\xb7\xe1\xc1\xde\xfc\xdaS\xd3c\xcc\x17\xbf,\xb2\xc3\x97j\x1e\x8f\x84\x8b\xa4\x8f\xb9\xf5\xcd\xc1\xd4\xc4\xd6\xd8\xd8S\xd8\xb0\xd9V\xd3B\xd1\x08\xc90\xc0\x16\xae\xda\x9a(\x87>\x831uQeWj\xa9f\xedh\xe7P\xeap\xe5\x95M\x9d\xfb\xa4?\xaa\xe9\xa4$\xa3g\xa1\x83\xb2\x1f\xb7\xa3\xbc\xf5\xba\xc0\xbb3\xb8+\xb6\xca\xb2\x84\xb4)\xb5\xad\xb9\xb5\xbaA\xbd\x0e\xc0\x1c\xc5\xfa\xcd5\xd2\xba\xd3L\xd6>\xd6\x11\xd3\xa0\xcd\xb7\xcai\xc7L\xc3\xac\xbbY\xb6\xd1\xb1\xa0\xa5W\xa1\x9e\x9cf\x83\x05kPU\xd3o(\x9a\xb1\xa5@\xacE\xb7T\xb9\x17\xba\xc1\xb6A\xb4\x02\xb2H\xae\x19\xa7\x81\xa3\xd0\xa0\xa0\x9c \x9e\xfa\xa4u\xad[\xb2Y\xb7\xfb\xba\xd1\xc0\xec\xc1v\xc3\xc5\xc4\xc6\xc4"\xc4\xa7\xc1\x17\xc0\xed\xbd\x17\xbce\xb7\xdb\xb4\xf9\xb2\xc6\xb0\xc0\xb0\x04\xb0\t\xb0+\xb0&\xb0\xf5\xaf\x19\xb0\xcb\xb3\xe9\xb5d\xb7\x93\xbe\xcc\xc1P\xc4h\xc7;\xce\xa0\xd08\xd3\xe6\xd7\xe1\xd9\xf6\xdbI\xdf\xb7\xe0E\xe2\x98\xe3\xc9\xe5\xb5\xe6\x8c\xe7\xab\xe8\x0b\xe9Q\xe9\x88\xe9\x86\xe91\xe9\xe4\xe8\xf9\xe7w\xe7\xdf\xe6c\xe5\x91\xe4t\xe3\x1b\xe1\xae\xdf)\xdem\xdct\xd8/\xd6\x9b\xd3\x9c\xcd\xee\xc9\xfb\xc5\x90\xbc\xd1\xb6D\xb0\xba\xa8\x17\x96X\x85\x13o\x13Qwj\xa1\x80\xcd\x97v\x9f\x8b\xa7\xc3\xae\xd4\xb1*\xb5\xa3\xb6\x18\xb7\x9f\xb7\xf5\xb6\x17\xb4i\xb2l\xafa\xaa,\xa7b\xa0(\x9b(\x93\xe8\x86w~Xr4g\\P\x7f<\xf80iE\x85M>W<f\x83leq\x86u\xa4{\xf7~o\x82\xb8\x89\xd4\x8dr\x91\x9d\x98\x1b\x9ct\x9f\x90\xa2\xd3\xa8\xd0\xabm\xae3\xb3H\xb5\xe7\xb7"\xbb\x93\xbc%\xbf\x99\xc0g\xc1\xe4\xc3\x91\xc4\x87\xc3\xa7\xc5\xe4\xc5\xda\xc4\xab\xc5\x06\xc8q\xc8\xa9\xc9+\xcc\x83\xcd\xe3\xce\xa7\xd1\x1d\xd3\xd1\xd4\x14\xd6\x9f\xd7\xf0\xd8p\xd9\x84\xd9\x9a\xd9\xdd\xd9\x08\xd9t\xd8\xdd\xd7\x18\xd7\xbc\xd5\xe6\xd4M\xd4|\xd3\t\xd3\xb8\xd2 \xd2\xde\xd1\x8a\xd1+\xd1\xfd\xcf\x1a\xcf\x1b\xce\xa7\xcb \xca\x99\xc7k\xc3\xa0\xc0\xda\xbb\xdf\xb7\xb8\xb0\xb6\xa8n\xa2\xf3\x96\x01\x8f\xb2\x8a\xec\x85\x1c\x8c\x90\x9c\x01\xa3\x1c\xa9|\xb3\x04\xb8\xde\xbb>\xc1B\xc31\xc5I\xc6\x1b\xc7\x86\xc7J\xc7v\xc6\xe2\xc5!\xc5\x8c\xc4%\xc4\xbd\xc3\xe2\xc3d\xc5\x1b\xc6G\xc7\x97\xc9\x80\xcaf\xcbV\xcc\x84\xccQ\xcc\xf5\xcb:\xca\xd2\xc8-\xc7\xec\xc2\x84\xc0\xac\xbd\xaf\xb7\xab\xb4\x17\xb2\xab\xaf\x1b\xab2\xae,\xb0\x9e\xb2C\xb7 \xc1\x00\xc6\xa2\xca^\xd2\xc1\xd5V\xd9\xd5\xdd\xf2\xdff\xe2\x05\xe4\t\xe6\x82\xe76\xe8\xd8\xe8<\xe9\xae\xe9a\xe9C\xe9T\xe9\x9a\xe8d\xe8\x97\xe8f\xe8\x8a\xe7\xd6\xe7\xa7\xe7\xc2\xe6q\xe6v\xe6\x02\xe5-\xe4(\xe3\xf2\xe1\x93\xdfj\xdd\xac\xdb8\xd9\x83\xd7\x0c\xd4K\xd2\x98\xd0\xf5\xcb\xff\xc9\x0c\xcaa\xc5l\xc4J\xc5H\xc4\x0f\xc2\xe1\xc1\x02\xc13\xc0\\\xbf\xc6\xbbZ\xbb\xd3\xb9\xc9\xb4\r\xb3\xa9\xb2x\xae\xa9\xad\x0e\xad\x04\xacK\xab\xcc\xa9\x9e\xa9\x1b\xaa\xb6\xa9#\xa8\xa8\xa8\x85\xa8\x01\xa8*\xa8\xcd\xa77\xa7\xbd\xa6\x82\xa5\x15\xa5@\xa4N\xa2\x90\xa2\xd7\xa5\xfa\xa7A\xab\x0f\xb1 \xb4\xa8\xb74\xbce\xbe\xc2\xc0X\xc2&\xc4\xa7\xc5h\xc6Y\xc7\xfb\xc7\xe2\xc8k\xc9\xbd\xc94\xca3\xca>\xca\x17\xca\xe4\xc9\x8f\xc96\xc9P\xc89\xc77\xc6[\xc4\xfe\xc2\xa2\xc0\xf8\xbd\x01\xbc\xda\xb7\x01\xb5\x8a\xb1\xbc\xaa\xb5\xa6]\xa2\xae\x9dp\x92\xfc\x8b}\x84\xe5r\x85g\x8ac\xecd\x17r\x8d\x899\x93\xa8\x9b\x87\xa9\x9c\xaf\xf4\xb5\x9f\xbe\xb2\xc2\xa4\xc7\x11\xcbl\xcfI\xd3|\xd5\xa9\xd7=\xd9\x04\xdc\xfe\xdc\xf7\xdd\xb9\xdfT\xe0\xc1\xe0\xeb\xe1n\xe2%\xe3\xd3\xe3\x06\xe5%\xe6\xef\xe6F\xe8\t\xe9\xa9\xe9\x8f\xea\xc9\xea\x93\xeau\xea{\xea\x9f\xe93\xe9\x8b\xe8\xcc\xe7r\xe6\xd0\xe4~\xe3\x85\xe1\xcf\xdf\xcc\xdb\xf2\xd8#\xd6w\xcf\x98\xcbh\xc7J\xbe\x81\xb9G\xb5O\xb18\xa9\x08\xab\xd5\xaa\x10\xaac\xaek\xaf\xcb\xafb\xb0\xfd\xaf\x10\xaf\xfd\xad\xdd\xa9\xa4\xa7/\xa6\\\xa0\x8c\x9e\x16\xa0K\xa0\x93\x9f1\xa5r\xa7+\xaa\x97\xac\x0c\xb1\xd5\xb2h\xb4\x92\xb6\x05\xb7\x98\xb7\x91\xb6\xb8\xb5\x06\xb6\xf1\xb4\xa0\xafo\xb0\xfa\xae\xd1\xab3\xac\x87\xab\xde\xaeL\xb0\xbd\xafp\xb1.\xb6\xb5\xb6\xb0\xb8&\xbdC\xbfI\xc1&\xc6\x81\xc8\xc8\xca\xf3\xcc(\xd0\x19\xd2X\xd3N\xd4\xc1\xd4p\xd5\xc1\xd4\x86\xd4\xae\xd4A\xd4h\xd4d\xd56\xd6\x94\xd7A\xda\xf2\xdbz\xdd\n\xdf\xda\xe2v\xe3\xc6\xe4\xe2\xe7\xac\xe8\x9e\xe8\xdb\xe9\xcc\xe9{\xe9\x16\xe9_\xe7d\xe6\x08\xe5\x8d\xe1\xba\xdf\xc9\xdd\x95\xd9q\xd7\x1d\xd5\xcb\xd2\xbc\xcd\xca\xca\xae\xc7C\xc1\xc1\xbdp\xb9\x10\xb2\xba\xad)\xa8\x1f\xa4 \x9f\x98\x9c#\x9c\xac\x9d\xb1\x9e\x15\xa0\xa7\xa1\xfb\xa1b\xa2\xf5\xa1\xce\x9f\xac\x9e1\x9d\x05\x9a\xb3\x97x\x96U\x97%\x99\x82\x9b!\xa2\x81\xa5\xc7\xa8\x98\xab\xfd\xaf\x81\xb1\x85\xb2H\xb3\x03\xb3Z\xb2%\xb0\xbe\xae\x97\xad\xc7\xac\xe3\xab\xe3\xae5\xb1\x8a\xb4\xde\xb7m\xbd5\xc1\xe0\xc3\\\xc7$\xc9i\xcb\x07\xcd\xe2\xcd\xdb\xce<\xcf\x81\xcf_\xcf\x0b\xcfr\xce\xbe\xcd\xf2\xcb\xb4\xcaz\xc9\xe1\xc6\x93\xc5\xb5\xc4\xd1\xc2Y\xc2\xb5\xc2\xb5\xc2\x97\xc2\xfa\xc2\xea\xc2\xa8\xc2 \xc2\xd7\xbf&\xbe\x15\xbc\xca\xb6\xca\xb3|\xb0;\xa9\x1a\xa6Q\xa5\xd6\xa1\xd0\xa2\x17\xa8\xa2\xaa\xa0\xadw\xb3U\xb6\xc6\xb9g\xbc\x08\xc0\xe4\xc2\x9f\xc4h\xc6g\xc7\xf2\xc8\xd7\xc8\xcf\xc8\xfd\xc8W\xc8d\xc6\xbe\xc4\x02\xc3\xd5\xbf\x96\xbdi\xb9\x1a\xb5\xad\xb1\x04\xab\x9c\xa6\xec\xa0\xcd\x97\x7f\x92\xdd\x8cr\x88\x04\x82\xe5\x81\x7f\x82\x89\x85\x16\x88Q\x8b\xc7\x8f\x08\x92n\x94<\x96;\x99\xd5\x9a%\x9cf\x9ep\x9f\x86\xa0\xd9\xa1r\xa2B\xa3\x19\xa3\xe1\xa2\x01\xa3B\xa2\x81\x9f\xe5\x9d\x97\x9bQ\x97T\x94\x8c\x8e+\x8a\xa2\x86{\x7f\x1b} \x7f^~,\x81~\x89}\x8d\x1c\x91\xac\x99h\x9d\xc3\xa0\x06\xa4\xb4\xa9\x1e\xacN\xae\xb4\xb1&\xb3\xc3\xb4\xab\xb6\xae\xb7\xe1\xb8\xae\xb9\xc6\xba\xd1\xbb\x86\xbc\x88\xbd9\xbe0\xbf\xe9\xbfn\xc0T\xc1\xb3\xc1\xa9\xc1;\xc2"\xc29\xc1\xd1\xc0l\xc0\xd9\xbe\xf4\xbd\x0c\xbd\x02\xbc\xd1\xb9\x8f\xb8A\xb7\x8b\xb4\xc8\xb2\x05\xb1\xec\xad\xf3\xab\x8e\xa8j\xa5\x06\xa3\xdf\x9d\xde\x9a\n\x98\x89\x91]\x8e\xbd\x8b\xb2\x88\xc5\x81h\x80D~py\x17y%{P{\x14}\'\x80\xf3\x81\xc0\x84I\x86J\x87~\x89\xfd\x89\xc4\x88\xb0\x89\x19\x89\x9b\x86\xb4\x85"\x85\xe2\x82\x1f\x82\x83\x81;\x81\x80\x82\xe3\x81\xa1\x82\xd5\x86#\x88\xb9\x87\xbc\x8b\xbc\x8c\xef\x8c\xfa\x8d\x1b\x90\xd4\x90\x91\x91\xe3\x92\x86\x93\xb7\x94\xf7\x95\xa7\x96\xd8\x97\xf0\x98\xba\x99\xb7\x9aT\x9b\xe8\x9bO\x9cT\x9c\xba\x9b6\x9b\x1f\x9a\t\x98\x8d\x96D\x94F\x92W\x8eF\x8b\x93\x88#\x83\xd9\x7f\xe6{\xdes\x9an?h\xf4`TN\xbd=\xea\'\x00\x00J\x1d;5TP\xb5Ylb\x08i\xd4r\xd4w\xba{\xb5\x81\x8e\x84!\x88\xcc\x8b\xce\x8d\xc8\x90o\x92\x0f\x94U\x96M\x97\xcd\x97I\x98^\x99\xb2\x98{\x98\xce\x98{\x97\x0e\x97\xd1\x961\x96\xe8\x94k\x94\xd1\x93\xd3\x92W\x92"\x91z\x90\xd9\x8f\x9e\x8d\xe8\x8c\x83\x8dc\x8bp\x8b&\x8d\x8f\x8d\xe7\x8c\xc8\x8f\xdb\x90 \x91q\x92\x15\x95\x9a\x95i\x96\xfa\x97\x88\x98\xe8\x98\x9a\x99\xd7\x99?\x9aF\x9a\xe0\x99"\x9a\xd4\x99\xed\x98o\x98?\x98%\x97\x84\x96\x86\x960\x96\xc8\x95\xed\x95\xf5\x95\x85\x96\xd4\x96\x8c\x97\xe4\x98\xc3\x99t\x9a>\x9b\xa6\x9c[\x9d\x14\x9e1\x9f\x0b\xa0\xab\xa0\xe4\xa1\xb4\xa2\x98\xa3\xe2\xa4j\xa5e\xa6\xea\xa6w\xa7\x04\xa8\x1d\xa8\xc3\xa7a\xa7U\xa7;\xa6\x85\xa5\xaf\xa4\xd5\xa3e\xa2\xfd\xa0\x00\xa0Y\x9eL\x9d\\\x9bh\x99@\x98')
IIIIIIIIfffffffBBBBHH
attribute error while handling msg 1308 (profile6_t): bytearray(b'BRB\x08\x1c\x05\x00\x00=\x00\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00 \xa1\x07\x00 \xa1\x07\x00\x80\x84\x1e\x00\xf87\xc7\x01\x00\x00\x00\x00\x17\xb7Q8R\xb8~@VQ\xa2B\xae\xef\x04B\x00\x80\xb4>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xeba\t\x8a\xeb\xb0\xd5\xc9t\xd6\xba\xe1\x92\xe8C\xf3\xa6\xf6\x1e\xfa#\xff\xe7\xff\xff\xff\n\xfe\x13\xfc(\xfa\xf9\xf6\xe1\xed\x9a\xe7\xc0\xdf&\xcbB\xbb\xda\xa1\xf3\xa0\x9f\xb0\x06\xb9-\xc5\xa7\xd2\x1c\xd9\xeb\xde\xbd\xe2\xa5\xe4\x18\xe5\xb7\xe1\xc1\xde\xfc\xdaS\xd3c\xcc\x17\xbf,\xb2\xc3\x97j\x1e\x8f\x84\x8b\xa4\x8f\xb9\xf5\xcd\xc1\xd4\xc4\xd6\xd8\xd8S\xd8\xb0\xd9V\xd3B\xd1\x08\xc90\xc0\x16\xae\xda\x9a(\x87>\x831uQeWj\xa9f\xedh\xe7P\xeap\xe5\x95M\x9d\xfb\xa4?\xaa\xe9\xa4$\xa3g\xa1\x83\xb2\x1f\xb7\xa3\xbc\xf5\xba\xc0\xbb3\xb8+\xb6\xca\xb2\x84\xb4)\xb5\xad\xb9\xb5\xbaA\xbd\x0e\xc0\x1c\xc5\xfa\xcd5\xd2\xba\xd3L\xd6>\xd6\x11\xd3\xa0\xcd\xb7\xcai\xc7L\xc3\xac\xbbY\xb6\xd1\xb1\xa0\xa5W\xa1\x9e\x9cf\x83\x05kPU\xd3o(\x9a\xb1\xa5@\xacE\xb7T\xb9\x17\xba\xc1\xb6A\xb4\x02\xb2H\xae\x19\xa7\x81\xa3\xd0\xa0\xa0\x9c \x9e\xfa\xa4u\xad[\xb2Y\xb7\xfb\xba\xd1\xc0\xec\xc1v\xc3\xc5\xc4\xc6\xc4"\xc4\xa7\xc1\x17\xc0\xed\xbd\x17\xbce\xb7\xdb\xb4\xf9\xb2\xc6\xb0\xc0\xb0\x04\xb0\t\xb0+\xb0&\xb0\xf5\xaf\x19\xb0\xcb\xb3\xe9\xb5d\xb7\x93\xbe\xcc\xc1P\xc4h\xc7;\xce\xa0\xd08\xd3\xe6\xd7\xe1\xd9\xf6\xdbI\xdf\xb7\xe0E\xe2\x98\xe3\xc9\xe5\xb5\xe6\x8c\xe7\xab\xe8\x0b\xe9Q\xe9\x88\xe9\x86\xe91\xe9\xe4\xe8\xf9\xe7w\xe7\xdf\xe6c\xe5\x91\xe4t\xe3\x1b\xe1\xae\xdf)\xdem\xdct\xd8/\xd6\x9b\xd3\x9c\xcd\xee\xc9\xfb\xc5\x90\xbc\xd1\xb6D\xb0\xba\xa8\x17\x96X\x85\x13o\x13Qwj\xa1\x80\xcd\x97v\x9f\x8b\xa7\xc3\xae\xd4\xb1*\xb5\xa3\xb6\x18\xb7\x9f\xb7\xf5\xb6\x17\xb4i\xb2l\xafa\xaa,\xa7b\xa0(\x9b(\x93\xe8\x86w~Xr4g\\P\x7f<\xf80iE\x85M>W<f\x83leq\x86u\xa4{\xf7~o\x82\xb8\x89\xd4\x8dr\x91\x9d\x98\x1b\x9ct\x9f\x90\xa2\xd3\xa8\xd0\xabm\xae3\xb3H\xb5\xe7\xb7"\xbb\x93\xbc%\xbf\x99\xc0g\xc1\xe4\xc3\x91\xc4\x87\xc3\xa7\xc5\xe4\xc5\xda\xc4\xab\xc5\x06\xc8q\xc8\xa9\xc9+\xcc\x83\xcd\xe3\xce\xa7\xd1\x1d\xd3\xd1\xd4\x14\xd6\x9f\xd7\xf0\xd8p\xd9\x84\xd9\x9a\xd9\xdd\xd9\x08\xd9t\xd8\xdd\xd7\x18\xd7\xbc\xd5\xe6\xd4M\xd4|\xd3\t\xd3\xb8\xd2 \xd2\xde\xd1\x8a\xd1+\xd1\xfd\xcf\x1a\xcf\x1b\xce\xa7\xcb \xca\x99\xc7k\xc3\xa0\xc0\xda\xbb\xdf\xb7\xb8\xb0\xb6\xa8n\xa2\xf3\x96\x01\x8f\xb2\x8a\xec\x85\x1c\x8c\x90\x9c\x01\xa3\x1c\xa9|\xb3\x04\xb8\xde\xbb>\xc1B\xc31\xc5I\xc6\x1b\xc7\x86\xc7J\xc7v\xc6\xe2\xc5!\xc5\x8c\xc4%\xc4\xbd\xc3\xe2\xc3d\xc5\x1b\xc6G\xc7\x97\xc9\x80\xcaf\xcbV\xcc\x84\xccQ\xcc\xf5\xcb:\xca\xd2\xc8-\xc7\xec\xc2\x84\xc0\xac\xbd\xaf\xb7\xab\xb4\x17\xb2\xab\xaf\x1b\xab2\xae,\xb0\x9e\xb2C\xb7 \xc1\x00\xc6\xa2\xca^\xd2\xc1\xd5V\xd9\xd5\xdd\xf2\xdff\xe2\x05\xe4\t\xe6\x82\xe76\xe8\xd8\xe8<\xe9\xae\xe9a\xe9C\xe9T\xe9\x9a\xe8d\xe8\x97\xe8f\xe8\x8a\xe7\xd6\xe7\xa7\xe7\xc2\xe6q\xe6v\xe6\x02\xe5-\xe4(\xe3\xf2\xe1\x93\xdfj\xdd\xac\xdb8\xd9\x83\xd7\x0c\xd4K\xd2\x98\xd0\xf5\xcb\xff\xc9\x0c\xcaa\xc5l\xc4J\xc5H\xc4\x0f\xc2\xe1\xc1\x02\xc13\xc0\\\xbf\xc6\xbbZ\xbb\xd3\xb9\xc9\xb4\r\xb3\xa9\xb2x\xae\xa9\xad\x0e\xad\x04\xacK\xab\xcc\xa9\x9e\xa9\x1b\xaa\xb6\xa9#\xa8\xa8\xa8\x85\xa8\x01\xa8*\xa8\xcd\xa77\xa7\xbd\xa6\x82\xa5\x15\xa5@\xa4N\xa2\x90\xa2\xd7\xa5\xfa\xa7A\xab\x0f\xb1 \xb4\xa8\xb74\xbce\xbe\xc2\xc0X\xc2&\xc4\xa7\xc5h\xc6Y\xc7\xfb\xc7\xe2\xc8k\xc9\xbd\xc94\xca3\xca>\xca\x17\xca\xe4\xc9\x8f\xc96\xc9P\xc89\xc77\xc6[\xc4\xfe\xc2\xa2\xc0\xf8\xbd\x01\xbc\xda\xb7\x01\xb5\x8a\xb1\xbc\xaa\xb5\xa6]\xa2\xae\x9dp\x92\xfc\x8b}\x84\xe5r\x85g\x8ac\xecd\x17r\x8d\x899\x93\xa8\x9b\x87\xa9\x9c\xaf\xf4\xb5\x9f\xbe\xb2\xc2\xa4\xc7\x11\xcbl\xcfI\xd3|\xd5\xa9\xd7=\xd9\x04\xdc\xfe\xdc\xf7\xdd\xb9\xdfT\xe0\xc1\xe0\xeb\xe1n\xe2%\xe3\xd3\xe3\x06\xe5%\xe6\xef\xe6F\xe8\t\xe9\xa9\xe9\x8f\xea\xc9\xea\x93\xeau\xea{\xea\x9f\xe93\xe9\x8b\xe8\xcc\xe7r\xe6\xd0\xe4~\xe3\x85\xe1\xcf\xdf\xcc\xdb\xf2\xd8#\xd6w\xcf\x98\xcbh\xc7J\xbe\x81\xb9G\xb5O\xb18\xa9\x08\xab\xd5\xaa\x10\xaac\xaek\xaf\xcb\xafb\xb0\xfd\xaf\x10\xaf\xfd\xad\xdd\xa9\xa4\xa7/\xa6\\\xa0\x8c\x9e\x16\xa0K\xa0\x93\x9f1\xa5r\xa7+\xaa\x97\xac\x0c\xb1\xd5\xb2h\xb4\x92\xb6\x05\xb7\x98\xb7\x91\xb6\xb8\xb5\x06\xb6\xf1\xb4\xa0\xafo\xb0\xfa\xae\xd1\xab3\xac\x87\xab\xde\xaeL\xb0\xbd\xafp\xb1.\xb6\xb5\xb6\xb0\xb8&\xbdC\xbfI\xc1&\xc6\x81\xc8\xc8\xca\xf3\xcc(\xd0\x19\xd2X\xd3N\xd4\xc1\xd4p\xd5\xc1\xd4\x86\xd4\xae\xd4A\xd4h\xd4d\xd56\xd6\x94\xd7A\xda\xf2\xdbz\xdd\n\xdf\xda\xe2v\xe3\xc6\xe4\xe2\xe7\xac\xe8\x9e\xe8\xdb\xe9\xcc\xe9{\xe9\x16\xe9_\xe7d\xe6\x08\xe5\x8d\xe1\xba\xdf\xc9\xdd\x95\xd9q\xd7\x1d\xd5\xcb\xd2\xbc\xcd\xca\xca\xae\xc7C\xc1\xc1\xbdp\xb9\x10\xb2\xba\xad)\xa8\x1f\xa4 \x9f\x98\x9c#\x9c\xac\x9d\xb1\x9e\x15\xa0\xa7\xa1\xfb\xa1b\xa2\xf5\xa1\xce\x9f\xac\x9e1\x9d\x05\x9a\xb3\x97x\x96U\x97%\x99\x82\x9b!\xa2\x81\xa5\xc7\xa8\x98\xab\xfd\xaf\x81\xb1\x85\xb2H\xb3\x03\xb3Z\xb2%\xb0\xbe\xae\x97\xad\xc7\xac\xe3\xab\xe3\xae5\xb1\x8a\xb4\xde\xb7m\xbd5\xc1\xe0\xc3\\\xc7$\xc9i\xcb\x07\xcd\xe2\xcd\xdb\xce<\xcf\x81\xcf_\xcf\x0b\xcfr\xce\xbe\xcd\xf2\xcb\xb4\xcaz\xc9\xe1\xc6\x93\xc5\xb5\xc4\xd1\xc2Y\xc2\xb5\xc2\xb5\xc2\x97\xc2\xfa\xc2\xea\xc2\xa8\xc2 \xc2\xd7\xbf&\xbe\x15\xbc\xca\xb6\xca\xb3|\xb0;\xa9\x1a\xa6Q\xa5\xd6\xa1\xd0\xa2\x17\xa8\xa2\xaa\xa0\xadw\xb3U\xb6\xc6\xb9g\xbc\x08\xc0\xe4\xc2\x9f\xc4h\xc6g\xc7\xf2\xc8\xd7\xc8\xcf\xc8\xfd\xc8W\xc8d\xc6\xbe\xc4\x02\xc3\xd5\xbf\x96\xbdi\xb9\x1a\xb5\xad\xb1\x04\xab\x9c\xa6\xec\xa0\xcd\x97\x7f\x92\xdd\x8cr\x88\x04\x82\xe5\x81\x7f\x82\x89\x85\x16\x88Q\x8b\xc7\x8f\x08\x92n\x94<\x96;\x99\xd5\x9a%\x9cf\x9ep\x9f\x86\xa0\xd9\xa1r\xa2B\xa3\x19\xa3\xe1\xa2\x01\xa3B\xa2\x81\x9f\xe5\x9d\x97\x9bQ\x97T\x94\x8c\x8e+\x8a\xa2\x86{\x7f\x1b} \x7f^~,\x81~\x89}\x8d\x1c\x91\xac\x99h\x9d\xc3\xa0\x06\xa4\xb4\xa9\x1e\xacN\xae\xb4\xb1&\xb3\xc3\xb4\xab\xb6\xae\xb7\xe1\xb8\xae\xb9\xc6\xba\xd1\xbb\x86\xbc\x88\xbd9\xbe0\xbf\xe9\xbfn\xc0T\xc1\xb3\xc1\xa9\xc1;\xc2"\xc29\xc1\xd1\xc0l\xc0\xd9\xbe\xf4\xbd\x0c\xbd\x02\xbc\xd1\xb9\x8f\xb8A\xb7\x8b\xb4\xc8\xb2\x05\xb1\xec\xad\xf3\xab\x8e\xa8j\xa5\x06\xa3\xdf\x9d\xde\x9a\n\x98\x89\x91]\x8e\xbd\x8b\xb2\x88\xc5\x81h\x80D~py\x17y%{P{\x14}\'\x80\xf3\x81\xc0\x84I\x86J\x87~\x89\xfd\x89\xc4\x88\xb0\x89\x19\x89\x9b\x86\xb4\x85"\x85\xe2\x82\x1f\x82\x83\x81;\x81\x80\x82\xe3\x81\xa1\x82\xd5\x86#\x88\xb9\x87\xbc\x8b\xbc\x8c\xef\x8c\xfa\x8d\x1b\x90\xd4\x90\x91\x91\xe3\x92\x86\x93\xb7\x94\xf7\x95\xa7\x96\xd8\x97\xf0\x98\xba\x99\xb7\x9aT\x9b\xe8\x9bO\x9cT\x9c\xba\x9b6\x9b\x1f\x9a\t\x98\x8d\x96D\x94F\x92W\x8eF\x8b\x93\x88#\x83\xd9\x7f\xe6{\xdes\x9an?h\xf4`TN\xbd=\xea\'\x00\x00J\x1d;5TP\xb5Ylb\x08i\xd4r\xd4w\xba{\xb5\x81\x8e\x84!\x88\xcc\x8b\xce\x8d\xc8\x90o\x92\x0f\x94U\x96M\x97\xcd\x97I\x98^\x99\xb2\x98{\x98\xce\x98{\x97\x0e\x97\xd1\x961\x96\xe8\x94k\x94\xd1\x93\xd3\x92W\x92"\x91z\x90\xd9\x8f\x9e\x8d\xe8\x8c\x83\x8dc\x8bp\x8b&\x8d\x8f\x8d\xe7\x8c\xc8\x8f\xdb\x90 \x91q\x92\x15\x95\x9a\x95i\x96\xfa\x97\x88\x98\xe8\x98\x9a\x99\xd7\x99?\x9aF\x9a\xe0\x99"\x9a\xd4\x99\xed\x98o\x98?\x98%\x97\x84\x96\x86\x960\x96\xc8\x95\xed\x95\xf5\x95\x85\x96\xd4\x96\x8c\x97\xe4\x98\xc3\x99t\x9a>\x9b\xa6\x9c[\x9d\x14\x9e1\x9f\x0b\xa0\xab\xa0\xe4\xa1\xb4\xa2\x98\xa3\xe2\xa4j\xa5e\xa6\xea\xa6w\xa7\x04\xa8\x1d\xa8\xc3\xa7a\xa7U\xa7;\xa6\x85\xa5\xaf\xa4\xd5\xa3e\xa2\xfd\xa0\x00\xa0Y\x9eL\x9d\\\x9bh\x99@\x98K\xd3')
None

I send you the modified files if you require it:
test (2).zip

Did I missed something in my try ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions