From 2517d3ac2132e8d227fe736ffdab9cbdd3bfd155 Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 29 Jan 2023 19:27:56 +0000 Subject: [PATCH 01/35] Updates to tidy up handling of low-level TG filter. Also, remove the obsolete protocol versions 2 and 3 and some further tidying up. Squashed commit of the following: commit 7b13b9f04638b637bf2d1ac79d3885ce1005f137 Author: Simon Date: Sun Jan 29 19:01:33 2023 +0000 SERVER_ID is bytes! commit cee3bc76fb8cb8dfaa72a9816469e3bf525341c9 Author: Simon Date: Sun Jan 29 18:50:06 2023 +0000 frog commit 82432b9c2c28f850551719f8dfb8b350accdcc62 Author: Simon Date: Sun Jan 29 18:49:53 2023 +0000 fred commit 6601573c7fe6464f39a8d09f4f4311c16f61ba1f Author: Simon Date: Sun Jan 29 18:39:08 2023 +0000 Stringly commit 28fa37f8280e13f0748b9d94c3e46ffb2406e3e6 Author: Simon Date: Sun Jan 29 18:30:37 2023 +0000 self commit 3e6d28d4dda82e81755ce8020eb1cbd5d89b004e Author: Simon Date: Sun Jan 29 18:23:42 2023 +0000 Fix trace commit a15901dc79d80a2be8fd17166d3d2e81cf384616 Author: Simon Date: Sun Jan 29 18:21:30 2023 +0000 Tweak config file used in install script commit 654ec135ca0da89086f42de85405af6dfbf963eb Merge: f75ff26 d4e3922 Author: Simon Date: Sun Jan 29 17:48:22 2023 +0000 Merge branch 'master' into testing commit f75ff26cfab2529543beca7aa73db9c69516e84d Merge: c0b5216 48339d3 Author: Simon Date: Sun Jan 29 17:46:07 2023 +0000 Merge branch 'master' into testing commit c0b5216e5a065701fe682174545ba76e08ef2afe Author: Simon Date: Sun Jan 29 11:04:45 2023 +0000 more config work commit c79ce0551dc60fc1de8149ae6926822125c4a397 Author: Simon Date: Sun Jan 29 00:54:56 2023 +0000 ib commit 294a09c8f1e18589e9fd22a5162ece201856b761 Author: Simon Date: Sun Jan 29 00:50:36 2023 +0000 Enable minimal config and tidy up global ACL commit d1dc58d46f5e7b7c1204c65653230bf05f13d088 Author: Simon Date: Sat Jan 28 23:12:41 2023 +0000 Deprecate protocol versions 2 and 3 --- FreeDMR-MINIMAL.cfg | 42 +++++++ FreeDMR-SAMPLE.cfg | 2 +- a | 0 bridge_master.py | 2 +- config.py | 65 ++++++----- docker-configs/docker-compose_install.sh | 67 ++++------- hblink.py | 141 ++++------------------- 7 files changed, 122 insertions(+), 197 deletions(-) create mode 100755 FreeDMR-MINIMAL.cfg delete mode 100644 a diff --git a/FreeDMR-MINIMAL.cfg b/FreeDMR-MINIMAL.cfg new file mode 100755 index 0000000..0f7a827 --- /dev/null +++ b/FreeDMR-MINIMAL.cfg @@ -0,0 +1,42 @@ +#This empty config file will use defaults for everything apart from OBP and HBP config +#This is usually a sensible choice. + + +[GLOBAL] +SERVER_ID: 0000 + +[REPORTS] + +[LOGGER] + +[ALIASES] + +[ALLSTAR] + +[SYSTEM] +MODE: MASTER +ENABLED: True +REPEAT: True +MAX_PEERS: 1 +EXPORT_AMBE: False +IP: 127.0.0.1 +PORT: 54000 +PASSPHRASE: +GROUP_HANGTIME: 5 +USE_ACL: True +REG_ACL: DENY:1 +SUB_ACL: DENY:1 +TGID_TS1_ACL: PERMIT:ALL +TGID_TS2_ACL: PERMIT:ALL +DEFAULT_UA_TIMER: 60 +SINGLE_MODE: True +VOICE_IDENT: True +TS1_STATIC: +TS2_STATIC: +DEFAULT_REFLECTOR: 0 +ANNOUNCEMENT_LANGUAGE: en_GB +GENERATOR: 100 +ALLOW_UNREG_ID: False +PROXY_CONTROL: True +OVERRIDE_IDENT_TG: + diff --git a/FreeDMR-SAMPLE.cfg b/FreeDMR-SAMPLE.cfg index e3ecc7a..fbeb09e 100755 --- a/FreeDMR-SAMPLE.cfg +++ b/FreeDMR-SAMPLE.cfg @@ -9,7 +9,7 @@ TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL GEN_STAT_BRIDGES: True ALLOW_NULL_PASSPHRASE: True -ANNOUNCEMENT_LANGUAGES: en_GB,en_US,es_ES,fr_FR,de_DE,dk_DK,it_IT,no_NO,pl_PL,se_SE,pt_PT,cy_GB,el_GR,CW +ANNOUNCEMENT_LANGUAGES: SERVER_ID: 0000 DATA_GATEWAY: False VALIDATE_SERVER_IDS: True diff --git a/a b/a deleted file mode 100644 index e69de29..0000000 diff --git a/bridge_master.py b/bridge_master.py index d7cd7b9..bd73887 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -2536,7 +2536,7 @@ if __name__ == '__main__': if cli_args.LOG_LEVEL: CONFIG['LOGGER']['LOG_LEVEL'] = cli_args.LOG_LEVEL logger = log.config_logging(CONFIG['LOGGER']) - logger.info('\n\nCopyright (c) 2020, 2021, 2022 Simon G7RZU simon@gb7fr.org.uk') + logger.info('\n\nCopyright (c) 2020, 2021, 2022, 2023 Simon G7RZU simon@gb7fr.org.uk') logger.info('Copyright (c) 2013, 2014, 2015, 2016, 2018, 2019\n\tThe Regents of the K0USY Group. All rights reserved.\n') logger.debug('(GLOBAL) Logging system started, anything from here on gets logged') diff --git a/config.py b/config.py index 16f74ed..3eed4e2 100755 --- a/config.py +++ b/config.py @@ -182,7 +182,7 @@ def build_config(_config_file): 'TGID_URL': config.get(section, 'TGID_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/talkgroup_ids.json'), 'STALE_TIME': config.getint(section, 'STALE_DAYS', fallback=1) * 86400, 'SUB_MAP_FILE': config.get(section, 'SUB_MAP_FILE', fallback='sub_map.pkl'), - 'LOCAL_SUBSCRIBER_FILE': config.get(section, 'LOCAL_SUBSCRIBER_FILE', fallback=''), + 'LOCAL_SUBSCRIBER_FILE': config.get(section, 'LOCAL_SUBSCRIBER_FILE', fallback='local_subscribers.json'), 'SERVER_ID_URL': config.get(section, 'SERVER_ID_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/server_ids.tsv'), 'SERVER_ID_FILE': config.get(section, 'SERVER_ID_FILE', fallback='server_ids.tsv'), 'CHECKSUM_URL': config.get(section, 'CHECKSUM_URL', fallback='https://freedmr-lh.gb7fr.org.uk/file_checksums.json'), @@ -304,52 +304,55 @@ def build_config(_config_file): elif config.get(section, 'MODE') == 'MASTER': CONFIG['SYSTEMS'].update({section: { 'MODE': config.get(section, 'MODE'), - 'ENABLED': config.getboolean(section, 'ENABLED'), - 'REPEAT': config.getboolean(section, 'REPEAT'), - 'MAX_PEERS': config.getint(section, 'MAX_PEERS'), - 'IP': config.get(section, 'IP'), - 'PORT': config.getint(section, 'PORT'), - 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), - 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), - 'USE_ACL': config.getboolean(section, 'USE_ACL'), - 'REG_ACL': config.get(section, 'REG_ACL'), - 'SUB_ACL': config.get(section, 'SUB_ACL'), - 'TG1_ACL': config.get(section, 'TGID_TS1_ACL'), - 'TG2_ACL': config.get(section, 'TGID_TS2_ACL'), - 'DEFAULT_UA_TIMER': config.getint(section, 'DEFAULT_UA_TIMER'), - 'SINGLE_MODE': config.getboolean(section, 'SINGLE_MODE'), - 'VOICE_IDENT': config.getboolean(section, 'VOICE_IDENT'), - 'TS1_STATIC': config.get(section,'TS1_STATIC'), - 'TS2_STATIC': config.get(section,'TS2_STATIC'), + 'ENABLED': config.getboolean(section, 'ENABLED', fallback=True ), + 'REPEAT': config.getboolean(section, 'REPEAT', fallback=True), + 'MAX_PEERS': config.getint(section, 'MAX_PEERS', fallback=1), + 'IP': config.get(section, 'IP', fallback='127.0.0.1'), + 'PORT': config.getint(section, 'PORT', fallback=54000), + 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE', fallback=''), 'utf-8'), + 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME',fallback=5), + 'USE_ACL': config.getboolean(section, 'USE_ACL', fallback=False), + 'REG_ACL': config.get(section, 'REG_ACL', fallback=''), + 'SUB_ACL': config.get(section, 'SUB_ACL', fallback=''), + 'TG1_ACL': config.get(section, 'TGID_TS1_ACL', fallback=''), + 'TG2_ACL': config.get(section, 'TGID_TS2_ACL', fallback=''), + 'DEFAULT_UA_TIMER': config.getint(section, 'DEFAULT_UA_TIMER', fallback=10), + 'SINGLE_MODE': config.getboolean(section, 'SINGLE_MODE', fallback=True), + 'VOICE_IDENT': config.getboolean(section, 'VOICE_IDENT', fallback=True), + 'TS1_STATIC': config.get(section,'TS1_STATIC', fallback=''), + 'TS2_STATIC': config.get(section,'TS2_STATIC', fallback=''), 'DEFAULT_REFLECTOR': config.getint(section, 'DEFAULT_REFLECTOR'), - 'GENERATOR': config.getint(section, 'GENERATOR'), - 'ANNOUNCEMENT_LANGUAGE': config.get(section, 'ANNOUNCEMENT_LANGUAGE'), - 'ALLOW_UNREG_ID': config.getboolean(section,'ALLOW_UNREG_ID'), - 'PROXY_CONTROL' : config.getboolean(section,'PROXY_CONTROL'), - 'OVERRIDE_IDENT_TG': config.get(section, 'OVERRIDE_IDENT_TG') + 'GENERATOR': config.getint(section, 'GENERATOR', fallback=100), + 'ANNOUNCEMENT_LANGUAGE': config.get(section, 'ANNOUNCEMENT_LANGUAGE', fallback='en_GB'), + 'ALLOW_UNREG_ID': config.getboolean(section,'ALLOW_UNREG_ID', fallback=False), + 'PROXY_CONTROL' : config.getboolean(section,'PROXY_CONTROL', fallback=True), + 'OVERRIDE_IDENT_TG': config.get(section, 'OVERRIDE_IDENT_TG', fallback=False) }}) CONFIG['SYSTEMS'][section].update({'PEERS': {}}) elif config.get(section, 'MODE') == 'OPENBRIDGE': CONFIG['SYSTEMS'].update({section: { 'MODE': config.get(section, 'MODE'), - 'ENABLED': config.getboolean(section, 'ENABLED'), + 'ENABLED': config.getboolean(section, 'ENABLED', fallback=True), 'NETWORK_ID': config.getint(section, 'NETWORK_ID').to_bytes(4, 'big'), #'OVERRIDE_SERVER_ID': config.getint(section, 'OVERRIDE_SERVER_ID').to_bytes(4, 'big'), - 'IP': config.get(section, 'IP'), + 'IP': config.get(section, 'IP', fallback=''), 'PORT': config.getint(section, 'PORT'), 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE').ljust(20,'\x00')[:20], 'utf-8'), #'TARGET_SOCK': (gethostbyname(config.get(section, 'TARGET_IP')), config.getint(section, 'TARGET_PORT')), 'TARGET_IP': config.get(section, 'TARGET_IP'), 'TARGET_PORT': config.getint(section, 'TARGET_PORT'), - 'USE_ACL': config.getboolean(section, 'USE_ACL'), - 'SUB_ACL': config.get(section, 'SUB_ACL'), - 'TG1_ACL': config.get(section, 'TGID_ACL'), + 'USE_ACL': config.getboolean(section, 'USE_ACL', fallback=False), + 'SUB_ACL': config.get(section, 'SUB_ACL', fallback=''), + 'TG1_ACL': config.get(section, 'TGID_ACL', fallback=''), 'TG2_ACL': 'PERMIT:ALL', - 'RELAX_CHECKS': config.getboolean(section, 'RELAX_CHECKS'), - 'ENHANCED_OBP': config.getboolean(section, 'ENHANCED_OBP'), - 'VER' : config.getint(section, 'PROTO_VER') + 'RELAX_CHECKS': config.getboolean(section, 'RELAX_CHECKS', fallback=True), + 'ENHANCED_OBP': config.getboolean(section, 'ENHANCED_OBP',fallback=True), + 'VER' : config.getint(section, 'PROTO_VER', fallback=5) }}) + + if CONFIG['SYSTEMS'][section]['VER'] in (0,2,3) or CONFIG['SYSTEMS'][section]['VER'] > 5: + sys.exit('(%s) PROTO_VER not valid',section) try: diff --git a/docker-configs/docker-compose_install.sh b/docker-configs/docker-compose_install.sh index 1e23fcf..525408c 100644 --- a/docker-configs/docker-compose_install.sh +++ b/docker-configs/docker-compose_install.sh @@ -70,66 +70,32 @@ chown 54000:54000 /etc/freedmr/json && echo Install /etc/freedmr/freedmr.cfg ... cat << EOF > /etc/freedmr/freedmr.cfg +#This empty config file will use defaults for everything apart from OBP and HBP config +#This is usually a sensible choice. + +#I have moved to a config like this to encourage servers to use the accepted defaults +#unless you really know what you are doing. + [GLOBAL] -PATH: ./ -PING_TIME: 10 -MAX_MISSED: 3 -USE_ACL: True -REG_ACL: DENY:0-100000 -SUB_ACL: DENY:0-100000 -TGID_TS1_ACL: PERMIT:ALL -TGID_TS2_ACL: PERMIT:ALL -GEN_STAT_BRIDGES: True -ALLOW_NULL_PASSPHRASE: True -ANNOUNCEMENT_LANGUAGES: +#If you join the FreeDMR network, you need to add your ServerID Here. SERVER_ID: 0 -DATA_GATEWAY: False -VALIDATE_SERVER_IDS: True - [REPORTS] -REPORT: True -REPORT_INTERVAL: 60 -REPORT_PORT: 4321 -REPORT_CLIENTS: * [LOGGER] -LOG_FILE: /dev/null -LOG_HANDLERS: console-timed -LOG_LEVEL: INFO -LOG_NAME: FreeDMR [ALIASES] -TRY_DOWNLOAD: True -PATH: ./json/ -PEER_FILE: peer_ids.json -SUBSCRIBER_FILE: subscriber_ids.json -TGID_FILE: talkgroup_ids.json -PEER_URL: https://freedmr-lh.gb7fr.org.uk/json/peer_ids.json -SUBSCRIBER_URL: https://freedmr-lh.gb7fr.org.uk/json/subscriber_ids.json -TGID_URL: https://freedmr-lh.gb7fr.org.uk/json/talkgroup_ids.json -LOCAL_SUBSCRIBER_FILE: local_subcriber_ids.json -STALE_DAYS: 1 -SUB_MAP_FILE: sub_map.pkl -SERVER_ID_URL: https://freedmr-lh.gb7fr.org.uk/json/server_ids.tsv -SERVER_ID_FILE: server_ids.tsv -CHECKSUM_URL: https://freedmr-lh.gb7fr.org.uk/file_checksums.json -CHECKSUM_FILE: file_checksums.json - -#Control server shared allstar instance via dial / AMI + [ALLSTAR] -ENABLED: false -USER:admin -PASS: password -SERVER: asl.example.com -PORT: 5038 -NODE: 11111 +#This is an example OpenBridgeProtocol (OBP) or FreeBridgeProtocol (FBP) configuration +#If you joing FreeDMR, you will be given a config like this to paste in [OBP-TEST] MODE: OPENBRIDGE ENABLED: False IP: PORT: 62044 +#The ID which you expect to see sent from the other end of the link. NETWORK_ID: 1 PASSPHRASE: mypass TARGET_IP: @@ -137,11 +103,17 @@ TARGET_PORT: 62044 USE_ACL: True SUB_ACL: DENY:1 TGID_ACL: PERMIT:ALL +#Should always be true if using docker. RELAX_CHECKS: True +#True for FBP, False for OBP ENHANCED_OBP: True -PROTO_VER: 2 - +#PROTO_VER should be 5 for FreeDMR servers using FBP +#1 for other servers using OBP +PROTO_VER: 5 +#This defines parameters for repeater/hotspot connections +#via HomeBrewProtocol (HBP) +#I don't recommend changing most of this unless you know what you are doing [SYSTEM] MODE: MASTER ENABLED: True @@ -169,6 +141,7 @@ ALLOW_UNREG_ID: False PROXY_CONTROL: True OVERRIDE_IDENT_TG: +#Echo (Loro / Parrot) server [ECHO] MODE: PEER ENABLED: True diff --git a/hblink.py b/hblink.py index 06164c3..dea9462 100755 --- a/hblink.py +++ b/hblink.py @@ -201,20 +201,10 @@ class OPENBRIDGE(DatagramProtocol): self.transport.write(_packet, (self._config['TARGET_IP'], self._config['TARGET_PORT'])) elif 'VER' in self._config and self._config['VER'] == 3: - _packet = b''.join([DMRF,_packet[4:11], self._CONFIG['GLOBAL']['SERVER_ID'],_packet[15:]]) - _h = blake2b(key=self._config['PASSPHRASE'], digest_size=16) - _h.update(_packet) - _hash = _h.digest() - _packet = b''.join([_packet,time_ns().to_bytes(8,'big'), _hops, _hash]) - self.transport.write(_packet, (self._config['TARGET_IP'], self._config['TARGET_PORT'])) + logger.error('(%s) protocol version 3 no longer supported',self._system) elif 'VER' in self._config and self._config['VER'] == 2: - _packet = b''.join([DMRF,_packet[4:11], self._CONFIG['GLOBAL']['SERVER_ID'],_packet[15:], time_ns().to_bytes(8,'big')]) - _h = blake2b(key=self._config['PASSPHRASE'], digest_size=16) - _h.update(_packet) - _hash = _h.digest() - _packet = b''.join([_packet,_hops, _hash]) - self.transport.write(_packet, (self._config['TARGET_IP'], self._config['TARGET_PORT'])) + logger.error('(%s) protocol version 2 no longer supported',self._system) # KEEP THE FOLLOWING COMMENTED OUT UNLESS YOU'RE DEBUGGING DEEPLY!!!! #logger.debug('(%s) TX Packet to OpenBridge %s:%s -- %s %s', self._system, self._config['TARGET_IP'], self._config['TARGET_PORT'], _packet, _hash) else: @@ -486,122 +476,39 @@ class OPENBRIDGE(DatagramProtocol): self.send_bcsq(_dst_id,_stream_id) return - + #Low-level TG filtering if _call_type != 'unit': _int_dst_id = int_id(_dst_id) - if _int_dst_id <= 79 or (_int_dst_id >= 9990 and _int_dst_id <= 9999) or _int_dst_id == 900999: - if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER', self._system, int_id(_stream_id), _int_dst_id) - self.send_bcsq(_dst_id,_stream_id) - self._laststrid.append(_stream_id) - return - - # ACL Processing - if self._CONFIG['GLOBAL']['USE_ACL']: - if not acl_check(_rf_src, self._CONFIG['GLOBAL']['SUB_ACL']): - if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s ON TGID %s BY GLOBAL TS1 ACL', self._system, int_id(_stream_id), int_id(_rf_src)) - self.send_bcsq(_dst_id,_stream_id) - self._laststrid.append(_stream_id) - return - if _slot == 1 and not acl_check(_dst_id, self._CONFIG['GLOBAL']['TG1_ACL']): + + if _int_dst_id <= 79: if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s ON TGID %s BY GLOBAL TS1 ACL', self._system, int_id(_stream_id), int_id(_dst_id)) + logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to repeater)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) self._laststrid.append(_stream_id) return - if self._config['USE_ACL']: - if not acl_check(_rf_src, self._config['SUB_ACL']): + + if (_int_dst_id >= 9990 and _int_dst_id <= 9999) or _int_dst_id == 900999: if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY SYSTEM ACL', self._system, int_id(_stream_id), int_id(_rf_src)) + logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to server)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) self._laststrid.append(_stream_id) return - if not acl_check(_dst_id, self._config['TG1_ACL']): + + if (_int_dst_id >= 92 and _int_dst_id <= 199) and int(str(int.from_bytes(_source_server,'big'))[:4]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:4]): if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s ON TGID %s BY SYSTEM ACL', self._system, int_id(_stream_id), int_id(_dst_id)) + logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to server main ID)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) self._laststrid.append(_stream_id) return - _data = b''.join([DMRD,_data[4:]]) - - _hops = _inthops.to_bytes(1,'big') - # Userland actions -- typically this is the function you subclass for an application - self.dmrd_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data,_hash,_hops,_source_server,_ber,_rssi,_source_rptr) - #Silently treat a DMRD packet like a keepalive - this is because it's traffic and the - #Other end may not have enabled ENAHNCED_OBP - self._config['_bcka'] = time() - else: - h,p = _sockaddr - logger.warning('(%s) FreeBridge HMAC failed, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:69]), len(_packet[69:]), repr(_packet[61:]),h,p) - - - elif _packet[:4] == DMRF: - _data = _packet[:53] - _timestamp = _packet[53:60] - _hops = _packet[61] - _hash = _packet[62:] - #_ckhs = hmac_new(self._config['PASSPHRASE'],_data,sha1).digest() - _h = blake2b(key=self._config['PASSPHRASE'], digest_size=16) - if 'VER' in self._config and self._config['VER'] > 2: - _h.update(_packet[:53]) - elif 'VER' in self._config and self._config['VER'] == 2: - _h.update(_packet[:61]) - - _ckhs = _h.digest() - - if compare_digest(_hash, _ckhs) and (_sockaddr == self._config['TARGET_SOCK'] or self._config['RELAX_CHECKS']): - _peer_id = _data[11:15] - if self._config['NETWORK_ID'] != _peer_id: - if _stream_id not in self._laststrid: - logger.error('(%s) OpenBridge packet discarded because NETWORK_ID: %s Does not match sent Peer ID: %s', self._system, int_id(self._config['NETWORK_ID']), int_id(_peer_id)) - self._laststrid.append(_stream_id) - return - _seq = _data[4] - _rf_src = _data[5:8] - _dst_id = _data[8:11] - _int_dst_id = int_id(_dst_id) - _bits = _data[15] - _slot = 2 if (_bits & 0x80) else 1 - #_call_type = 'unit' if (_bits & 0x40) else 'group' - if _bits & 0x40: - _call_type = 'unit' - elif (_bits & 0x23) == 0x23: - _call_type = 'vcsbk' - else: - _call_type = 'group' - _frame_type = (_bits & 0x30) >> 4 - _dtype_vseq = (_bits & 0xF) # data, 1=voice header, 2=voice terminator; voice, 0=burst A ... 5=burst F - _stream_id = _data[16:20] - #logger.debug('(%s) DMRD - Seqence: %s, RF Source: %s, Destination ID: %s', self._system, int_id(_seq), int_id(_rf_src), int_id(_dst_id)) - - #Don't do anything if we are STUNned - if 'STUN' in self._CONFIG: + if (_int_dst_id >= 80 and _int_dst_id <= 89) or (_int_dst_id >= 800 and _int_dst_id <= 899) and int(str(int.from_bytes(_source_server,'big'))[:3]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:3]): if _stream_id not in self._laststrid: - logger.warning('(%s) Bridge STUNned, discarding', self._system) - self._laststrid.append(_stream_id) - return - - #Increment max hops - _inthops = _hops +1 - - if _inthops > 10: - logger.warning('(%s) MAX HOPS exceed, dropping. Hops: %s, DST: %s', self._system, _inthops, _int_dst_id) - self.send_bcsq(_dst_id,_stream_id) - return - - - #Low-level TG filtering - if _call_type != 'unit': - _int_dst_id = int_id(_dst_id) - if _int_dst_id <= 79 or (_int_dst_id >= 9990 and _int_dst_id <= 9999) or _int_dst_id == 900999: - if _stream_id not in self._laststrid: - logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER', self._system, int_id(_stream_id), _int_dst_id) + logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to MCC)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) self._laststrid.append(_stream_id) return + # ACL Processing if self._CONFIG['GLOBAL']['USE_ACL']: @@ -630,23 +537,22 @@ class OPENBRIDGE(DatagramProtocol): self.send_bcsq(_dst_id,_stream_id) self._laststrid.append(_stream_id) return - - - #Remove timestamp from data. For now dmrd_received does not expect it - #Leaving it in screws up the AMBE data - #_data = b''.join([_data[:5],_data[12:]]) _data = b''.join([DMRD,_data[4:]]) _hops = _inthops.to_bytes(1,'big') # Userland actions -- typically this is the function you subclass for an application - self.dmrd_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data,_hash,_hops) + self.dmrd_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data,_hash,_hops,_source_server,_ber,_rssi,_source_rptr) #Silently treat a DMRD packet like a keepalive - this is because it's traffic and the #Other end may not have enabled ENAHNCED_OBP self._config['_bcka'] = time() else: h,p = _sockaddr - logger.warning('(%s) FreeBridge HMAC failed, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:61]), len(_packet[61:]), repr(_packet[61:]),h,p) + logger.warning('(%s) FreeBridge HMAC failed, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:69]), len(_packet[69:]), repr(_packet[61:]),h,p) + + + elif _packet[:4] == DMRF: + logger.error('(%s) Protocol versions 2 and 3 no longer supported',self._system) if self._config['ENHANCED_OBP']: if _packet[:2] == BC: # Bridge Control packet (Extended OBP) @@ -703,7 +609,9 @@ class OPENBRIDGE(DatagramProtocol): if compare_digest(_hash, _ckhs): logger.trace('(%s) *ProtoControl* BCVE Version received, Ver: %s',self._system,_ver) - if _ver > self._config['VER']: + if _ver == 2 or _ver == 3 or _ver > 5: + logger.info('(%s) *ProtoControl* BCVE Version not supported, Ver: %s',self._system,_ver) + elif _ver > self._config['VER']: logger.info('(%s) *ProtoControl* BCVE Version upgrade, Ver: %s',self._system,_ver) self._config['VER'] = _ver elif _ver == self._config['VER']: @@ -927,7 +835,6 @@ class HBSYSTEM(DatagramProtocol): # Extract the command, which is various length, all but one 4 significant characters -- RPTCL _command = _data[:4] - if _command == DMRD: # DMRData -- encapsulated DMR data frame _peer_id = _data[11:15] if _peer_id in self._peers \ From 32b50557cd3580f8beacf52c6266d978ce16a03b Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 29 Jan 2023 19:46:14 +0000 Subject: [PATCH 02/35] blocking wrong MCC --- hblink.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hblink.py b/hblink.py index dea9462..dc5aafc 100755 --- a/hblink.py +++ b/hblink.py @@ -502,7 +502,7 @@ class OPENBRIDGE(DatagramProtocol): self._laststrid.append(_stream_id) return - if (_int_dst_id >= 80 and _int_dst_id <= 89) or (_int_dst_id >= 800 and _int_dst_id <= 899) and int(str(int.from_bytes(_source_server,'big'))[:3]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:3]): + if ((_int_dst_id >= 80 and _int_dst_id <= 89) or (_int_dst_id >= 800 and _int_dst_id <= 899)) and int(str(int.from_bytes(_source_server,'big'))[:3]) != int(str(int.from_bytes(self._CONFIG['GLOBAL']['SERVER_ID'],'big'))[:3]): if _stream_id not in self._laststrid: logger.info('(%s) CALL DROPPED WITH STREAM ID %s FROM SUBSCRIBER %s BY GLOBAL TG FILTER (local to MCC)', self._system, int_id(_stream_id), _int_dst_id) self.send_bcsq(_dst_id,_stream_id) From 39a61d763b0dced24de94cfdd89316c14db67248 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 30 Jan 2023 23:17:16 +0000 Subject: [PATCH 03/35] ci --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5451553..f3e0084 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -63,7 +63,7 @@ build-debug: # This job runs in the build stage, which runs first. script: - echo "Compiling the code..." - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker buildx build --no-cache -f Dockerfile-ci -t gitlab.hacknix.net:5050/hacknix/freedmr:debug --platform linux/amd64 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t gitlab.hacknix.net:5050/hacknix/freedmr:debug --platform linux/amd64 --push . only: - debug From 4a504468d3883c9d694cdc56dbb6971edd466877 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 31 Jan 2023 10:19:48 +0000 Subject: [PATCH 04/35] Debug when systems have no bridges. Only enable when debugging. --- bridge_master.py | 18 ++++++++++++++++++ config.py | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index bd73887..8fb0a63 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -388,6 +388,17 @@ def statTrimmer(): if CONFIG['REPORTS']['REPORT']: report_server.send_clients(b'bridge updated') +#Identify systems with no bridges +def bridgeDebug(): + for system in CONFIG['SYSTEMS']: + bridgeroll = 0 + for bridge in BRIDGES: + for enabled_system in BRIDGE['bridge']: + if enabled_system == system: + bridgeroll += 1 + if not bridgeroll: + logger.warn('{BRIDGEDEBUG) system %s has no bridges', system) + def kaReporting(): logger.debug('(ROUTER) KeepAlive reporting loop started') for system in systems: @@ -2757,6 +2768,13 @@ if __name__ == '__main__': ka_task = task.LoopingCall(kaReporting) ka = ka_task.start(60) ka.addErrback(loopingErrHandle) + + #Debug bridges + if CONFIG['GLOBAL']['DEBUG_BRIDGES']: + debug_bridges_task = task.LoopingCall(bridgeDebug) + debug_bridges = debug_bridges_task.start(66) + debug_bridges.addErrback(loopingErrHandle) + #Subscriber map trimmer sub_trimmer_task = task.LoopingCall(SubMapTrimmer) diff --git a/config.py b/config.py index 3eed4e2..2e51569 100755 --- a/config.py +++ b/config.py @@ -147,7 +147,8 @@ def build_config(_config_file): 'ANNOUNCEMENT_LANGUAGES': config.get(section, 'ANNOUNCEMENT_LANGUAGES', fallback=''), 'SERVER_ID': config.getint(section, 'SERVER_ID', fallback=0).to_bytes(4, 'big'), 'DATA_GATEWAY': config.getboolean(section, 'DATA_GATEWAY', fallback=False), - 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True) + 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True), + 'DEBUG_BRIDGES' : config.getboolean(section, 'DEBUG_BRIDGES', fallback=False) }) if not CONFIG['GLOBAL']['ANNOUNCEMENT_LANGUAGES']: From 3f360beeb32c4331177986cc44a3a71ae334f267 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 31 Jan 2023 10:24:15 +0000 Subject: [PATCH 05/35] Upgrade python to 3.11 --- docker-configs/Dockerfile-ci | 2 +- docker-configs/Dockerfile-proxy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-configs/Dockerfile-ci b/docker-configs/Dockerfile-ci index 6e7320b..a7389f3 100644 --- a/docker-configs/Dockerfile-ci +++ b/docker-configs/Dockerfile-ci @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ############################################################################### -FROM python:3.10-alpine +FROM python:3.11-alpine ENTRYPOINT [ "/entrypoint" ] diff --git a/docker-configs/Dockerfile-proxy b/docker-configs/Dockerfile-proxy index 898029a..bb5378b 100644 --- a/docker-configs/Dockerfile-proxy +++ b/docker-configs/Dockerfile-proxy @@ -15,7 +15,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ############################################################################### -FROM python:3.10-alpine +FROM python:3.11-alpine ENTRYPOINT [ "/entrypoint" ] From 63fc3fd2a94f572dd7fd9057195bcf7b5bf30a02 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 31 Jan 2023 12:27:30 +0000 Subject: [PATCH 06/35] debug --- bridge_master.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bridge_master.py b/bridge_master.py index 8fb0a63..0090d3a 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -390,6 +390,7 @@ def statTrimmer(): #Identify systems with no bridges def bridgeDebug(): + logger.info('(BRIDGEDEBUG) Running bridge debug') for system in CONFIG['SYSTEMS']: bridgeroll = 0 for bridge in BRIDGES: From 26cb33910c7d1f5dbb1ab5f2de18fc3f3d07c0f7 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 6 Feb 2023 13:58:44 +0000 Subject: [PATCH 07/35] Fix bad report_clients setting in config defaults --- FreeDMR-MINIMAL.cfg | 1 + config.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/FreeDMR-MINIMAL.cfg b/FreeDMR-MINIMAL.cfg index 0f7a827..ea46f37 100755 --- a/FreeDMR-MINIMAL.cfg +++ b/FreeDMR-MINIMAL.cfg @@ -4,6 +4,7 @@ [GLOBAL] SERVER_ID: 0000 +DEBUG_BRIDGES: True [REPORTS] diff --git a/config.py b/config.py index 2e51569..f845177 100755 --- a/config.py +++ b/config.py @@ -159,7 +159,7 @@ def build_config(_config_file): 'REPORT': config.getboolean(section, 'REPORT', fallback=True), 'REPORT_INTERVAL': config.getint(section, 'REPORT_INTERVAL', fallback=60), 'REPORT_PORT': config.getint(section, 'REPORT_PORT', fallback=4321), - 'REPORT_CLIENTS': config.get(section, 'REPORT_CLIENTS',fallback='127.0.0.1').split(',') + 'REPORT_CLIENTS': config.get(section, 'REPORT_CLIENTS',fallback='*').split(',') }) elif section == 'LOGGER': From dad502dc14bf012574c8fb9830f286c7028cc80d Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 10:33:14 +0000 Subject: [PATCH 08/35] Updated audio files with reduced audio gain (EA5GVK) --- Audio/es_ES_2/alfa.ambe | Bin 306 -> 306 bytes Audio/es_ES_2/bravo.ambe | Bin 315 -> 315 bytes Audio/es_ES_2/busy.ambe | Bin 414 -> 414 bytes Audio/es_ES_2/charlie.ambe | Bin 306 -> 306 bytes Audio/es_ES_2/delta.ambe | Bin 324 -> 324 bytes Audio/es_ES_2/echo.ambe | Bin 261 -> 261 bytes Audio/es_ES_2/eight.ambe | Bin 306 -> 306 bytes Audio/es_ES_2/five.ambe | Bin 342 -> 342 bytes Audio/es_ES_2/four.ambe | Bin 369 -> 369 bytes Audio/es_ES_2/foxtrot.ambe | Bin 423 -> 423 bytes Audio/es_ES_2/freedmr.ambe | Bin 855 -> 855 bytes Audio/es_ES_2/gateway.ambe | Bin 495 -> 495 bytes Audio/es_ES_2/golf.ambe | Bin 378 -> 378 bytes Audio/es_ES_2/hotel.ambe | Bin 414 -> 414 bytes Audio/es_ES_2/india.ambe | Bin 360 -> 360 bytes Audio/es_ES_2/juliet.ambe | Bin 450 -> 450 bytes Audio/es_ES_2/kilo.ambe | Bin 324 -> 324 bytes Audio/es_ES_2/lima.ambe | Bin 333 -> 333 bytes Audio/es_ES_2/linked-to.ambe | Bin 594 -> 594 bytes Audio/es_ES_2/mike.ambe | Bin 459 -> 459 bytes Audio/es_ES_2/nine.ambe | Bin 369 -> 369 bytes Audio/es_ES_2/not-linked.ambe | Bin 576 -> 576 bytes Audio/es_ES_2/november.ambe | Bin 459 -> 459 bytes Audio/es_ES_2/one.ambe | Bin 351 -> 351 bytes Audio/es_ES_2/oscar.ambe | Bin 369 -> 369 bytes Audio/es_ES_2/papa.ambe | Bin 324 -> 324 bytes Audio/es_ES_2/quebec.ambe | Bin 378 -> 378 bytes Audio/es_ES_2/repeater.ambe | Bin 522 -> 522 bytes Audio/es_ES_2/romeo.ambe | Bin 486 -> 486 bytes Audio/es_ES_2/seven.ambe | Bin 387 -> 387 bytes Audio/es_ES_2/sierra.ambe | Bin 441 -> 441 bytes Audio/es_ES_2/six.ambe | Bin 405 -> 405 bytes Audio/es_ES_2/tango.ambe | Bin 369 -> 369 bytes Audio/es_ES_2/three.ambe | Bin 306 -> 306 bytes Audio/es_ES_2/two.ambe | Bin 378 -> 378 bytes Audio/es_ES_2/uniform.ambe | 7 ++++--- Audio/es_ES_2/victor.ambe | Bin 387 -> 387 bytes Audio/es_ES_2/whiskey.ambe | Bin 396 -> 396 bytes Audio/es_ES_2/x-ray.ambe | 6 ++++-- Audio/es_ES_2/yankee.ambe | Bin 405 -> 405 bytes Audio/es_ES_2/zero.ambe | Bin 414 -> 414 bytes Audio/es_ES_2/zulu.ambe | Bin 396 -> 396 bytes 42 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Audio/es_ES_2/alfa.ambe b/Audio/es_ES_2/alfa.ambe index b5ac3ff47f219c4366588dc45876b4163d00c230..e80b78ea3d6e530944e4a8cc5ef089beeb794f47 100644 GIT binary patch literal 306 zcmV-20nPsQsKpj>a80N?rrUy0Q4W}{m)E<;GG=j4nho~2qF;=c)Cs|Debq zKVTwlzPVS8$p|qAK*&hdDWO-3XA+#`O{c+OuR{me4qWGD5&kt9yiK&ljSegsA(2vxA&pHOPzob@#-ZW z&q{%T4iOi(NUSR0Yi8NmMmw10{t^K(U-w%H1Mp?kSl`1OIpxS~hI zxRdw@v+1NK&mQ0>ok(9l-0WhF@rh0?JJia-U1OAdEiPK?|Hcj3XyGg>`L7TTA}sTA z^_u(f4kdl)XcYSV3?BI`iwzV0#kmV69NjDQ`lrzQi7ebJ$NluN?W$`0NZIUpwJIqX z>Mh5M4%L@8OpXoa<7Saj4qMqM&k1Z#H}`q!D6B1SY*n__Q^6)enCas`x{|?Dbj0hp E-9YA{>;M1& diff --git a/Audio/es_ES_2/bravo.ambe b/Audio/es_ES_2/bravo.ambe index cb4baacd9c848647f05f5a8dffcc71a26f319052..9127f90a2a1664d32a75cffecb99df0f2a8b7627 100644 GIT binary patch literal 315 zcmV-B0mS~c5v4_Rku0X;(`Us4a&w%$w$Vq&15`Af>wze8;!;6A$yhc#2x%jUnew3I zZdh$VvtPAnKu#NFR2f_W>D_(6D`^6Z36XvX<$3|0*>b}SDR(^w-1m7(o(Xka1<-h# zz_(_bZ9Cr*Fdl48Wp7K2ZhhZPK-fq#xP*j_HWRxcmWTnxKN=CZ22J{I7$#Rj=tFMa zW4#8iV%uU&yHSc1oH6MYWhac~JycmmYdS&Ix-a`C?K${&8H(ly7UEb@ NV)II{qgKFg?7ta?h_V0x literal 315 zcmV-B0mS~)9D-K9hAE~zqE5ngG0yRMtJ6itabppg$&h?r!U07Yr`6*g3P~ZUox-r@ zE*MH8|GV+vpbmThP`BKPY0z22Ob>-6)sbrm=XnL4ykf&lX%$%m*q^-`5=|g|C7ckv zRQf`nNIBi=Ffg_$0}OAe&bgB>1F9Z%+{h4)`gGr99EhonD^hj-WNVztooW|m>_$qO zjlC*k7p(zk{Pk&k+%@S^VZ%o$9aJ9yC>lbn(_IyRE-X&0nBaS_NEj$dtO3VIAs-1^ zF}sNN)$={!UPp{$7n_6%#YOV`K=31tNSQ4T;)7lX_&e)LEx@RZcSRk~O$*lmj!F1< znJM9t=-^JLNd0KM*lY1xdwuvVndT?~xR`v&EZ){@6`P$dyJ`ExCGogtS;&C}Fp7*( N?z1ZQgF=j}ta39gmXrVh diff --git a/Audio/es_ES_2/busy.ambe b/Audio/es_ES_2/busy.ambe index 3760c55b43aeac9e3a8b1a969434e9763d15fc27..40d93c5925ec1280848941a5237a5cc661806b66 100644 GIT binary patch literal 414 zcmV;P0b%~PN$yPmpugzvfR^VFLP20a%VPO`jM%Sgf($p08zP<|2A4%OuSf9IMRDzm zMw$c{k$k;r`9B3=BA`2U{{?A96|WgBRxOVkO-w0Pz;48QS;YvzW(t?XpE}T$MK*NB z@T2+WpMT8oER#D-COfMxD9>R!YIi<^YREtH1#VX%iGfWE;*l-}M9<}8?Da2LJ}7>2 zyV-!JNcAsEL=s)yhg|J#i2)tX#Bf5+ZOC>;MMs=5-8rJW>v~ue5W7BOpW6Zd=px@W z1CDi_{>L!R1!0J1h^>MG?F3Y)BZ>NhX$K|7$Nv37%@|Qlc4^b~CTD3sF4Z%Z1kCG9 z&@b{9;gFADTpt;f`%;ce_^gt75?FPlzlR%D`5z^NS9tw*K2VJ z$ywL|;yUbboET`WEl&S}}x#vF%q3;%DRNGvUl_)h&StuEmn4Q&az4~azV z4~bVhx(w@N=xDkHALfH|a>(G{EpD~taaQ6XoAOSC#B)^B6R*Ktm&P+?;Ub^0j)cc? I5O1yJBg~-03jhEB literal 414 zcmV;P0b%}?OXg4m5U>Y#rh3K{AyVTfBU1ZcuGqbAmM#LB9YVZ`2fN8d?P9XJqjf|M zV7x}8to4bAt@gaila{zTf{5jGzhTai#I5qp>+;8 zo$Hx}`#Y?-*z>n+0z2=*g0QE*ZdG{4tOWO?MNCy<&FO*5I-M#Y1I?{tC}oK_UN2Z2 z8<|WeJBLXtCm-3|PY}!B-9z`Z#9)l_!S!WMkYn#L?;D_-i)vUE5W7EPpW6ZL>L$rB z0m!+D^9wY}AZO@{jiF9viDz)mhe@)-4MQd7%a;AZfqW5cFz<8uChrMc2+>_OKma?$ zHz}u7>0GD19(-N!`nc*B84S^3ppCnN3PxJCKLv>P!Ly}EmOd2d^WnkuOtCw2oon%k zNnQ9x=H4W^{1^)BXbs?)jzw@=stbVNuGCNP3;S)PpyWhNeJa0i@8qf0#Ow{7N{b52 z&k5I9vTDByuGW?idxN7gWwSd?{^C^s<7d8 IK;@|VzbpUD5C8xG diff --git a/Audio/es_ES_2/charlie.ambe b/Audio/es_ES_2/charlie.ambe index ffca76aee653e039e2bdc1541226bc63df8adfcb..2424d5a03be6dd286dc5e483ecb030d9eea402ae 100644 GIT binary patch literal 306 zcmV-20nPsRsmBFUMQqs#)VjwfRZ60K=mmm~nfut^^MAd8+s0$}wnnS= zMeiG$(fRrjnK$b`(!LNm1dCDnN)*qcg{(G5?@m>yeZa<>A*&;|o+r_49CO-X8~!7V zBDxXZB^T@_jJtw&%v?5}E#>99AdOEm4Bx575H|U4(SV!$j-qCo3gz^rZHOp12WYfN z;)}p*X_(J%(AQ?Gig0d}_9A za+G@^e92CeSW}XaBxXcd-vglZ1t>Y3d+8yvX!v7{3JTv%^DKO8oY^kwO4S~bD77nodY3Q1>%2%1mtS|N^Bd>Wf<{#!x(R|_}o^j=`WCRu*=3ZX_KEjMuZ;SY^oR6rks E%egg_@Bjb+ literal 306 zcmV-20nPr-ABAvMis-(%lECLoQD~s<7|+$AFd#HtmEWR{yZOG~<8Qsjz2*Vl`V)JY z0joQjzp%fxwG-_+^1Apr3r8`y3^2;76}n`EjfIB&{ho?sH*=a&oAe%lRflbJI5-pp8 ER|h4bOaK4? diff --git a/Audio/es_ES_2/delta.ambe b/Audio/es_ES_2/delta.ambe index c764dc0e4a49fe5405147e245d68636c9af46cfe..f61a3a027446778c2062032ab5cf2e602420e090 100644 GIT binary patch literal 324 zcmV-K0lWV9s^^TZqN0j8~{9XYnrRFRpjHG1|r=U@*V}u5T4R zo{z;qdtff3_9S<7lPYNn;^F#O!TvM~t=2?tD#(Z%!-ZrJ1%T71k)`vQ1Ww)=(qCE` z&ZybD>~SwUUCxSzEsl>n4o!5-N0grlFVYPMfbWC>{T{9eBmsbOa71q)r~S-?JkWNfebufUfnI)E0HZ- WJ6Xzub_1BH1-`W)r%_eHKeK_r+n1pL literal 324 zcmV-K0lWUbQRR_5jxS*`1iJrdA~?7YBOBtUCIoSlw3iE!ZHCLP2tcAgg*u0jsoV7v zOTbP%lXbzSehGqYu#Kx85rqQm7}LwTdM-s$$VvtJ;FGNu0*VY0?%Y?M%R-(?DV)s~ zAmc^PZ$-;mq~zTrnj^u_MDjtLRp zGDd{}A0#g4o=7*en{F)&;>osHMfRLPiZ%r5ZVZg^jp!~gC=?qnvEtqaK);(6$6s0* z&Zya|%wbPkIqHbc>5f8OE)HJm@6=n&OO_1QwmXv>wYfa3Nt->h` z{|b`c;o<749{niP`M~Af&p*y9)#&rZ_^C+#NV@!Nkxf22uT81a&A{~E7`+U>%T*;A WxATJ4f?DuAE7pbpg$77c*Gg*Ob5GdhnyEr`20+-Yyag~HIJs}QYXOaRIa$a_?PQ>>>6jUc#UTXKC{tlh LmE<=!z+}AhVD@^N literal 261 zcmV+g0s8*noq$Dp0R1h!U8T<`Kxa7;YyGl?kz+O#bwg15UEPb{F0dPR|3y2^__{l1 z6Q~X_?%5KmjYaQ&CfPlw_WxkKD{9A5(7&lcs!owbETiaehcD%Sc78OvmGSnYLsEN| zWKqE9fn)(WlyY~$=Ac0#KgJMN`u3^!uiulXWo}s*+^Maos$+X^2^NekN1L%uOAis6 z#z%!tPNOJcuN%|NKRM?Hl!T~oyRaDbWwW0G^-!2y>jt8;jd?XtZrKEq!;M=NQhAFH zf8oJsRqY!3D_NWcE&h5;jtFVhDoqJwSlnK3!C0SX>!2wEFc%SeN L)Swp==&<}Qnq+_Q diff --git a/Audio/es_ES_2/eight.ambe b/Audio/es_ES_2/eight.ambe index b60c20f360c75f58217efae68fdde8c9f182dd15..3b76fe290af91245183b717a678cbef3147bca85 100644 GIT binary patch literal 306 zcmV-20nPr>cE>_O1+1!((?{h*K@;5lmKbFk>xj9+aMW){eMzh-Ys*VoH4{qUg-1-* zV(S1s^t)`!)+D|}lBH!w%(w%JZy=*4p(W)J`AsM)#%xH3BIqfnM+9@dfYE`s=R_`u z)yYvNnK*M6-w6Y#YQ{rjUl^o|y(54Es=e#^H9{PqJf|5Tw*k)&{A+LW5&3R~?K2t!HGAqy?N-6)$=M2v#xQ5Md3H0IF^o%gFa6Eq=s2TAQYEbP EV-DSpm;e9( literal 306 zcmV-20nPqO?%_9(t}!hp(E{aMP;V^;Vj5RCiK)5fL*fWA4-JUvyN3@>5q2!7!H0|z z28{uGy@q@b-XNGE((NV33@CN{Y(~jW<>dW!xeqMF%Cvw3VvA3sLru5%9n*lDBvytT z5nWPJy8>qqPlUpZhsQ=y4~(HEuP~z_*^T?}Btk9Xc+2qPUL4`8p#h=Vfw*qti8`t4 zNCTZP3n41gnuax;2VOlJr|y9tC-)e}NJF^028T^*l`U6_m*K$GD33Zs{A;OIxOvS? zHlGA}1!eRBOUB{3waOsG6KLS@%7?0Drw1(Wu>O%UY1c4$^umm>=@W!-3T?8AiG%P6 zu5O&c&w-Svd&w)09ym{D^&5(B>l|U|1qo`(qEaXCtu~LFF|AlKD(%g+sY&K#P#J9D E>+DgIk^lez diff --git a/Audio/es_ES_2/five.ambe b/Audio/es_ES_2/five.ambe index 86c16d4cfcb56a8d674d9206653cf8f52f9f4318..bf8122b99f62f00163b1a95d2ed673966e08be96 100644 GIT binary patch literal 342 zcmV-c0jd7{ScExXR9u~7AL6w1ooQ4&V0%7ogfX?D0fG0y* zz?cWBK-NJPuwYQez(CYub@vcLl9eIJPYGIqUT@Q1LQii3ZchpLMKpm)l<=>} zIahizNDb>|%Rh{X0XXdnE_$o4Sxb~vUk`bsh7IqHsV)yIcPp=7yDdAR3Qwd+B-gb& zi)Vydl%SsF2)RU*dc~96fjO#ZQ(kOR9#P_UO9Tw+)#Q*l&TrLSY%RR#I{!@OP7WO0 o|18RBq;7>=^#Ll*FMu}UodJ+K-VLB2;GRT~Y3WIfB#^wy_|qSyasU7T literal 342 zcmV-c0jd7Iro=T;KG?TKjHSjGP#v4XL!Y$dH*zTGl~k$czlwgGJxTVdmY{d{#dY^I zuzTS}jYZD9Nr7A82Z}}fj2?ux!T|eK8TruF)~5vB7|YIS;PIej{iVFIk#XsK%!|DX zp-Uv{AZD$*{NX!5^#E1g+_g@>BDZB%&y+++LK2lkNBxCBNk7$*ennR%tZ19bH5a&HWfvQ4Gpx7mZw)gAW91eMHj~$EDmnmWf(;XN#u*q z3l-8LM1kve%Rh{X0XXeUNIQv%or~NBTPZ(>%o%@8ZFy`Y)2QOZJ!N^P0E3!36H^gi z$p?b6{b*JpZu=zilFv>wKq!t$HOCYwgC6d;@G@%@fU3+*0XibIqfa z`Vu6p2`BtP6!%wC=|Bv=QmGZ3V)!Z~vupz<3_{#WRAme78Ig2Vg;-`LU?kVez`S2T zJ`)s)-t~bXcO^--ukFTzb2czor2FcTq4BE}I{6uYSUZY|znPp-N*O5%i~+JV5=|^m zdyz&0_SGJ=4k)p&+L5jYk7S}++24E&u^e#Yh9g)IJyqaP|OYJ zBsr)q&l2hi%LKO~r*U?|KjNpPF@;kV;4H_t)AfUJFb&{EA?EGGYXDFGV%V4JpfW%m PncL9BiN`cRcR$N6?ZvOH literal 369 zcmV-%0gnFEaN}Vxi>;O%Y&rJu5?!bT4d{k~l|k%4FRQ>q#bwR-<~?(H20gr#J%QgN ze?(f;{5R(HLpvh}cBp*PE~5-L3lE)Q`pDBPQ#(ZYPc1@F8buFB>bDJCm=K9BbBWtP z`pzb-2Bn;<@e|iq&15S0j;S3`WZrHf+Iffa$VS+0a!2FnQCYw~k119IeBsX>OT7aS zi_eu%?Z<-?6Lk%@>%5iZcT`>6r*rPKrqRy5ZuOO4cpHxC|B0M)P9F^ls_pW4-bpA6 zJNgHbGC>-$N($MM#tPqPr5$6tq2z_NEYo~dy%IHuwOh}ACyh2pb!2M&E^x4on$J92 zi%Ri}P#~l2DvmAR=q3d#lrHXj<)khFL!}sy3w^Xs6wu~si!W}lhYeNCc-jfgIcQBJ z4aA&Yw2<~dy$++>&xUgoXj z=4L?48gRlLac~$y*c(Cd4N?*v1i5-AEJwKLnlb1uegI7D<*D(m-GXyQo>wE7DB^>y zkvXw|j)Uc5%8qV`RO&6EO~X(Y?2}xbpK*abaeYI_XO1MJ zasyshSH=C z@LxfUBLj?wAHZB!jTQvCrYgTh>hgf^&GBsidng}`^e3G^;I z*ge2u)df_@zpH+PA=XW&xi|bf#3!|x1Lq}%D&T~R%jZ)J1F1N?uJxJF)N`yz8qBK$ z0iy6&FDZq0{;3WEzaA-nzxeQMtGZax4{E-j0$X58 zhCM-xgU7&vKk#DFum8Y3W(=7D;@^EdiL@V!1uwrgfv~6?y8@KXZ4SBjIjuQ#{z{Hz zh-%+mb&F+uQYVHGZHPkIElq>*b}!jOS z@hA<`mb9myu!2>4j%k23=EugjtC?S>Gr&rO`c$Bf*tqsVK!@be_~2|b<^L~oCKtPL RYhipg`lQ9&-DMtBCpSKG)5-t< diff --git a/Audio/es_ES_2/freedmr.ambe b/Audio/es_ES_2/freedmr.ambe index bb9c7fe83ddd886fff59c5d6ce52a83fd0a3a02c..be242e9a37df92a1c05c5f4f9bf35db9884bb472 100644 GIT binary patch literal 855 zcmV-d1E~CfC4y4~Pj9_Rib>>0Lv9SSiP|}VLk9%?mNS9erZr>q$g>ROzomDiAf&^l zu>9r~4j4^qK*7@D5SBYDPOr@4!a{&Tl&%A;w1)&N#VJc^9XQ8O(KM?4qb@1MQkF-X zxswe(<#s*3gLori&K>(~tksLhMwwXgjA{Br0YR)r{j6o8=3@toWYsN-S$I1fZ3r&s zX@$cpHOm?ptADi}^Aq0$MaXi9o`qobV^y&u1;n>d_d`~)Wl+(AVAVlqkPuLUry!># zLV|3Bl1M~2SJ|K~OpZ~Duiok{ZMd`Rr~r$v-s&xHlc)fT zuiok{ZC=x$E`#}GgiU`QTP0G6WkMJ zvk^T)7$KP$J3&V~FJ5A-MEA`Jep+2}rF`>FFghI`aFUBhK~Y)47DmW=3e(LhlR*RS z7LS&5E3zk#@TB7rb9wb|IWF#tSG_N|ORTVC*3K0>y)Da*au*)=EdFSt(+@#mg-`ZA zlHCrwI=2m#4m;C@B+Cg3fNFW0^s_v=9MEoe-xVOagMQgYr0fv*&UstRK0=b(-`!an zyl7|QmrVYrU9TuDgjgvnBP`5m!uLNyagbcTEaIYLlrbASf<3nO1C5`)41q5lZEHS9E)Q9lGQ?f+r7(if$iz1{||iMRFi^`{p89qEcb z_vXbC_Loaz0rmBTHvfCi*&pfTrDUi=6fcG7=B5VfWn~Zc!nwgmiBkr21GC$tW6o^S zFumcZ;0KR&MifV6{#*H~G!5U!BJCK{ipe_(K}D!S-|mmL%C7^tL-Xaz5%+NzOKmFe zIYC3~agA6wjoonp_ZQg!M~<(Il1U`7U{Tp`MFhJPqd-#HDG(B_CXz!#+FcL=uOxv% zV9IF#6NqFv6rIoHj0R2Z&)%x3i<_v-?a$t-sf(Ma%*AK*~uM<4GnkD8$xhcbq3>9M+M@ zZ%J?h1E$E6hDCc%WyHh{K!FQeDk*Q?0mTz>4RQk;%dT?0zkXJBL7l&6Va8uaMq~b+ zF?YjE5N8hC)W@s?V(VLV>F}`W7dNgFE6wFvEbB9sM|a>tBW&Wg84t5}xXGiX&PzqH5q((>GwNwaWK=(E4nBZJM=TYYu%b0{%1I077 zMrWI)L|PC8 zzTH^{cqg2h|4Bza8F(Vf?Bl_~TYNh-j6YMZuwH3D68eE)r5PWlR3gmY&Y#RKmqa73 z-jABE4VGe!{-kG-r+xG(J<0|{7yWDgXw2L#pbi-wnJDe(zDE*!DEJSB*$dR+1u3w8 zw3?1DcDD$#YFV3=uusWI(hgs_*k^qMRn&PY4zP?FNEsRk2^D@@p$9J* zIfX%HCY^*e#|pP&bY#qcC-z_AC^`_hImc@(lTR;kl-#GXBJU}&ou55VVHDdw)BZv( zB;EwPI}qL`a+YFd{XPf4=XMB!7LR!*r_G~ndk57sAJe@ccR>)P2V;;)z>yvTr3XWh zU4+tDQRHDouyjzt=MjYma-uoVf=M9a1U|Dc5LwPdy=#F&(SnAjW6OqNj^J5sTzC9f zn!09eu8?4h3Vt5g&U^`MaY%u1i`x~IXbugMG4vJrk690VgAEMUF~>Vg1TeQY{54-H zS|t$nX8d&tC`k-F@zSx~=Y7UFPwWsQ5xrW|1DMEAv(Lb4v;}&cQU6OU8j>S1*ZnAY z2?&4y6V>T_D?4A=1cKt)PiA%qu3JR$g9?wO8IOBs;ITZu@jSU-2lZHN@;ZIX8WPkY z$isk6=?XLD1n%SZY?&(^YUV@DqkZit7b)E12PYW0N)sPlBThCM?{D)CZ8(qn8_#dy z9BUt~?>p{qz)D$3%FGJiY{m>|I^6nbjcKGZ?n_f@7@7~-P_1nGSJ>i)5_I2t`4O3d l;xcfx>D#ZmlEOk#qpjLwaMaAL09l?2X?wE&1)pz) zKZONi<`GPB(hRpIaHK#;W8y!d4;()jJqx=`^GgeUG@NfTBJU}&ou55TK``Aq^ZKeT zC=wH@9x&X@cALy#+gb(6;kM{TaLainsfDM@GeeOxf0^?~^9?YiL}&h`09$eZg=S^k zl~5WK7lJ@xnp{u;>lL9vQ0#pW0*PdV1bW$gK$*rQ-EO69al#5`1B>EA%*@?AvT@j4 z{P>PI;#g#hY&iaO20RT86HcdEOPbwP2yQ9VUl2t#PkSqThvVd$<3WE91T@=zxb;_V z9wZc+F1WP;8B1Zl*|y=;OIhGPE$gi_S#f^VCY;Qex5Eq$z(-z~@jFLoKD0&=zuEY` z$xOrp72Bn3uXj701)!+1OQJdqh&)1>gN_R&9jP5*h_SdjaX6hjMZZ|6F#0)<7*@PV zhy#pD&uvxh1a4<`D*0&{f{u>`V;jjRIge0lk1IHxNLTZfYmT-V>uvYurEpJwd#Nhp z(96?p=PK%L#G;V_3rGsvZ^GoDavXkcsSlTsou<#_-A diff --git a/Audio/es_ES_2/golf.ambe b/Audio/es_ES_2/golf.ambe index 2587912892caab113a86ce7d110666e6f50f6a45..42f1d3ff607ee76b9b70bb4fa7773d80d63a6739 100644 GIT binary patch literal 378 zcmV-=0fqjx$)EueDyggU)SBl-Q(kI9>ALDAv<8Xa39M1ED1mOn>k^69S@N`+EA~He7Hi{nk0F$1peM Yd}UNp1+|D5*=e5l;N*fq5L~fmaIsOgKmY&$ literal 378 zcmV-=0fqjR2kaWeVEbV6=PIBDayVc@i}#7eWpr^#jtP|epd}Vq=-k(8em<(4Rlk() z4o_}^pS#O(3t0$WwBp6v;W92wDtY%D)U$tX;tMS!pBV8?%Jz%(ub%PfbaME7{^`4F zphySk2A-(pBA5k2>Pl9a@qn!dVEaV1s7W<1lxF{8;h5u7cS=y$Sw)%Sg4iYoj{rN4 z_ghcyZX;$Yi?@T0Fm4lNZ<*4D-4zT6BU9h=r6mkGKW12nvFjF4Id$B-^+%v(@a#gH^M2XKbkuNVaNk+W<1~3k YJgLO+O4yn^+2!6Z_R^FcUDL3 z3q?7anTz6g_6m1Tbh0VV;D#A30)nI$poPU5ECR#TMYXcEY)O1n<}Zh75ml7OI!yhQLr^uIT1C5o%RdAJ^+q&7`d|C~ zo?DY-i#DKrZ2(j--b#6~`17(buA2 IU@pN`6~OJdxc~qF literal 414 zcmV;P0b%~{M5Pu!=J&HSc=@R;G;5*TXYw45SZ7cfqRF+(fc5l z!FXy4PxYgg+o2N;l1bBbj#8}a8qE&kVb#b(w|(qwk2HCR<7LU=j9o@-WkQ&9+F$?O zm=3TVVvT7VoXs*O!$z1@bHDLlh0+w+AXl%?kM~&=+5%LnsjI^sRhmaZzr=2a#U|?j zWuN?xqg^z-Av=$y3VZK6R1X8I!7ERT2viRdtMNJy+z47wiJP*A)ecY9OD@o?^!b2o z)hG|XMq>ty4fAYOz9b;{)F|6&2%xCEB4K&|ZFKG@9%NEEuW1+HrW>8-JK0Jbkn7qt zGNw@q4$|DOgW&TuYe|GGFX`5`Qw+fI;br-aHvII9Z^PN%{8UU2%hH5N#}z^pu{Sl;IHGkYNHhko{YK_T I0tgUFJ)+df&;S4c diff --git a/Audio/es_ES_2/india.ambe b/Audio/es_ES_2/india.ambe index c510e682a38ef75d5f61c8768d744f88c846eca9..647db0aebf194e1f20ab067aa9bb553a357e722e 100644 GIT binary patch literal 360 zcmV-u0hj*xz4iG~$Zm@d}wP{O8Ku>Awf^T^~DIO8{+mVANCr|Aa_dFFb=X`^Eqkq#I; zaQ9ba7_M1OXmzls_d@&}&`fmh5>|_aYR^7G;Jxe1JzMTxMV(?D7jSFNZdRW`3;|Ka zbu3`$76`|ql~PDd$Yl&otEE9mYMo?xdc0bw3ip!h!ETX+aW0~=z+~&WE{ICsvJ}P5 zCu-^`{0>-I0pgZ1ZSElIZCuyWz2am+yDO)Ima@QM2Z$gjV}*dg2L#w8Yhln1rVw<5 GAX_Cly{O*+ literal 360 zcmV-u0hj)oOXYMx3K_!xj9%kXMA1m?CqX2M3jsyFK4pk$#A9?m4C2`&$6eZ}`2-8d zQKKc6%#DbN5OC%IcI^CwPTdoyWOuxyB?&eFm1lL_gi;C=RhdUXjKMj!l~t=}K#rFw z$F@X?WI?XrEur>6oD&j+g^w~eAgBP5t`hW2e?p#M70GURtu9MqV<4y}M@boYaX~|x z5OgSiN^l`ChS;;lHEB;uM5BSDLaSXqZW{Fw6VZbhqD`aE>um#~f5cs)fun1Y*-Bg} zG@oA}*rE?zN`LyNb4zqu@-BXeo>or*E{i^5s@3aHaewMsL)*F?AG|NBEmE5Bh+Pxm zaVjK@x=6`Qu@X%Nj-lL-CTRY;`zz@&aTYRpKx_;`U0 zD@e=>y2q3e!D6y8D$3*rr5uB|%i{tslPhD7@z%g4PPAa{DnU((3kXT$C#jNN<1lv1 G#5(EqBd0L{ diff --git a/Audio/es_ES_2/juliet.ambe b/Audio/es_ES_2/juliet.ambe index ebb4a34229b2be4edfeac499a9f454a3b7dd62c9..3d049bdf4610dc5ddbcffe58a4c6959713ff569a 100644 GIT binary patch literal 450 zcmV;z0X_cm0_O>GZD=A9#GA)fQgvwC32fbm19bwA2@&Guf@5=A!AEnGgvDb}B1TiG zw%dXOH5}=wvpqn4iNL!cwp3e1Jf|q=ZL?K)Rx4cyriIuVD@kuH`WjUx+*}+g^p5sP zaFr-qc%r&Bxi9oZnl4?X-Ie1f6N@BI?kiX}aaQ6b6WbNF2LwgqM{~vLK$vO-fdF&G z(3F|LH-Q0Dl%=8XvJu^7BIl1dFxf=kOl8emq=4Q9tY{a|?!at24F^yo^FLv}P`m@E78;G=BNR)WX!Jp;JQ6D&tqYtHW*M~IHz&I_I3rz0y6C2Zvqbq553hNo&D8IF ztf3icanvq{Y!bfp?{|ea8G^xsXU{~1S9-Lkl2z|jh7owc*M?N3v*1HV`vE9J^}~iE sWTfYB?S8cKoiWSpr|;d9f`4F5xI2BM_@W^)4Ec$(T-}ENPzU{5aboY)@c;k- literal 450 zcmV;z0X_cs=f!uVuj8et@IQwWV8JC?C5>##J7zEwCyLi8q7xz;Q9_uM`hWv9d)k?^ zk>T0AbD?E@-3oOWtLwVcCe>eNdgJdUweti#G-+Fcju{Y|O$`o9oVwL~o*aBl)a%Zf zFd0lA8>GIsDMPRW-VZ&j*N{hVSItBz=!=YKGjir27yiA(FU%9QWjF8TR1YR1rbIQ3 zlvG_21BFF(+~qMVa#pKlV9vEml$0Z@E@AKAR>_}3=u0>Lhs5f42_ZK{yFcN2!C!Yk z-ut1y9jR|FE^4XDq6yy^cuig18)sMeD1vvGj88GWT`uxuU75u^G)-*1Rqo6TFGk!R zxIAO3_4{fx9GN^r`LyY6Hyf@ev(MHJqZ}@qA937(j!O`+08M83#fsRoNsDeB-hH{N zSmv6a)i#|QVtkCb+ zZ0%i*k>ml3^p*wb|f~w(!zKa#dQ%(MUlPx0Mwd$Zka5$Tr;nb_fBv)l!%?s|=qjhvMc=gzqmd}vS`I>7d znTC45w(n!RA$gdbhPUlIf1=25v=V}3FM$HN2f2|#HD3pV3oFT*HrEo>;H zRdD9BXbUNRj#1+iCwSm(Y?d(NqZufX2r0E62hfp7lU#9I(P)WmO!*2z<#*e_@Cv(2 z18zNZ9APTBX2n~Tq}`D@s!0P~C`27LD(q=3J|e;K#z>tENgQhuwmC?xElVkD5ak?h z;b>cYV%%S07?>`vLdhA)WE+SK`a-Tf|0SMY;UsW@Z0uC5P2vVn@_Dakx5|M)5IL`p W;k7Tu8~_a@|N}h literal 324 zcmV-K0lWU9&80Lppt-|Ypk3%$VISUvW79?b>J%>pX@|3f@?wV^J)ZZEf8igAf5ZKeXJ{O)=CXILTZ^U4f3O2cD-t;4G+hoTqT%j z!%bbbBG8vS1$N`Pqc7DOgI59@aRaLX>X#b; diff --git a/Audio/es_ES_2/lima.ambe b/Audio/es_ES_2/lima.ambe index 96375b4e4f28e02ff4794596df02ad6460e36072..e45aae6f933623e0053a10779e20a6b03736af53 100644 GIT binary patch literal 333 zcmV-T0kZz^ALS4_Zn5SqjP)BZxRKntK9kPa0>mU&Sg zVboS0a*HA|No>~O^(-JmK@G7uY^NMEViSL~N^HS>Ic^*Xo*ouu3%=*u6cu|!FrT&PfFJ=r-K@b+T)|{^ONXYB z4Nq^N`pK_VI%#8H_xP^zpU*0F0`sXV{iz%uLnr6B@t@|wX=7?jiiS;;#XziR9lz}b zBBle+4KJ9Lg&}Tnzd%Os4Oz-q6XQU)%!L@)jYfq5hqy%8le$KhCrjuVP>z)b);m?w zEf}7fa<3zDr{ta>G-yB}MdjJ>q$XHX0T-9tf}}xN87f%pH_}#R31 diff --git a/Audio/es_ES_2/linked-to.ambe b/Audio/es_ES_2/linked-to.ambe index bfe616db003097426240e09ddcbdb55a58e2f8ec..fb26360c4747b8a10089813c935fcecbeca6e099 100644 GIT binary patch literal 594 zcmV-Y0MB@~2X{WLmS83A^P z*N*PHNjM>8pNH6qn;w4yaPZ&l35Oqr2VmrLSz+dB&`d9-Af<2>>t&@ zM-4?lR}tnYz(hIGpo)-{%D_c?)i`0Vam!xqnyh*ATvyy<$C$%JG8l4?Vga~reToGrTJL3$&TlB|s=MBhDe zv(!Th!2|AQWrwZ^Hr!;uW)#+(P|a;e;YTN=jX=&jV$wihY^V$X5_c?Pb$W=L5|2bU zVNkF{gw;<)C}LERB+%DQbq`}f8m!DfnFd`aWeb#8Kow*RLT3!^i~*g?kJ^OoZ(eM~ z%a7WG?QdRe#AF^SNg$vQL>LBaOMyn@TuGd&fx=gIqU)QDtCGT3QoyOb+`XseRTON! gl5?qR#6TcVY@&$rEjnUOiD>Uid29?eA?azmgEwAV0Q8D$^)$X3TW4^r zj}GoP33^6jyU$pQ7aDnFR=S^Qi3fY*1SX0b9kK3h_A3qTAYlW#3X%+^z%;p!>07me zL*Y$`o0XzyqCnG`XhIb8ih}`@+3=}tQR{#2n2veZTsNKv=l;0i64VyUA|c+%oTpee z=>i4M|E-5=cbH}(+pu5b_dv`g^C=naWG_xb4Sz3ru*Ss?Y7AeV?)Cu1Q!sa*!7ZD`|7AFTu6GT||QQ7pkvVkJDM^K*CP)IQYheb!I!9)u;MBpSus6@m?5>qV&6}n|qQlAq{ zKs5OX#1uzS9t9HnAXHF~aUUlE`d|bBonjvb2hT860G(hA1}E$xL_wMD>72-G&sO9B z?dhDzYtL5X0E@5Q>Md`Qr~oETX~9H*NKK5$;HMW+z*k5{y0hQJI3lRdj^? gp6-#)rUQ3|+@UV^(}V&vhqVs<<~V=`MqMQ%x`i(hlEyLRx3CTv2vFuQaagY%2`Xd8B4Ih+Di{`O3F34t3JnEUy|hC8 zp-o;?5t-o`OO(SsV>>|GUpWOrckf?OnMmQ&$P%go@QoqidPro6Mn}%~4e^5nvtkjO zZ%`)MRI6qpuYoD#;~}^NP5UT)A~rLN0kOYu*AEQMfF?>Q$5-0*ZV9KU}y3YP?Rx(wTWK6#(g>j?28YicgkW;t`T zR}ZFZ9CwG3S|xui|7Z%>!872jKHn^-wYf&%Bm^s*iPdA18w{G3Si6XF1%8 zXY0qS*N^)1s5c1O+S$3-75SH_PKF1jS%bJisePtlg=n^qVeaMPa~ZwQU$ck!+=p5S zn(+yVp@3C>8Avm-_dwwWaIejU9fu*NWD~MGwx^$m<#uu@?e`IoG_Ap6hrJE|u9e0x zFihI#Re_7V15i!?)CWxNrBGrf&pc)vox*Shcqt!<^G3&IU?A+ykg%8K6Hp;kQU8Le B*l7R& literal 459 zcmV;+0W|)?4Te#0;sJXXolNw-1-SH;Nd(Q=nG+wEtIvV90b&7)&k&GKhKUwh&uf3KWhwHH)KtX%%hFW^FyvY*nGmQxHmuk&`i&&(0%48MowrFs*8nxY z?6C@-G|2!2j_B>6Z$=Q_JHVWA}IGJp;MHi zSLH>ihoTeol|s`t)rQLNc&jms@_|p|B~|#RdYQSS!%#No>8p*hH1B~3Z8?|o-^Z1? zW=PiSwuhaY0dT@li?1HO@?`Gr$CJZ209WK_GE)rOqSHY=t B+(`fc diff --git a/Audio/es_ES_2/nine.ambe b/Audio/es_ES_2/nine.ambe index cb53bd99fe8e47918af8efaa8cacc116d2460ce1..1f13d1e4b3e48588ea56e15d19d0df47062d22c4 100644 GIT binary patch literal 369 zcmV-%0gnE&q{L%Xb44c0k*3E5a$qt=%?Vd{y|F_u|Gi5>e)qb}gWtbtPiDr#9w5Rk zDn0|^w>Q-0wJ9kgqCAc1VkJ610fEOC;Pt0z8$txIX$ms(SSd!TrgWBiuWCR7b=UoZ z;1M4*VKSo*Vw_}cX9gkg1Ja3@UR5Rn!7}mOjZ&WibGPu$5J46BU{LaO3qDYBo+pd; zsuwC4G2H^s%{y`8{$s62%ZLSolLKMdM5VYaQx1b6sw0rech(wDbL(LryKv|vif=I_ z3H1nbG8`BwPgZ05hQ4vMeE)|)>&wjEp+&Spzzc@ zx(;Hg#@Y)MYTi#}-8FnfaCn(b9G^Oii{n_BO&z~}j_cK?P)xw>J+lDkl|W6xoGZm8 zl9WPiT--Q-rg4nSyOTn~e diff --git a/Audio/es_ES_2/not-linked.ambe b/Audio/es_ES_2/not-linked.ambe index 806c142f916d47260ab1f9b82e3839be0da0708c..ee2bf20bdd589961c3c3f070944628a8f947db3d 100644 GIT binary patch literal 576 zcmV-G0>Ay6XvI)qYAmzK)Vs$gR8c(1UBrs#1vNxWzbSo9z+?nyv9*#7ZGEE1nEN&_ zOlBq*lR}`{*=1y!;vn`ysfiv%UI z2#!tPCz2ph)`O+Yu@r$;n5+QYAHxOL0WQ?(5EVB-dH|D{VOYXYaCl&{w5Xg2Yc*K} zSKFGx0i@t4j1!b6FC(+^EEon!7uN)W#^A_aO*O?Pf~Dn*OMg*=V=Cfk&<`gu z;sJ!B9M}edK%-}bkW>s8YD1DCDDH$5$7&;%W&pn7R7f*5$429xOh~~|0r5T(g49@r zM@F-65o(#l4A(WxZQ@BKp=&{rOrmf+b1}Ua=Lhb$<`687`@uU zjK!BXooRQp`;l*NIYll-n1CM($!K3XM%W59xZ*iJeGvQy!Ky19uq8%6-aw}%D&cV( zLy>U0cRhhD7<^1D8qHdkEJ2%-$HKE8!+#c?Rt5j|U7}`@&>8g7wJyDH25IGF0I4~t zWT$DvfW3u(s3~n3!D0NTe7Y>dcGi89Kfxy?IU~n$b OWj0Kjrf&ioThisQE(@Lj literal 576 zcmV-G0>Ax-=%XVvNX+ckmfL_K5?|WL^tH>PB~m@yy1@+$ey%_%BTP#TZGEE1nA$cC z3}P@F|LS0#-DzM!F}oCHD>+(oV==fiM_3D6Kw}e$BXBAi2qGp|>N~J2)f*87cDPN` zI@DQFcv_6nOQfSe6b0$nxhe`KEC&Mv?ee8$UMv?QB+t;a04QXLMp4|LT7i&Yy(Z;O6PFh zZ#8_jKRtyGdh?`k+D$t2XknR~2f}*@_j)#)x<&Foe}W|SxY0BkxoX`lLV}E_$SGav zCZmI^NOc7{$ZKiwsjW0;TDnTbniV9Fom-0v@POFiEvIO@NVbUv1%a$tiwUBJuE7lP zEZbgr-L=G+h diff --git a/Audio/es_ES_2/november.ambe b/Audio/es_ES_2/november.ambe index c38dae37e7b482c94965dbdc51a79321ba85e761..081771c3e98bef7b6d564be6f35ea5a60425b4b0 100644 GIT binary patch literal 459 zcmV;+0W|*Ph~))vM-BN4*NNvvQZ-(yJd{1e8bCiGn4^1)vPdD7e*P;NK|8HxahS(* z4kah=jj0}N1W9251oWxl^Z`y+Cndus@yLxVG(Z93Z9~6QePkyE@&VV%`&)4+PqaJy z4Ei}%4Q0KBdrrE2Aua>7nLo^@ST_P&@X|+mkVqSHB*1?x0I&`j7$epuLrCd43qMvp z5NV;eALlPdUjxb27#dd$L;kfIYRGWfdNk^n!~X(jxkg8>;17VqXTv2?-4vD7Oab_ymdT3vnpJY!bBYNvM$h5S3? zBPi4cr_`7*or5g!9(AJJ|RFgFnAVn8S82b;hgM5B1z9262R@=%PvoxH@cA0 z$obL==uh^vm8kdW;o>TgMt4pOFQ%!x035l&@AV!q#DRe@+jVFT`Rbx9965+`S>ZNqrhI1?skyKUe~#a(4jOa5wn z*;#2cX<@nTzYI4yXD$Q$l|M_bOaWzoxzmHYbqfw=DC^R^0O2khMd$t^Qv@Ykdwf#V zS)ph$dxviVwL1YF*jhDcNBZC2Dnt~X2bQj@mp8@*+X7|otlQ*IW5*&_`rPq8zC*+! zcDn4uT)R}k1u?r<)KwNUxkIC+-4dV|P>o`6t6U4(TL7vSAG;1YCIbsZHYwgvB(X?riU!N;Ai5B~|(uB4~VsmGZky{8@$$P&RSy-CX^LbRZGjY(ZD(sV{P741ejsWW^#taG&3! zuos|WBpVs7S;BP3AV*>RjFrmQsga8Nrl}S)mj@D{353HsbMr!UeyCUgR$%r)RnRgJ zwvuV&i)H0g;bTIox${4u&ZTlx|zRWeEa^fA4M#y3)W+r$Il_Mj63Dd9IovxLPHB4Ac?t>E^8HDNF1K}Sd=r(Xa7 literal 351 zcmV-l0igciEu>^8&?9*j)fk~h1Y0yPo21yH14d2Ao58iofI$Fkyoslz+JGkl9?kFP znM&ki04h(>%ZgjXM`SKJ#N9XLUHHnG01Mu8_Yzdj-Ox;`5rjlG{pD0iLo=jCb^pRe zE_NV=W_OsRMK4zXwN-Myq(llbM$r{=nnjQl1R&leMyw!@&c-3C1A*KimV9{=i6PPL z2K8-EKNKlT%mDk!k!u8K5&PKAc}5-?N>YoT<-~yk_)X===5 z38}(Usr?-PWWb_hoASDX;go1oU7m zi%a^J0L9;Q5132)wgSPcCT!gg{XD}tE-Auyrw3@Nc{9I&%;Zp8YcD!s@sHsWRLWh~ x^NO(HW@3cxuKk}+;5BfAPt13nhQ}8$UAdG+orULdQ90|!A&$1@S5qIY^;0XlsZ9U? diff --git a/Audio/es_ES_2/oscar.ambe b/Audio/es_ES_2/oscar.ambe index fefcc1a0b0e98a5ac62a5fbc108cd24614cfefe2..829afef79dfa04b3d47819073f842dc094e33463 100644 GIT binary patch literal 369 zcmV-%0gnE&rRO7XLkCCtf`-RKabr<&-jSx|6hTlVW4{oZ8I9ZYyrO^w$q+}}$&TS( zaK9iygvI$YKt#I+MWP&Z3@#ejY zpMmoa=OBD3<%2)9YJ_GOo(Jm;q9WsAqYB5@#WFXR3DmR=02}4+T6~=}Ien}5dh~q@HTR-Dm z1FRwt&!G(Re{kAECC-(5iEK@%OWc{D8|w)k%rRKJTYc$e)cqpJ>3RwKDS6B#eV%E1 zn+f%h?XiE6JR_&=D?$_X@M-k-V9NhQgq+>Sr PgKNF=)}teEc(6wSKf|;0 literal 369 zcmV-%0gnEf_Vm$W-y7~wLn1VOSeMUU60zIOQtVDuSqN3?FJ!& zR;yGY%;9~e&_JDIM~Ylt&N)YlMq$t8PJpm-*=Piaq1K&nH`*&{&Th3H!D78l)9m$& zTg_MQ;Z=g?nD4KVO283{G4HPkf+K(Un=nKl#BDZZtRfS&`c&Y*Rk6$|3r^rHYZ zCQp=ztAoNI6!q?!{)up-qst_bVl*gcJD9Gk;Z(qTQhxU8y~4_gJ}PNa=&AJ8#!Iyy zC5+<4f}sfZdT{uz6oy?t?+!`K${f|8J?}1htp6F5mwWGG_W9`Cp|&mkELn)`c$TFd z-zkyYg|++HJLxTzt~u0^VknId%*l2_J=GrYp%9n_i8;$Z diff --git a/Audio/es_ES_2/papa.ambe b/Audio/es_ES_2/papa.ambe index 83597deb63cefb502b8f1aaf1a456129ffceccc9..214819703afa8113c923ddadd8d7ab95f2efcaaa 100644 GIT binary patch literal 324 zcmV-K0lWSlp2B8!Oe-AEe%z&EF#*hfRL8sJXH-@Vs(R#$=K*y@3f)Nbg7aCO`SL(M9f4B%AWo(F}s4|pjZ30~C`bZ->YFq$$?}}V>8*Gpzz>2c~ zJjoB#9tT`AiRDRbxlN=*U`c)RfBtT*BPov5L&qthAVORuBKsok8N>SRZ%;q~sx4HW z*#w@>5St!xtgRKg%qQtG6ujxZkX$v|AT<5InBhreiEy30{J^e>S|?gy-Jb0ZCs`(V zW8cW%2qzC=2lLD0{j{`QX&fi0;Y0FCURymCxQ0dcXjrr{$Le|%0aQ%IF7dty+-Spi zm`kFl5CpTR4DLyXv>ZhPf(-j>q*~V<=Qpr_s7`p(Z)+*wj-ym+H?29H)1ROaNG0eF W|C7vx5I~@eu};t&rUpdSF(_2oCYMRim5%|Edj z7TZ0-`~fRPpCYOtfvsh-8x2|)Md1Hcf2hN124XnL7`NrCY$0AZ{C25h$!T4BVbG@W zWZFJRb1^ra1!Zj-8zyZ z64u#&TRA_kW5yX>ufP5p4{~0-uP{BCGB%$!$QLDs6qc_HwbkEeoVNUy{cyoL@@neK>g)kA8 z4b60?HhkcNf>rB7qabN3lHq)$ literal 378 zcmV-=0fqkTcjZwME(LuZ%Hy&62lT>&9G`#V5l65*t#j(3j}fS!n@_88>Rs-e=zD=X zFx?u!*y$?>6DF=CgUq?2SCm{4LcqPff20dcB4GBf`Fn*gC}kfJ+2czqjZJwRCA!Bk z&{xEkp?0m*^3}I38y@n$-I=m0!jo zHrTN{-*q0lW1`XJzc;Bp$Sbu5ONm?`4$CT`HzE?ozt2(tRaJP{n^jh0LMI_Ag%CR@h+evqZNwMRBw&vWGSD^IH&mPwFicA%NRp8 z1gjLqbh3(QbErFsQ6v7m7ytkO diff --git a/Audio/es_ES_2/repeater.ambe b/Audio/es_ES_2/repeater.ambe index f27ed8f6d120c37cc1ffd9eb5b1e71a182ffdfa4..45f7f17a4f9ebbdeb9293dec78474c19c4c55357 100644 GIT binary patch literal 522 zcmV+l0`>inHG@M0Pi>xi!(_)}L@@lzqwsd;A!R_0xY4J}qbC&_x!SW(%U$2fuM6Wk z5d9$Cjz4wet5&)+ck(FDXp1@pOM_aM%fRnHZ*0K7-HZb|Z*?oDkp5;43_Dj2GrECK z3z-^cZxobV&a$Iv1aUc@4wvPt3lbD(n_HJFmpBn5WxHL67>8(6K{TonByCAbQDHFY zb_ZyCX<-5rkm#fGV=f$GJ`wT2oQw#EZNn5|K(Q1Ulx^b@R07f`Ndj!EM@bom$s1=2 zt&FR+l+oc$mZ^tA81+WHA znoXo8G#GB@EpAQ4kI$J9Tv{1Er>q+~eM&5E2wK)_qR~5Su|Y`0Lu{P-I@AGfqodA- z`U&#@3M(o16A2#o3 zf`J1FGel>$@&?mfFu{>}+~sr1RBR>7jWEPYcruJOCp(pcp+^NJA)}+ zh970a^M8maEG(h~yOA!hYp7bti7N6*&kD=1;#Zafe%cSL)CvKa%^0=~u}uBcD-CLp zp>r;<#vgIW;l>wRQtdTgUZjxBK6N_|wg1GmyJC2x>43MayB2ikQQ!L2tL6uDQE%BA M*1E?j0*rEk8OaF+_SXG7?0$iNaey@DVTNfh-cm4(ix>HF(d=;2*>wVqGj|=A* zM!G}UjJl=z>2RNNb=gT9s7qdFD~GV^1{f8S_3lS^D+LtDpL0LCQH@w-4 zJ0}=tED-+X8fusgVlo@JsBo#fZ*^2dySr0o$6RzqL7n{vR@F>ZL{^O3Az{>RS7cJp zz5`_UEhQsUn1H7?FAP~y5_kOsR9#BO2*Y)H)Z?vr)(Ybl4U*7{c>+(XBYs(voLfPE z*i`Nbp^+Hal4`^7n9?)h;iH90S zehb$lPQju7(~TO{D?+9Lkv&I#SUh&><#5AUN+eiz%+J3l6J2#gBc1tWGuBRKW(EJb zQb2AnS#&Zph|rP#+kK(32-?tWLT-8yL0g_ZAAa8ef8;t7?VnR z>yz;czZ>XD4yDSBb5IJ64yc}B6>73g>1@fk;+GP`e%NlR{=>yll^(Q9)rd75Ye+89 z<9Ea84%gs}frJycTP6A1806B()jjjZFqxpicT)8H>CHc`kE3j9c^71!HKSs6Hp32* Myp-fcb4!WhcGvCq*Z=?k diff --git a/Audio/es_ES_2/romeo.ambe b/Audio/es_ES_2/romeo.ambe index 0e344fe9a1fb7314d370a81356a1cf01f53ec8bd..1dc93bc5946cc5c297696981f4731efe653e5d83 100644 GIT binary patch literal 486 zcmVVI8q8~kQ9!X2_6O>MBNyQ)(fEKe_#mosVKV=RMdfHLWE zn9qAsZK1#3=FPlqL<^PG-c)LCerId9sWzAQCtpPgkdf&FeP3K=I)#Sl2QGUi=_`52 ze%CtIHjG$hwC<%V9ueL}LWQq90KW&IAamElw9S_>h6NGOTD9R1Go~al@C=6I8a3Nt zCW8eETvAZD0#bVq_2b4@j|3NehmiR^Eg?fAEVT-K@qBVWeoYvH@bXD_vr1u+)*%CDEb?De-DGsi zfe*oaR`_-ynUYJFMqB3pIfoTmhea9Hzeu%I7{5j4g?*@5VmY5iqo-epXkke10pXT3 zY+3wD-U6q!CrlW)Ig3YuYKDZpgDUb0F?z}U*wG4=DSLQ^7-JRrZfeOQ56S$m*^clUfv>nP;5IMO>MBNyQ*^<98FHLx&Me)D+q-SfLN)- zJP&(PZK1#3=FGflVrlpzFkh|4a_!Afs8OQ9fMv60Hu4q~A z+%Pu7P{>(jx~8G8Ru$_aMC_})z-|+?XBGa3bO=W=wnb5#hGi&26Qo9Sz2!n^Llgf6 zB)A2h%+qqbAyAX&-vbsA&ty~a&loYdX+a?;#NEQRaXu7ST7jGzbp9zZ4L!V!%HtkC zT}yt;^K}|PUuX;w+m{B09(jf>WZRYG(w11a4QI%-nntMFji?;p)IBkNy4Y;7F60)^gu zESdC9*+rrKCy1SGY}zNKpw3Km7Yy@kH=iLf*nw`>2z{I;6l1A=)N4DFjpf~>)WQ4M&>(n|NW3|Wl-74S;x5Zipm4R@d7z+03HR~|V1%NeRvH48(teeb c;t&zdG#g=p+=UQPqrIbTvCXDX7PIN$UIIYyy8r+H diff --git a/Audio/es_ES_2/seven.ambe b/Audio/es_ES_2/seven.ambe index 669248e8f6e13ef845e22a7cbc91b19e856570c8..2b9f36714dcbb536d5875aef16d6cf800cab12ce 100644 GIT binary patch literal 387 zcmV-}0et?7v%wP(#Qf^~_85Q!aC~7Sx`%?uFLioc@ynBwr6smh`z>Y3V}n*5S;pI` zo)F+v)ni#;4fZSJH-Dp{+}FY^#W#B!^MilF9_JGsI>p8<*g4?^Kd)a{9q1b31wM~` zPiy!X<3SvaUrRm>L42#ByD;E(7!_`53hXB8vk65+4aDEEY#3SvVk*gQm!YaPjae7g zj;2~%7QP#DjdOE_R%Ol~1@pvHY2pI>MPuaZXcWw4pC&~<)T4@fNi$htR#K(O$1F;1 z))P^YwVhpE;zcA&prxlQ9i=4$Lt)c->_o;zAPG|sKW%F{tgZg3%vDb=I);m)ZgbHZ z94%0yxMW~QOt4Epl8`3=R~*s|bfW$DRI7P}Y*UpOGatD-ta(K9vK!B~Ug|3{)FIrX zkv+{!8Maf)S?hpi2&Cs}VWUIR5>Mn>>8&<;;s$Sqf+69??HcTF;c8DA&-*#5ZtqGY h%v1;%nhl9$nmg_%3ybG628Jnia)AYbMRiO){aIKFv#0<7 literal 387 zcmV-}0et?7PNrqxDCg}Us(Z#kA`NNM$-(BRNpt#`xx2ZQ;su%v^L-hKCFgLr%@|vy znkI)Zyd%xz&9Zvp7Md~aoe!dEf)cg5eI_^27{wIO;D}?b+&QH|-66Cb9qbyWLEHni z3v2usrv?52mJdEj2Vbk|(HCVt92F{Ut|02Gr)?o+FUzN~{B|5eA}GxHaI5-4*;yCZ z$D-U85V$^4kDGU!`eW#N2l>E~iza5eMMJEH50H=n++_jQ{A)w*3sW3N6FMc$3ob}+ z)-x5s_l-&~E`cD2FumV>Zo_9FUE%Yzgz2DjAQ-I6=WS>^j*0!)>}3yJeWJ;#zB6A= zXblj`lr*IuNS7@}+OVU*mw1*9cB-|v(C2)z331;Dv!6LXi7Y^wv!6?2I*coHzD?X? zojK|YIldEH-F~D{Z{n;7@492r8vlMg{P(!4}X2?4ymMU h6r9K$yl9UNn(J<-YstZI3PwG;^5tXVB_*h>=YPzJyvqOp diff --git a/Audio/es_ES_2/sierra.ambe b/Audio/es_ES_2/sierra.ambe index bb0bd2b7bab335519981a4a88d5c30a1184fa6cd..b03f831c1771d45f7297f7b704f3ffe14cea5f9c 100644 GIT binary patch literal 441 zcmV;q0Y?7N9j71^;t_f$#0sJWa!hb>iM4v=AQBXWC1Y!^m-ivK(A9VCXQehzv9h*i zwc)2x~sjef#Q`9v` zWM9=T{KBC2YuV8~MqQ76GdV+nTto|lk)K5hYfEBq0jgssXdQV&K_RMh135klF$71i z4d+PnGT$Xt`WN}ErZM~{bgNVR|BzvyKt;$uKHFF_?*=5VH16J!ckv}t-&CLw69LQz zXQ^_{`GaBDKs?P=y>po%nqsl`*h7bQSR@HBq*HD69UVIfVDKko9o$L^2s(~nvk@0v z{4UIdyZX+~8^{y#^skJ-HqS?*p?zEMn8BWT@SP`+V&Kt)K24Sm6- zDMzU}+HUd3#&HXI9?wX!mIxIk_Xws9^;({U8!LGCXtf>C02s$;yegtj1<3hSIJ*vt jQtT_qSF_KDFhIAy!#%LxgivO%?V@d@%78KhZ|SL`E9T4z literal 441 zcmV;q0Y?7xtfUm6N9E^|tZm|9BElJsG3ywhMPn40wr7rez+tT&F&Xl!CxkM%H2&i1 zdrZYv%Y4i)myV*u@D)9@i=5^mnSC`S#o8o8g5G7;ICvRkQV~ndKWRYD(L_>|c2PCq7Rc2#| zy+$UpH_0GZyxZP`YBl;IcI}_|^IRp#07s3g{?=GD>LNhP`MSa`bJYM<|G3vW`UT1Y zW$(Vp_iqKhBN&VEeLLA@+(Xg<UvN96%~G$UiML6OB|@gcU@Om z;|rk7f&C+EJhd93qpOd!CL9}CQLdZOwZnUa4J5d-grcVk_G)3guMp5lT(AH;s>{qb z<$w8DMy{P~T-|*6S_0heXMe~+qr#) z&%(fBg;12PWNyvnQ7ZaN@Ckj$=P`vNWk$(--^FtX?QO?@z(J)T&=n-NY2k6CAkr}~ z)jBA0dWb&g4hGrs=?NJ;Qi*zk%Q6HA*Z!YG>~ahd@E- z-^%)IV1~4C&t;eD>A<+gV<3$UllH0PLSk2M+$r>%=R{;cT>D<4gykg>QgkKB@S)2) literal 405 zcmV;G0c!r((ByS|WB(;D3|fawBsj1g$*rTNb@d1^uer}b#c;lr9r&K=#fM~yQe;1+ z>%^x-tWgIn!F%naSIl&?kSi*T}2Pz^Q^X)!(qbf9q$UB-VtVE-%M}_^~1NU8meOGe#nHjWHn(h#DKkBE`MCKv`M45}DLDkL& diff --git a/Audio/es_ES_2/tango.ambe b/Audio/es_ES_2/tango.ambe index cdcc75dfa284698d659bcaca2a116bb8d4d3cb40..cdedc7fc2c554e591748fecb3dba1ad2f1a5bb88 100644 GIT binary patch literal 369 zcmV-%0gnFniR5-=bWHhrl7+=^MPm|B?U4qcU}s%9jT-QG=Kw|qjQx<)M8{$P5RALU z;CIJn0urC8x9Qi3wW#~IoCE`^EFz8lR?f%2?89_CXcXQZa+ZLiS;GlVxF`(szpnW~6+rZJSq!21SNUt!&FR*g+$; zH408Z6x%^?(qtP70Vc_DQ_(gWO>%ES2L*rWyGt*9a4cUOY~q!bXe$UFoFK$^bq=ur z>N>UV+9(}`6=LKBEI06I^G7C;=F3avd!=H>(($+dTrBYdm-azplnhAT1LKEsUO0(a zsU&o^buh1Fd#ffF=T`&R1#Zt6G+2+5M+FX?TogLuP$u4N{8zRWi-B6~J&#iISxk_` zdmQ>p)*hlc_jE3?OVuLk5uKYpkZH3M&Jo?NSdU7CSC~y94O!?(u0(>4z4{1<#so#i POmkyeli@)nYG8p`yydBJ literal 369 zcmV-%0gnE*{G(^?$KfhQv;U<-W`(cNZRV)t1z}`a%}dva$0K$JIGY*9sl_FBBM*){ zwdsICG7XHW(CgKS*ND5fm?i_NEh3Hob>GMUs|`b$$N-wzR?K8g-j0ZGQ)Zh*A;_R@ z;-h4lL_+VBY4U+KkYZPxKVd_TB$7Z=*$p*d-gB=*V5%H>?ORi>V@IwGdF%^OtYc@L z9ZHW3aKB?c~a|>@>b}oCeru$VD3{6QGxTF+2HE7dg ztdQLz66{;UB?hQSeD?TX#{gv6!e7f}U*{tQnw5XQP)xHX@wvq#ea&wAN2Tm`j{IG2 zok29+B;*RD9nA(2%U)9)4NA{Ubi7Aj2LM~_A5hSWobOIb+7R$Kjsc!1Jh^bRvW3_H zzj>%=^4S9=v-~=d4$;R$+1#Hhq7Jq7XW51W@tqL;UHUpzZ zKVwN@_k`)WO%=QXOW(&oZi!KkazfZ1TkIZSyh3K#I(YsaLD*n#nlr3Nj&}WiG@Cw$ z;mZQ-2X(q<>HCCgb3-GTb$3lqTO?)in@|p`^BNupUhzmP&#!Kwc|oGJV?i|?sBI?2 zXl(NwUY`!~kYMB?87}%u_dnoS7|3)dR zNrVO(#+(}V`8LyCBq E)WOM)dH?_b literal 306 zcmV-20nPra=f?3u#Pv&a^xmTJImz(RkIa6ZSD)Q@d@@t|U)-6GJK#$Jt1c4U+y<@6 zJ4G&GpMq%_>s8)lOWlwDDg`ymGGf2FsNh}%_yR`0oSV{JXWU`K_|roN4iJev5}lq$ zu8Rix0(bnY?dEDubw)wHy>mgsKVT=f#f3yo=%OH+?1EtS_Bp zaii7d)y?fG#CP}HVdEyRYNAt+g2&X1i=~2fv*2~W2mcu4M%J59@d2+}q5`s%w}z?D zDaJzf?o`rt-4?W2#3W1GHZtj(H+&)aLUf=sjIa{q>3qz$>7X)1IP9LMx9gxX2O8h` E*G+n+YybcN diff --git a/Audio/es_ES_2/two.ambe b/Audio/es_ES_2/two.ambe index 89b076ee025d9b880b4b93275ab7b0da49cf6ba1..112c6257200832630e49765c61aabdb70125d430 100644 GIT binary patch literal 378 zcmV-=0fqjuHh@9|O(?!^<45Np10b2tkbGaj0v8L@@WWj{E^4~W@=xz-J$<7(U*!j* zUh`=Pd|-`eGc2-AJP_rXp~Y)bPlDa4{V$@Ce;D0TIBlrKdc?QUweQ29KM8ow@!tVLCOwp`c` z{DLht|Ln)@7 z8R21Q(esPa(_)5Uut62Fdb%NvSq3So`n2jOgJ&gXt&(=p*MI>K2-6Wqpp@kSc6DS? z$)?+)U=U1*?(+4B=SM>ZUHMDIs>cTaR$tvO;OC-nVhYCxb+fhS5GG+1bkD%_pfDg9 Y;ROfuiN|DcR(bn*mFt24aSn*NgK~7YivR!s literal 378 zcmV-=0fqk0=iwC$?d&SBR}98{Wr6snF)lx+BoSs1u^(MOFKW8X^KZ==Nqd35aqUjQ z8j%_-kqiZ(vrgh`J{(ltZzpR~PlDa4sVv~unbu}44ze6_44tVY=M4LoV?%{Zpl4h7jG2GBzftNXS0i)VF-rpZ?Ss;YT zAN6GXc})iJnb4(cWiG=_L7V{~iSP{LO?RDl6zj!VscvqbIJy0nf7@-Zish9v_I}$; zxQ*qZH{*Ti$2P_h5hJLHO@&5hq&AHq&MDFCvCE@ zS%YPQnL9&PgcO0h%0T%~Z}wxuK~Tx5vl*xWoN6a}t)AlZ_n{$nNQ5y~pN7U4b1Asj zaIc5t7jaCOpcLMA#zP=K0XQ1%XT)SgYX@H~Kfb_cQy)t`$sMiYLv(F,5g`>FGqװtGQ GeCqQm0eDL7aa PfpTueWP\ba@M(H1eP[SBj5㰹E:e?#nHYo$Y&,\J}p:-Kb__+j Mi<DnT?*~ٺ|i -?iZZ]x_ Eڲ_Q"T|c['t[BӅn' ,S0Т m9_E * Ô{{Dd\ -WXY.nzMG4.VR_9Rli,,s8!(jyjqĿ4` nZ]7d|,֭JI.HiыuX󰲇B&yAWs?…W WRjC|w \ No newline at end of file +CEM9sGrͳD`fWcĢ$C>PCbA!GBJ5^Fuz +11hq2'ŔA(2f4P!Eƺhq#'ĄrB#SǘAESa3ecэXU&wUEfer@{CI1'ri}FduT[fB yU&,ᓋ\m{K4E^Na+`Qb+ \ y:+.ðb. <_a'89s%] xmٟ+/'д?aR +"{Fv[.R# +5)>/xSiYR  }_WLfD }DF8S0MUJM><.> (Z[\plt/nB[\`C]HoRN|=HO\1m:ىhJ!Z38~bt<"77gps2#ʣ0zڢc3>ϸ \ No newline at end of file diff --git a/Audio/es_ES_2/victor.ambe b/Audio/es_ES_2/victor.ambe index b1033be7bdeae2838b213eced35d73160351177e..1e409032a1876d6d4f83be7a8f5de5ce3332a9fc 100644 GIT binary patch literal 387 zcmV-}0et?bO2=UVcs+s1eU;BERs%?Lf6joH^#e0ta8(%znrTK%eL*>l^7R=ZWC}~e zIz$?~xvA4cz!_yuHM1F=m5@pfKm=`u6_F5FUt%hy5{!&ABfv&|x$TnIk#x63JH+*X z0lsmAVmq@5k_r$}i7E|Fh>i&^3=j{;Cc%7QdrBgQ1!ZJS3GV(nspG7fW3KN(=fc#> zb&NQ3vE7Xd1Vq(3r;?P%Fk^BSP|3jbqA~(L&}0Xbr^hy6Q8Wu`Ux$Uu`lW>tCU5xP% zmwYCXLs6SaQbL$lt4u4dAT?)e?X>ZD7^&mspn6|7%JE+I{X9}>m48O3$xgPvA_RWO)a>*6N#b9J*dsVzbud+ zxT4DDQNfiY>&2G+;1z{^HL*K{kby=CMx~Nn+R)RAY)K#-0SE@1iarEv=@_6Cqeo;6 heZ5G=?d4i-p0P$1N+tEt;zg59ScZAsl z&2B=`V^to@2_Q0NzZ0!Yid^PEQLZ-WqS{g!4r8n+Pv$4X@7!jZ2(YA-42)}H-R3q= zm4+wtES{rQI>D%r)D66VQaQ5Qfx#}1f;2j$sn?;Q6u=`}rko>k@pGqR)B_XH8X_U% z!FTuzc9_n`fI?PR42A!km&9gLNc^w?os{GTP+yKY) literal 396 zcmV;70dxL^$$>Njd*6!ohUlOLGd|6^(AT)-Cl&%uj(LXLf?-k}t(nt6$zR{8oO{z9 zHRvEWkK6izD{+iM70OIY&Mzj|Cj9TW0qQ4Ujcuf;!Q2VBV1qW(`Pr<$Gg0LLRnN?X zPmDzKB~kkY!DKc-pH$1O1Hq<170Na5jHYqBW_OxRDXt?^E*xN5+(x+_x<66|N8 z+dtS}x){m|qjnc&n1f)LdBsvOD164diE77FBuh_*zum=$`5`!@xyOQ?i`j~v(?6{` z^j+$m;EbGOYVj(7+k>lAPI;suq3TK}2V-iN1G4F9U@&KHktXS_C{Z}oinLR!lYQsYEO{A^a-2M$LgIm>Grl8mfjV|cnq;hH58v&}k}4bxid qfqNWky$XaVC(rvd9=eq7#$`BrJ|v6&2nAUCUQs=tzy@I)Tnwv{fyA!> diff --git a/Audio/es_ES_2/x-ray.ambe b/Audio/es_ES_2/x-ray.ambe index c938e83..0b6e2b7 100644 --- a/Audio/es_ES_2/x-ray.ambe +++ b/Audio/es_ES_2/x-ray.ambe @@ -1,2 +1,4 @@ -b dgCKt!pU2 Ch*Ap,́eqH @}/.tg *P!K5e>RZ%ƃ$H'l˝C`DфAG7oу0]e%Gb! EeP>'(3:Ƈge!k|PkI:_n4K_N& Jf[6d08#ffAZW8?%cX` -:Lt*zwE0;8WNgH=rzY\u"^g'*xTХl9F|9@Hlyσ@gqJ3G:zc;7٬(o0rJiq†1v+A \ No newline at end of file +̒T!qWM%[ |dʿGwS^ ep|męgGqm!$@}혽.?Vf/*Ts`'/J+Q`GhP;#+C ]DcB c%pb4gJTWңE7M' | <;9Aae'%s^#X7Pq@T/:Ɔgg+-yYHoZ< ;Y9֢/lcj[=kY,29z #y +k &[5*"-XYDAE4˴ydͼ9' NA \ No newline at end of file diff --git a/Audio/es_ES_2/yankee.ambe b/Audio/es_ES_2/yankee.ambe index 2f607c08fd709181f08dcbad877721696b1fd53f..41345cbacab453fad2e3fb03bc0dfcae068bcc36 100644 GIT binary patch literal 405 zcmV;G0c!r?EQfM-fF*lpwOhwFaWt?uc9u%#5iul`Z~=R1ecUf|L8~)5SP7D$jU49Q z3SS!WUL_MWS{#xL4;VNfIFD-6Xpo^i7@S2pSxAzvBaa->4kkauj6Wjh%?6x0a{dz~ zqE1IucOV!G9u-|KFl#z4RCo4!ZW>CV9)ab24H|uF zmKFQK*h3ClPWA>=!IiG>m4xw(o*u*C7o(IqkNmeNUASJPSMpw`yg@q;TAQ613Bz+5 zeL2-%M`i;mD6u&%_AFwCz+2%)1>m9RDzj|$U~=L}>}GBZwIorL6K!y(S*j*RK~Q*u-VX>0n?|%cl7_seNR2FbTsi~Qet)Vj)OhQ?*V{;s3&dIl z%)3B5qAJr3VWbzce)0{sA<^OQA$*p_7bd4S-o+}Y#v>$$A9Z(;(8PXVXrR1k_XM*f literal 405 zcmV;G0c!r%JK!)Jh2-po*9f2#RBbdBij`Q#R5dY?24xHxez@v~ea_i_94oYo;7nrH zUk!MXk`2%K-X69L3-pjf_z!ON54Pz%oDSn1O>D5~&x;WqYEoR}tB>NYjR1-sQvCTK zui8=hSx4D|m5LT1i5>>%%OT#HCB$2G*p$u$hZodm^V%$Fqy`bpCPtYRir)8gzhGzj zO<&AA5$+{*=p~DtkOJQ&SJ-E~=+#PKA|}+U(v?waa4H_eJik8sC|U`n_K7L9$$T10 z@;{S-93KvOP1Xc-#fQJ`wWsl~k6zKxRm11<&$+8$iM(3jRk|A|I;4MVIN960$=MZo zJ6yMs=kA992$5Jyy5yry$X~}IC+M(fsu5`O2Q=zRFM{eQlVda7GVSnZJ4{_yZq<*%fQA|s>Qi<+ZttK-8Yb8Q~G)WLi;iQC1t2b=&F?!y$LkVF+!pTUvm#=PI&Qz<_ktG zbJ(SNXpKAyM3(6{Q!)Su_h!JY6Vf%yd4*ut^3kA;cnF_H#kOpzY-D-t0n?-uTzS2h zBLE0$s|q7Ypd}ArIH3~LX@+$y$8HHddo8y_EruHiDJUF=A}z=~Cdu%qJE;xYV$2EJ zH%gyrwid4$G;SM+=QK9PDKrAL1E(f*!F=U~@*Rd$Mxr%qcb$ahH&O}h$6=%o)GQ$= zbBp1&`=CQ2Pnycsruv{`0Sl?DwY2zxBSJizn&Rh*#YS;pdFpSZ%Ysq>UHQrOx9fm# I0UnI_=cF9Ok^lez literal 414 zcmV;P0b%}z?!p&<3o*BR?03Zka4d079LMv7GXsK^Ed8XAp*0Or!j=iwP>kJ@?l$Au;PUeC*1q3Wd~xq62rjpD(f5V)1? zmxbolgf{+Ln%{pji5rN_;n>3CA(|`zjOljEiC}>SwVAx`-*-aPB6r=sq&~YtHgX3coekB1O!b?4n&0yDSvU*+#C5Uw18RqOiF{W=kYV zcihdsC;?b(C$Nv#lRiKU!C>Hx-@4bAG!N!4cyS(=xNW#(Rwd_#AVNUGwE&+Hw9jZv4fB?~+ zCTzJavKa4;wCZ`v!8CkEDe8jvVuB<(V0bBEfLy>dBv1u#QnDdb~g zy$axHQvRJV;i?pcaM~sB(94|%z!ZC%H23TM%ZsB*e}w_|^d6PR6XIIGyah%U1ykf4*WYFl>3$aXU>uk+)Y)7_w?!DG z<&adI6{8?h<-wGVl4Q|FRK&Mq3qfkC_{-%x z;R$dFkIadOTZ3&=I_7N2TMWo$CK(IuVUr)|Wk)*;%2D$h?_g3{!`v%xPO2bP4pJHw z3l8aUyMHoAOS>EVYgv2~mE-U%f=iQf$w1xPc)v-80Ld6~Z65YW{ZseSRwydtZ`&6Q qrU~|d6|yk|2nqacu{5J|Wl4LS38+fO5JGM_9- zcQ%5?=MTyE&JXWSd*eZzmftZ4cZ3<8n&rk?1q8Bv)BC5@_k1$rL_D5}(A1DXksyBU z;Sj)l6Ng50uEbCaRsgqUR;{&ANKzn#XBN%HR7q7JwnaDH$2AIaWUFTd&+!h`gmRBV zbNhdMy;vFnCk4x2p=;1P10;0YJ;G_=Z)gu9jqq}ySXzAu6#Q-=ny@|NZzt|TAdBH0 z!A(}rV-(4QKjCh5{6-+jlP=6=BJt;?p%;CxAZ4|$2G#F>uOd{Hs{rHg3hH20z#hik z&tI=7f3;dqNh5!(D_^x=O)Fp+mM^h9iG*1jUcL|Fq5;G*eSWkL`*6QT7UWK)EctNl qCRO*uQ!3v?q0KyL*FX!OCWOCCNVOw{6DE^6r?rsYq!(7^sjwfWX~19r From 609fe586b6be6b8ec32f57666a93c959862999bb Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 11:02:32 +0000 Subject: [PATCH 09/35] Armv7 having build issues - remove from CI --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3e0084..bf38f53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,8 @@ build-dev: # This job runs in the build stage, which runs first. # - docker buildx build --no-cache -f Dockerfile-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . #- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386,linux/arm64 --push . - echo "Compile complete." From 3462dc729a4373457bf19a1f987353f98e3ffdfd Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 11:03:55 +0000 Subject: [PATCH 10/35] Arm 64 having build issues - remove from CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf38f53..e674f84 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,7 +27,7 @@ build-dev: # This job runs in the build stage, which runs first. #- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . - - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386,linux/arm64 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . - echo "Compile complete." From 7da8673e75fe19c24251d80e8e7ecdd5fb3f777e Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 11:06:00 +0000 Subject: [PATCH 11/35] Remove arm architectures from release until build problems with PIP can be fixed --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e674f84..a319dfd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -75,7 +75,8 @@ build-release: # This job runs in the build stage, which runs first. script: - echo "Compiling the code..." - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . From 0441123e07f15a20d49b3c362ec5a690ec672f32 Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 13:58:04 +0000 Subject: [PATCH 12/35] if the UA timer is set to 0 - actually set it to (close to) maximum size of a 32 bit signed int - which works out at around 68 years! For all practical purposes, this implements an unlimited timer - aka sticky static. --- bridge_master.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 0090d3a..7c1af3b 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -398,7 +398,7 @@ def bridgeDebug(): if enabled_system == system: bridgeroll += 1 if not bridgeroll: - logger.warn('{BRIDGEDEBUG) system %s has no bridges', system) + logger.warning('{BRIDGEDEBUG) system %s has no bridges', system) def kaReporting(): logger.debug('(ROUTER) KeepAlive reporting loop started') @@ -894,6 +894,12 @@ def options_config(): if isinstance(_options['DEFAULT_UA_TIMER'], str) and not _options['DEFAULT_UA_TIMER'].isdigit(): logger.debug('(OPTIONS) %s - DEFAULT_REFLECTOR is not an integer, ignoring',_system) continue + + #if the UA timer is set to 0 - actually set it to (close to) maximum size of a 32 + #bit signed int - which works out at around 68 years! + #For all practical purposes, this implements an unlimited timer - aka sticky static. + if int(_options['DEFAULT_UA_TIMER']) == 0: + _options['DEFAULT_UA_TIMER'] = 35791394 _tmout = int(_options['DEFAULT_UA_TIMER']) From 9971eec542143b8aa48966f71f37bfc67c3b0a13 Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 23:40:35 +0000 Subject: [PATCH 13/35] fix bridge debug loop --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 7c1af3b..b2db71f 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -394,7 +394,7 @@ def bridgeDebug(): for system in CONFIG['SYSTEMS']: bridgeroll = 0 for bridge in BRIDGES: - for enabled_system in BRIDGE['bridge']: + for enabled_system in bridge['bridge']: if enabled_system == system: bridgeroll += 1 if not bridgeroll: From 21f65da93f8dacab57812f7a0bc5f843706a7f1b Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 12 Feb 2023 23:47:27 +0000 Subject: [PATCH 14/35] jk --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index b2db71f..68fb1f6 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -394,7 +394,7 @@ def bridgeDebug(): for system in CONFIG['SYSTEMS']: bridgeroll = 0 for bridge in BRIDGES: - for enabled_system in bridge['bridge']: + for enabled_system in BRIDGES[bridge]: if enabled_system == system: bridgeroll += 1 if not bridgeroll: From 9b5f2fa55177f1b86a7895e57fe34d75ef22d075 Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 25 Feb 2023 00:39:33 +0000 Subject: [PATCH 15/35] Fix problem with es_ES voice files --- Audio/es_ES_2/0.ambe | Bin 0 -> 414 bytes Audio/es_ES_2/1.ambe | Bin 0 -> 351 bytes Audio/es_ES_2/2.ambe | Bin 0 -> 378 bytes Audio/es_ES_2/3.ambe | Bin 0 -> 306 bytes Audio/es_ES_2/4.ambe | Bin 0 -> 369 bytes Audio/es_ES_2/5.ambe | Bin 0 -> 342 bytes Audio/es_ES_2/6.ambe | Bin 0 -> 405 bytes Audio/es_ES_2/7.ambe | 6 ++++++ Audio/es_ES_2/8.ambe | Bin 0 -> 306 bytes Audio/es_ES_2/9.ambe | Bin 0 -> 369 bytes Audio/es_ES_2/this-is.ambe | Bin 477 -> 477 bytes 11 files changed, 6 insertions(+) create mode 100644 Audio/es_ES_2/0.ambe create mode 100644 Audio/es_ES_2/1.ambe create mode 100644 Audio/es_ES_2/2.ambe create mode 100644 Audio/es_ES_2/3.ambe create mode 100644 Audio/es_ES_2/4.ambe create mode 100644 Audio/es_ES_2/5.ambe create mode 100644 Audio/es_ES_2/6.ambe create mode 100644 Audio/es_ES_2/7.ambe create mode 100644 Audio/es_ES_2/8.ambe create mode 100644 Audio/es_ES_2/9.ambe diff --git a/Audio/es_ES_2/0.ambe b/Audio/es_ES_2/0.ambe new file mode 100644 index 0000000000000000000000000000000000000000..cf50e740e880cbb95bef51a844230f259d8c1216 GIT binary patch literal 414 zcmV;P0b%~>K;w6GgEe!dc>9VhGAZWUXQ71UW|<-!=^$;u!4Qq z#o@+BTsj5wqxJE|XHGdF<<)_vq$MegfVk11wS*@vyyJ`1fu@I6JGrI2)RK~gHrHi{ zKPThY!xVYfQqMaizhBJe(HH?oC!7c%jsbGl1q8(fvGK63A00;0Mt8IOV7h-t;zd`L zx+Sk1Rl+7y`%~d3QCHF?Q`rKB0(VipBV&f=sAg3ay-E_~+2;rk9}{R!Y!X!DYA;|5 zar$k3Btc$EL6*mtSN?!#mq6r$vzGY_9m62?v~ggCIB5AG;W*4;s3>{L0MQ8CP`!Ec zML;ZS3(9K^;$=ssJ_Qz6Wac&t;Q+0Dx2^XiOMrbqt!R*^Ay3K{&P_bEJE;uXV$2EJ zH(H-)wid4$HE%nM#uRkMc{CH1AcO`~g*fGv+sZoVnhtW17-KAo99P$ac!w9 ze>lN=12J_U1>~v4V{u|k?|B!+efr6%01Vy&u_sbaftW$+H@5;7S_#YyRv@qib3Mn1 zGRQN4B@rIciFVji$3isnWk8aIV#7joT*+7w5O<6xAZ_NbidtjLC*c?B-ud{fCV2M5(e5rbFwrWDHnS(3j-dSFc+I_U2O&_ zx4o>i9|;&zl`v&1>1v~6g<4JQO}uD_bg~^}+G#ZQi)b_f?MMqK%*j@^o&uLO+ YWR9(u%YZ>3eyh#b)rjRqL1lT%Zw||?WdHyG literal 0 HcmV?d00001 diff --git a/Audio/es_ES_2/3.ambe b/Audio/es_ES_2/3.ambe new file mode 100644 index 0000000000000000000000000000000000000000..8bc5f0ff2c31efcb5fb96cf6ad0a55b4e25a63df GIT binary patch literal 306 zcmV-20nPr}HPx3w=WF39s3Ne=WtBJ!W{lRyI+@uq*cTI;I-I=LzQV_0%P26=93W*6 zTLvp<(I!2G9dX-XZ<%B6CfG6VRbUv}W6CC_@YjdJ$`+qn6t$km zDGvh9WO0R_Xx=qa;WQ<37TkF699wG_r^UOZv zH*9rkQNisE=Qn*+X=kSIETuPb&d-?4>BGb|djgF>5C1&I23!+cRe;Yu=0tonI|8K7 z4deoRW?WYH`8LvAH0*<$BT|dJ7ZQcJstSUZY|y_vjo2wM(lqNB2k(k*HW zc|7OKGR=DMPfoWo!opihr+jDCcw`N!Znb)MJsLfL^&6{sK~GOWeKbnj3=n)ol1uG5 z&ur6gDJZM0O6Uu{E>2A+l}fH#;bM+SLnv3RBf zy_cjDZSYEYFX9~MM+h18giq!2CW9&-0#WwRkf(Z+GrKtP6-bjM>NUUdcv*h zSqEM=NFD2T%Rh{X0XXdlE<5d`_0Jd?KWQJQD6J<+;Yv$MaSspQ_bprHZD|Vl>=U_P z?+4(1Az+f>Oxy?1enV35ky*TAm1|XhX=@ oXGo1H;%gzuxezMOE`T=TodJLv-3_E9q|QWvOXz6GB(Utt>BBFfpa1{> literal 0 HcmV?d00001 diff --git a/Audio/es_ES_2/6.ambe b/Audio/es_ES_2/6.ambe new file mode 100644 index 0000000000000000000000000000000000000000..00763fc9603644b0d57e02636e6824b5d150aa9f GIT binary patch literal 405 zcmV;G0c!s6pTZ?p>OJ@I-Nu6;WB@tF>x+ZoL?qL@uKbOmrv#!oQHb4&p@RSndVMp* zuZM<4YVlfVeLIPTcMW=v$}23cgL6oeoTh;oyMpae)QmAzYF8 zMsjWzIPO14n^YeJ>3qf0$ghr~6|4yZ{vbAnL?*3UGQ^v-C{Gu>dltmW!V5|v&nHKk zR_U*R5zYi>+d{qig)rP^Qp1lMG>S6bWK)ET8z#CABx54uD0i;`PIVE9vt2&Ylvoxy zH^g^uupJH?8e_yoCQY4tfn7j3qACAuKcPGy9}jseoet?{WjcE3XQ2$)aQJ*c0t?(& z`42HX5T+UH_XkO!7&FT`lcG{6plX3B5ycTUglZ zeuj~tM_B;yl3l^BqjM=Giy6Jazk*Q;b(|@U!i=F&3uCxC@8Q4W5k!oArl;=>hCo5+ z-^%)|ru(*H!)a6E>BG9l5dhr{g&M)669HF;_QCa<=Tv1teCtf+tH)GkQ%tTYty;hX literal 0 HcmV?d00001 diff --git a/Audio/es_ES_2/7.ambe b/Audio/es_ES_2/7.ambe new file mode 100644 index 0000000..709bd0c --- /dev/null +++ b/Audio/es_ES_2/7.ambe @@ -0,0 +1,6 @@ +ΆT㭲?עBpv5]#tb9;@ +!A@dL bbiϺaI#5wg !!]% ]~%.+|a:-~i׮6>\wm#$+}p$\:gpfQ*bXT-^]#d%fG +XDat#I"yCt=uq =6bPy\\"UGPVy+oHE+Hy?^zlRlHnBX#XnR]gs;۱] "R\(g_ +=X"Lhɭ'Kp +]ybB )H +Ig8 v d+%)R"}wr'e7(}Y \ No newline at end of file diff --git a/Audio/es_ES_2/8.ambe b/Audio/es_ES_2/8.ambe new file mode 100644 index 0000000000000000000000000000000000000000..ba3e76111540b4eee2d6f4b6de27fd3596667eb3 GIT binary patch literal 306 zcmV-20nPrEOXg4m5U>Y#)8wSyVdpboLtEsutW%3LcD=+Rr>x;t_zI#$`U>9%$pwk&KtC|{;j3J*9Yfde!c znoRx+1&CBAd&z69RN#y2xLe9k literal 0 HcmV?d00001 diff --git a/Audio/es_ES_2/9.ambe b/Audio/es_ES_2/9.ambe new file mode 100644 index 0000000000000000000000000000000000000000..67b4a5dac923ab997184f8d87a571eaa649b6d62 GIT binary patch literal 369 zcmV-%0gnEJTIUx4BZVgw))}HCP)u;ZWw=r4JFi9U{GtXNb$fY$F1O4VuvY zbF5$#>0UVB4{)wj`HoeWwk1=HDP5Kl@crv6AWtu&0!wcuKT9mbPy10`(ZB+PJ!|#r zh)>Hyfm2#ql)TugBF7OPF?7v#nFED)SD1t`9K#Hqc|<~A!s?i_`%N@Kv~plqYRniA z93Y1Xlz8P-GZvB*V=F{E%#542N7OuBe1`d&>r`4!F94d2F*eN$9ZwMx_nrT3a7aA1vY z18sJVGr45iaK2y{`z%ZC9&^hBD}|{JsP|N)VU*PQ2wJB?lUZQo+053BRcu&vw9FXP zS0o-jG{ex`)!Z@(IYYB7%#0O7Y;AT;j6feR19%VeOtpxbT@xPWa1Mb?%FWDYhIU+_ z;GtssK%jLUYn95%tX+ZzI$gU3eeEyD7fe)mV&|?-fpslu&0!16;l*cbGKg^v4ouSL zpaAfDE6MVQWg_Vh?GuZGp;1^GJQnf!^Mw><%vi5M%TvQNB*!sF^n&fCRY!s7hkc(+ T!XpC2JpVqIdR|jC={`MWQ#c)a(gAy#l~j^>kQq9f3~yc|i)Ff@ZQcphPA;e7*>=CZI${ zTo~PWP32;VYI%n2%hf*)mcD_(b!hdF)CS9`lMJ; z8vr_5HmlHB5galpdPm#j3`AK)Y$|fCM2KH6XF4pjiWS7((N|uDbmYl|0!ief^nSPK zsOh4eXrM&omX*eej(MVI$EEYd?Ttx-L4x)4#`=s%gJGee$D^x_p{D`G8WgXqN+{5y z%q;M$2kr8}VZcGht#^xuqg9gfbk(LmP~#UTUp}HsX)NaC6EF^U;w0 Trw~x3sG=UcIlyRF%(!OrpjPU> From 41d89d75a4e1a1682cc66f5d38bb58e46304d3de Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 25 Feb 2023 10:31:12 +0000 Subject: [PATCH 16/35] Fix es_ES --- Audio/es_ES/alfa.ambe | Bin 306 -> 306 bytes Audio/es_ES/bravo.ambe | Bin 315 -> 315 bytes Audio/es_ES/busy.ambe | Bin 414 -> 414 bytes Audio/es_ES/charlie.ambe | Bin 306 -> 306 bytes Audio/es_ES/delta.ambe | Bin 324 -> 324 bytes Audio/es_ES/echo.ambe | Bin 261 -> 261 bytes Audio/es_ES/eight.ambe | Bin 306 -> 306 bytes Audio/es_ES/five.ambe | Bin 342 -> 342 bytes Audio/es_ES/four.ambe | Bin 369 -> 369 bytes Audio/es_ES/foxtrot.ambe | Bin 423 -> 423 bytes Audio/es_ES/freedmr.ambe | Bin 855 -> 855 bytes Audio/es_ES/gateway.ambe | Bin 495 -> 495 bytes Audio/es_ES/golf.ambe | Bin 378 -> 378 bytes Audio/es_ES/hotel.ambe | Bin 414 -> 414 bytes Audio/es_ES/india.ambe | Bin 360 -> 360 bytes Audio/es_ES/juliet.ambe | Bin 450 -> 450 bytes Audio/es_ES/kilo.ambe | Bin 324 -> 324 bytes Audio/es_ES/lima.ambe | Bin 333 -> 333 bytes Audio/es_ES/linked-to.ambe | Bin 594 -> 594 bytes Audio/es_ES/mike.ambe | Bin 459 -> 459 bytes Audio/es_ES/nine.ambe | Bin 369 -> 369 bytes Audio/es_ES/not-linked.ambe | Bin 576 -> 576 bytes Audio/es_ES/november.ambe | Bin 459 -> 459 bytes Audio/es_ES/one.ambe | Bin 351 -> 351 bytes Audio/es_ES/oscar.ambe | Bin 369 -> 369 bytes Audio/es_ES/papa.ambe | Bin 324 -> 324 bytes Audio/es_ES/quebec.ambe | Bin 378 -> 378 bytes Audio/es_ES/repeater.ambe | Bin 522 -> 522 bytes Audio/es_ES/romeo.ambe | Bin 486 -> 486 bytes Audio/es_ES/seven.ambe | Bin 387 -> 387 bytes Audio/es_ES/sierra.ambe | Bin 441 -> 441 bytes Audio/es_ES/six.ambe | Bin 405 -> 405 bytes Audio/es_ES/tango.ambe | Bin 369 -> 369 bytes Audio/es_ES/this-is.ambe | Bin 477 -> 477 bytes Audio/es_ES/three.ambe | Bin 306 -> 306 bytes Audio/es_ES/two.ambe | Bin 378 -> 378 bytes Audio/es_ES/uniform.ambe | 7 ++++--- Audio/es_ES/victor.ambe | Bin 387 -> 387 bytes Audio/es_ES/whiskey.ambe | Bin 396 -> 396 bytes Audio/es_ES/x-ray.ambe | 6 ++++-- Audio/es_ES/yankee.ambe | Bin 405 -> 405 bytes Audio/es_ES/zero.ambe | Bin 414 -> 414 bytes Audio/es_ES/zulu.ambe | Bin 396 -> 396 bytes Audio/es_ES_2/0.ambe | Bin 414 -> 0 bytes Audio/es_ES_2/1.ambe | Bin 351 -> 0 bytes Audio/es_ES_2/2.ambe | Bin 378 -> 0 bytes Audio/es_ES_2/3.ambe | Bin 306 -> 0 bytes Audio/es_ES_2/4.ambe | Bin 369 -> 0 bytes Audio/es_ES_2/5.ambe | Bin 342 -> 0 bytes Audio/es_ES_2/6.ambe | Bin 405 -> 0 bytes Audio/es_ES_2/7.ambe | 6 ------ Audio/es_ES_2/8.ambe | Bin 306 -> 0 bytes Audio/es_ES_2/9.ambe | Bin 369 -> 0 bytes Audio/es_ES_2/alfa.ambe | Bin 306 -> 0 bytes Audio/es_ES_2/bravo.ambe | Bin 315 -> 0 bytes Audio/es_ES_2/busy.ambe | Bin 414 -> 0 bytes Audio/es_ES_2/charlie.ambe | 6 ------ Audio/es_ES_2/delta.ambe | 6 ------ Audio/es_ES_2/echo.ambe | 2 -- Audio/es_ES_2/eight.ambe | Bin 306 -> 0 bytes Audio/es_ES_2/five.ambe | Bin 342 -> 0 bytes Audio/es_ES_2/four.ambe | Bin 369 -> 0 bytes Audio/es_ES_2/foxtrot.ambe | Bin 423 -> 0 bytes Audio/es_ES_2/freedmr.ambe | Bin 855 -> 0 bytes Audio/es_ES_2/gateway.ambe | Bin 495 -> 0 bytes Audio/es_ES_2/golf.ambe | Bin 378 -> 0 bytes Audio/es_ES_2/hotel.ambe | Bin 414 -> 0 bytes Audio/es_ES_2/india.ambe | 2 -- Audio/es_ES_2/juliet.ambe | Bin 450 -> 0 bytes Audio/es_ES_2/kilo.ambe | Bin 324 -> 0 bytes Audio/es_ES_2/lima.ambe | Bin 333 -> 0 bytes Audio/es_ES_2/linked-to.ambe | Bin 594 -> 0 bytes Audio/es_ES_2/mike.ambe | Bin 459 -> 0 bytes Audio/es_ES_2/nine.ambe | 5 ----- Audio/es_ES_2/not-linked.ambe | Bin 576 -> 0 bytes Audio/es_ES_2/november.ambe | Bin 459 -> 0 bytes Audio/es_ES_2/one.ambe | Bin 351 -> 0 bytes Audio/es_ES_2/oscar.ambe | Bin 369 -> 0 bytes Audio/es_ES_2/papa.ambe | Bin 324 -> 0 bytes Audio/es_ES_2/quebec.ambe | Bin 378 -> 0 bytes Audio/es_ES_2/repeater.ambe | Bin 522 -> 0 bytes Audio/es_ES_2/romeo.ambe | Bin 486 -> 0 bytes Audio/es_ES_2/seven.ambe | Bin 387 -> 0 bytes Audio/es_ES_2/sierra.ambe | Bin 441 -> 0 bytes Audio/es_ES_2/six.ambe | 1 - Audio/es_ES_2/tango.ambe | Bin 369 -> 0 bytes Audio/es_ES_2/this-is.ambe | Bin 477 -> 0 bytes Audio/es_ES_2/three.ambe | Bin 306 -> 0 bytes Audio/es_ES_2/two.ambe | Bin 378 -> 0 bytes Audio/es_ES_2/uniform.ambe | 4 ---- Audio/es_ES_2/victor.ambe | Bin 387 -> 0 bytes Audio/es_ES_2/whiskey.ambe | Bin 396 -> 0 bytes Audio/es_ES_2/x-ray.ambe | 4 ---- Audio/es_ES_2/yankee.ambe | 3 --- Audio/es_ES_2/zero.ambe | Bin 414 -> 0 bytes Audio/es_ES_2/zulu.ambe | Bin 396 -> 0 bytes 96 files changed, 8 insertions(+), 44 deletions(-) delete mode 100644 Audio/es_ES_2/0.ambe delete mode 100644 Audio/es_ES_2/1.ambe delete mode 100644 Audio/es_ES_2/2.ambe delete mode 100644 Audio/es_ES_2/3.ambe delete mode 100644 Audio/es_ES_2/4.ambe delete mode 100644 Audio/es_ES_2/5.ambe delete mode 100644 Audio/es_ES_2/6.ambe delete mode 100644 Audio/es_ES_2/7.ambe delete mode 100644 Audio/es_ES_2/8.ambe delete mode 100644 Audio/es_ES_2/9.ambe delete mode 100644 Audio/es_ES_2/alfa.ambe delete mode 100644 Audio/es_ES_2/bravo.ambe delete mode 100644 Audio/es_ES_2/busy.ambe delete mode 100644 Audio/es_ES_2/charlie.ambe delete mode 100644 Audio/es_ES_2/delta.ambe delete mode 100644 Audio/es_ES_2/echo.ambe delete mode 100644 Audio/es_ES_2/eight.ambe delete mode 100644 Audio/es_ES_2/five.ambe delete mode 100644 Audio/es_ES_2/four.ambe delete mode 100644 Audio/es_ES_2/foxtrot.ambe delete mode 100644 Audio/es_ES_2/freedmr.ambe delete mode 100644 Audio/es_ES_2/gateway.ambe delete mode 100644 Audio/es_ES_2/golf.ambe delete mode 100644 Audio/es_ES_2/hotel.ambe delete mode 100644 Audio/es_ES_2/india.ambe delete mode 100644 Audio/es_ES_2/juliet.ambe delete mode 100644 Audio/es_ES_2/kilo.ambe delete mode 100644 Audio/es_ES_2/lima.ambe delete mode 100644 Audio/es_ES_2/linked-to.ambe delete mode 100644 Audio/es_ES_2/mike.ambe delete mode 100644 Audio/es_ES_2/nine.ambe delete mode 100644 Audio/es_ES_2/not-linked.ambe delete mode 100644 Audio/es_ES_2/november.ambe delete mode 100644 Audio/es_ES_2/one.ambe delete mode 100644 Audio/es_ES_2/oscar.ambe delete mode 100644 Audio/es_ES_2/papa.ambe delete mode 100644 Audio/es_ES_2/quebec.ambe delete mode 100644 Audio/es_ES_2/repeater.ambe delete mode 100644 Audio/es_ES_2/romeo.ambe delete mode 100644 Audio/es_ES_2/seven.ambe delete mode 100644 Audio/es_ES_2/sierra.ambe delete mode 100644 Audio/es_ES_2/six.ambe delete mode 100644 Audio/es_ES_2/tango.ambe delete mode 100644 Audio/es_ES_2/this-is.ambe delete mode 100644 Audio/es_ES_2/three.ambe delete mode 100644 Audio/es_ES_2/two.ambe delete mode 100644 Audio/es_ES_2/uniform.ambe delete mode 100644 Audio/es_ES_2/victor.ambe delete mode 100644 Audio/es_ES_2/whiskey.ambe delete mode 100644 Audio/es_ES_2/x-ray.ambe delete mode 100644 Audio/es_ES_2/yankee.ambe delete mode 100644 Audio/es_ES_2/zero.ambe delete mode 100644 Audio/es_ES_2/zulu.ambe diff --git a/Audio/es_ES/alfa.ambe b/Audio/es_ES/alfa.ambe index b5ac3ff47f219c4366588dc45876b4163d00c230..e80b78ea3d6e530944e4a8cc5ef089beeb794f47 100644 GIT binary patch literal 306 zcmV-20nPsQsKpj>a80N?rrUy0Q4W}{m)E<;GG=j4nho~2qF;=c)Cs|Debq zKVTwlzPVS8$p|qAK*&hdDWO-3XA+#`O{c+OuR{me4qWGD5&kt9yiK&ljSegsA(2vxA&pHOPzob@#-ZW z&q{%T4iOi(NUSR0Yi8NmMmw10{t^K(U-w%H1Mp?kSl`1OIpxS~hI zxRdw@v+1NK&mQ0>ok(9l-0WhF@rh0?JJia-U1OAdEiPK?|Hcj3XyGg>`L7TTA}sTA z^_u(f4kdl)XcYSV3?BI`iwzV0#kmV69NjDQ`lrzQi7ebJ$NluN?W$`0NZIUpwJIqX z>Mh5M4%L@8OpXoa<7Saj4qMqM&k1Z#H}`q!D6B1SY*n__Q^6)enCas`x{|?Dbj0hp E-9YA{>;M1& diff --git a/Audio/es_ES/bravo.ambe b/Audio/es_ES/bravo.ambe index cb4baacd9c848647f05f5a8dffcc71a26f319052..9127f90a2a1664d32a75cffecb99df0f2a8b7627 100644 GIT binary patch literal 315 zcmV-B0mS~c5v4_Rku0X;(`Us4a&w%$w$Vq&15`Af>wze8;!;6A$yhc#2x%jUnew3I zZdh$VvtPAnKu#NFR2f_W>D_(6D`^6Z36XvX<$3|0*>b}SDR(^w-1m7(o(Xka1<-h# zz_(_bZ9Cr*Fdl48Wp7K2ZhhZPK-fq#xP*j_HWRxcmWTnxKN=CZ22J{I7$#Rj=tFMa zW4#8iV%uU&yHSc1oH6MYWhac~JycmmYdS&Ix-a`C?K${&8H(ly7UEb@ NV)II{qgKFg?7ta?h_V0x literal 315 zcmV-B0mS~)9D-K9hAE~zqE5ngG0yRMtJ6itabppg$&h?r!U07Yr`6*g3P~ZUox-r@ zE*MH8|GV+vpbmThP`BKPY0z22Ob>-6)sbrm=XnL4ykf&lX%$%m*q^-`5=|g|C7ckv zRQf`nNIBi=Ffg_$0}OAe&bgB>1F9Z%+{h4)`gGr99EhonD^hj-WNVztooW|m>_$qO zjlC*k7p(zk{Pk&k+%@S^VZ%o$9aJ9yC>lbn(_IyRE-X&0nBaS_NEj$dtO3VIAs-1^ zF}sNN)$={!UPp{$7n_6%#YOV`K=31tNSQ4T;)7lX_&e)LEx@RZcSRk~O$*lmj!F1< znJM9t=-^JLNd0KM*lY1xdwuvVndT?~xR`v&EZ){@6`P$dyJ`ExCGogtS;&C}Fp7*( N?z1ZQgF=j}ta39gmXrVh diff --git a/Audio/es_ES/busy.ambe b/Audio/es_ES/busy.ambe index 3760c55b43aeac9e3a8b1a969434e9763d15fc27..40d93c5925ec1280848941a5237a5cc661806b66 100644 GIT binary patch literal 414 zcmV;P0b%~PN$yPmpugzvfR^VFLP20a%VPO`jM%Sgf($p08zP<|2A4%OuSf9IMRDzm zMw$c{k$k;r`9B3=BA`2U{{?A96|WgBRxOVkO-w0Pz;48QS;YvzW(t?XpE}T$MK*NB z@T2+WpMT8oER#D-COfMxD9>R!YIi<^YREtH1#VX%iGfWE;*l-}M9<}8?Da2LJ}7>2 zyV-!JNcAsEL=s)yhg|J#i2)tX#Bf5+ZOC>;MMs=5-8rJW>v~ue5W7BOpW6Zd=px@W z1CDi_{>L!R1!0J1h^>MG?F3Y)BZ>NhX$K|7$Nv37%@|Qlc4^b~CTD3sF4Z%Z1kCG9 z&@b{9;gFADTpt;f`%;ce_^gt75?FPlzlR%D`5z^NS9tw*K2VJ z$ywL|;yUbboET`WEl&S}}x#vF%q3;%DRNGvUl_)h&StuEmn4Q&az4~azV z4~bVhx(w@N=xDkHALfH|a>(G{EpD~taaQ6XoAOSC#B)^B6R*Ktm&P+?;Ub^0j)cc? I5O1yJBg~-03jhEB literal 414 zcmV;P0b%}?OXg4m5U>Y#rh3K{AyVTfBU1ZcuGqbAmM#LB9YVZ`2fN8d?P9XJqjf|M zV7x}8to4bAt@gaila{zTf{5jGzhTai#I5qp>+;8 zo$Hx}`#Y?-*z>n+0z2=*g0QE*ZdG{4tOWO?MNCy<&FO*5I-M#Y1I?{tC}oK_UN2Z2 z8<|WeJBLXtCm-3|PY}!B-9z`Z#9)l_!S!WMkYn#L?;D_-i)vUE5W7EPpW6ZL>L$rB z0m!+D^9wY}AZO@{jiF9viDz)mhe@)-4MQd7%a;AZfqW5cFz<8uChrMc2+>_OKma?$ zHz}u7>0GD19(-N!`nc*B84S^3ppCnN3PxJCKLv>P!Ly}EmOd2d^WnkuOtCw2oon%k zNnQ9x=H4W^{1^)BXbs?)jzw@=stbVNuGCNP3;S)PpyWhNeJa0i@8qf0#Ow{7N{b52 z&k5I9vTDByuGW?idxN7gWwSd?{^C^s<7d8 IK;@|VzbpUD5C8xG diff --git a/Audio/es_ES/charlie.ambe b/Audio/es_ES/charlie.ambe index ffca76aee653e039e2bdc1541226bc63df8adfcb..2424d5a03be6dd286dc5e483ecb030d9eea402ae 100644 GIT binary patch literal 306 zcmV-20nPsRsmBFUMQqs#)VjwfRZ60K=mmm~nfut^^MAd8+s0$}wnnS= zMeiG$(fRrjnK$b`(!LNm1dCDnN)*qcg{(G5?@m>yeZa<>A*&;|o+r_49CO-X8~!7V zBDxXZB^T@_jJtw&%v?5}E#>99AdOEm4Bx575H|U4(SV!$j-qCo3gz^rZHOp12WYfN z;)}p*X_(J%(AQ?Gig0d}_9A za+G@^e92CeSW}XaBxXcd-vglZ1t>Y3d+8yvX!v7{3JTv%^DKO8oY^kwO4S~bD77nodY3Q1>%2%1mtS|N^Bd>Wf<{#!x(R|_}o^j=`WCRu*=3ZX_KEjMuZ;SY^oR6rks E%egg_@Bjb+ literal 306 zcmV-20nPr-ABAvMis-(%lECLoQD~s<7|+$AFd#HtmEWR{yZOG~<8Qsjz2*Vl`V)JY z0joQjzp%fxwG-_+^1Apr3r8`y3^2;76}n`EjfIB&{ho?sH*=a&oAe%lRflbJI5-pp8 ER|h4bOaK4? diff --git a/Audio/es_ES/delta.ambe b/Audio/es_ES/delta.ambe index c764dc0e4a49fe5405147e245d68636c9af46cfe..f61a3a027446778c2062032ab5cf2e602420e090 100644 GIT binary patch literal 324 zcmV-K0lWV9s^^TZqN0j8~{9XYnrRFRpjHG1|r=U@*V}u5T4R zo{z;qdtff3_9S<7lPYNn;^F#O!TvM~t=2?tD#(Z%!-ZrJ1%T71k)`vQ1Ww)=(qCE` z&ZybD>~SwUUCxSzEsl>n4o!5-N0grlFVYPMfbWC>{T{9eBmsbOa71q)r~S-?JkWNfebufUfnI)E0HZ- WJ6Xzub_1BH1-`W)r%_eHKeK_r+n1pL literal 324 zcmV-K0lWUbQRR_5jxS*`1iJrdA~?7YBOBtUCIoSlw3iE!ZHCLP2tcAgg*u0jsoV7v zOTbP%lXbzSehGqYu#Kx85rqQm7}LwTdM-s$$VvtJ;FGNu0*VY0?%Y?M%R-(?DV)s~ zAmc^PZ$-;mq~zTrnj^u_MDjtLRp zGDd{}A0#g4o=7*en{F)&;>osHMfRLPiZ%r5ZVZg^jp!~gC=?qnvEtqaK);(6$6s0* z&Zya|%wbPkIqHbc>5f8OE)HJm@6=n&OO_1QwmXv>wYfa3Nt->h` z{|b`c;o<749{niP`M~Af&p*y9)#&rZ_^C+#NV@!Nkxf22uT81a&A{~E7`+U>%T*;A WxATJ4f?DuAE7pbpg$77c*Gg*Ob5GdhnyEr`20+-Yyag~HIJs}QYXOaRIa$a_?PQ>>>6jUc#UTXKC{tlh LmE<=!z+}AhVD@^N literal 261 zcmV+g0s8*noq$Dp0R1h!U8T<`Kxa7;YyGl?kz+O#bwg15UEPb{F0dPR|3y2^__{l1 z6Q~X_?%5KmjYaQ&CfPlw_WxkKD{9A5(7&lcs!owbETiaehcD%Sc78OvmGSnYLsEN| zWKqE9fn)(WlyY~$=Ac0#KgJMN`u3^!uiulXWo}s*+^Maos$+X^2^NekN1L%uOAis6 z#z%!tPNOJcuN%|NKRM?Hl!T~oyRaDbWwW0G^-!2y>jt8;jd?XtZrKEq!;M=NQhAFH zf8oJsRqY!3D_NWcE&h5;jtFVhDoqJwSlnK3!C0SX>!2wEFc%SeN L)Swp==&<}Qnq+_Q diff --git a/Audio/es_ES/eight.ambe b/Audio/es_ES/eight.ambe index b60c20f360c75f58217efae68fdde8c9f182dd15..3b76fe290af91245183b717a678cbef3147bca85 100644 GIT binary patch literal 306 zcmV-20nPr>cE>_O1+1!((?{h*K@;5lmKbFk>xj9+aMW){eMzh-Ys*VoH4{qUg-1-* zV(S1s^t)`!)+D|}lBH!w%(w%JZy=*4p(W)J`AsM)#%xH3BIqfnM+9@dfYE`s=R_`u z)yYvNnK*M6-w6Y#YQ{rjUl^o|y(54Es=e#^H9{PqJf|5Tw*k)&{A+LW5&3R~?K2t!HGAqy?N-6)$=M2v#xQ5Md3H0IF^o%gFa6Eq=s2TAQYEbP EV-DSpm;e9( literal 306 zcmV-20nPqO?%_9(t}!hp(E{aMP;V^;Vj5RCiK)5fL*fWA4-JUvyN3@>5q2!7!H0|z z28{uGy@q@b-XNGE((NV33@CN{Y(~jW<>dW!xeqMF%Cvw3VvA3sLru5%9n*lDBvytT z5nWPJy8>qqPlUpZhsQ=y4~(HEuP~z_*^T?}Btk9Xc+2qPUL4`8p#h=Vfw*qti8`t4 zNCTZP3n41gnuax;2VOlJr|y9tC-)e}NJF^028T^*l`U6_m*K$GD33Zs{A;OIxOvS? zHlGA}1!eRBOUB{3waOsG6KLS@%7?0Drw1(Wu>O%UY1c4$^umm>=@W!-3T?8AiG%P6 zu5O&c&w-Svd&w)09ym{D^&5(B>l|U|1qo`(qEaXCtu~LFF|AlKD(%g+sY&K#P#J9D E>+DgIk^lez diff --git a/Audio/es_ES/five.ambe b/Audio/es_ES/five.ambe index 86c16d4cfcb56a8d674d9206653cf8f52f9f4318..bf8122b99f62f00163b1a95d2ed673966e08be96 100644 GIT binary patch literal 342 zcmV-c0jd7{ScExXR9u~7AL6w1ooQ4&V0%7ogfX?D0fG0y* zz?cWBK-NJPuwYQez(CYub@vcLl9eIJPYGIqUT@Q1LQii3ZchpLMKpm)l<=>} zIahizNDb>|%Rh{X0XXdnE_$o4Sxb~vUk`bsh7IqHsV)yIcPp=7yDdAR3Qwd+B-gb& zi)Vydl%SsF2)RU*dc~96fjO#ZQ(kOR9#P_UO9Tw+)#Q*l&TrLSY%RR#I{!@OP7WO0 o|18RBq;7>=^#Ll*FMu}UodJ+K-VLB2;GRT~Y3WIfB#^wy_|qSyasU7T literal 342 zcmV-c0jd7Iro=T;KG?TKjHSjGP#v4XL!Y$dH*zTGl~k$czlwgGJxTVdmY{d{#dY^I zuzTS}jYZD9Nr7A82Z}}fj2?ux!T|eK8TruF)~5vB7|YIS;PIej{iVFIk#XsK%!|DX zp-Uv{AZD$*{NX!5^#E1g+_g@>BDZB%&y+++LK2lkNBxCBNk7$*ennR%tZ19bH5a&HWfvQ4Gpx7mZw)gAW91eMHj~$EDmnmWf(;XN#u*q z3l-8LM1kve%Rh{X0XXeUNIQv%or~NBTPZ(>%o%@8ZFy`Y)2QOZJ!N^P0E3!36H^gi z$p?b6{b*JpZu=zilFv>wKq!t$HOCYwgC6d;@G@%@fU3+*0XibIqfa z`Vu6p2`BtP6!%wC=|Bv=QmGZ3V)!Z~vupz<3_{#WRAme78Ig2Vg;-`LU?kVez`S2T zJ`)s)-t~bXcO^--ukFTzb2czor2FcTq4BE}I{6uYSUZY|znPp-N*O5%i~+JV5=|^m zdyz&0_SGJ=4k)p&+L5jYk7S}++24E&u^e#Yh9g)IJyqaP|OYJ zBsr)q&l2hi%LKO~r*U?|KjNpPF@;kV;4H_t)AfUJFb&{EA?EGGYXDFGV%V4JpfW%m PncL9BiN`cRcR$N6?ZvOH literal 369 zcmV-%0gnFEaN}Vxi>;O%Y&rJu5?!bT4d{k~l|k%4FRQ>q#bwR-<~?(H20gr#J%QgN ze?(f;{5R(HLpvh}cBp*PE~5-L3lE)Q`pDBPQ#(ZYPc1@F8buFB>bDJCm=K9BbBWtP z`pzb-2Bn;<@e|iq&15S0j;S3`WZrHf+Iffa$VS+0a!2FnQCYw~k119IeBsX>OT7aS zi_eu%?Z<-?6Lk%@>%5iZcT`>6r*rPKrqRy5ZuOO4cpHxC|B0M)P9F^ls_pW4-bpA6 zJNgHbGC>-$N($MM#tPqPr5$6tq2z_NEYo~dy%IHuwOh}ACyh2pb!2M&E^x4on$J92 zi%Ri}P#~l2DvmAR=q3d#lrHXj<)khFL!}sy3w^Xs6wu~si!W}lhYeNCc-jfgIcQBJ z4aA&Yw2<~dy$++>&xUgoXj z=4L?48gRlLac~$y*c(Cd4N?*v1i5-AEJwKLnlb1uegI7D<*D(m-GXyQo>wE7DB^>y zkvXw|j)Uc5%8qV`RO&6EO~X(Y?2}xbpK*abaeYI_XO1MJ zasyshSH=C z@LxfUBLj?wAHZB!jTQvCrYgTh>hgf^&GBsidng}`^e3G^;I z*ge2u)df_@zpH+PA=XW&xi|bf#3!|x1Lq}%D&T~R%jZ)J1F1N?uJxJF)N`yz8qBK$ z0iy6&FDZq0{;3WEzaA-nzxeQMtGZax4{E-j0$X58 zhCM-xgU7&vKk#DFum8Y3W(=7D;@^EdiL@V!1uwrgfv~6?y8@KXZ4SBjIjuQ#{z{Hz zh-%+mb&F+uQYVHGZHPkIElq>*b}!jOS z@hA<`mb9myu!2>4j%k23=EugjtC?S>Gr&rO`c$Bf*tqsVK!@be_~2|b<^L~oCKtPL RYhipg`lQ9&-DMtBCpSKG)5-t< diff --git a/Audio/es_ES/freedmr.ambe b/Audio/es_ES/freedmr.ambe index bb9c7fe83ddd886fff59c5d6ce52a83fd0a3a02c..be242e9a37df92a1c05c5f4f9bf35db9884bb472 100644 GIT binary patch literal 855 zcmV-d1E~CfC4y4~Pj9_Rib>>0Lv9SSiP|}VLk9%?mNS9erZr>q$g>ROzomDiAf&^l zu>9r~4j4^qK*7@D5SBYDPOr@4!a{&Tl&%A;w1)&N#VJc^9XQ8O(KM?4qb@1MQkF-X zxswe(<#s*3gLori&K>(~tksLhMwwXgjA{Br0YR)r{j6o8=3@toWYsN-S$I1fZ3r&s zX@$cpHOm?ptADi}^Aq0$MaXi9o`qobV^y&u1;n>d_d`~)Wl+(AVAVlqkPuLUry!># zLV|3Bl1M~2SJ|K~OpZ~Duiok{ZMd`Rr~r$v-s&xHlc)fT zuiok{ZC=x$E`#}GgiU`QTP0G6WkMJ zvk^T)7$KP$J3&V~FJ5A-MEA`Jep+2}rF`>FFghI`aFUBhK~Y)47DmW=3e(LhlR*RS z7LS&5E3zk#@TB7rb9wb|IWF#tSG_N|ORTVC*3K0>y)Da*au*)=EdFSt(+@#mg-`ZA zlHCrwI=2m#4m;C@B+Cg3fNFW0^s_v=9MEoe-xVOagMQgYr0fv*&UstRK0=b(-`!an zyl7|QmrVYrU9TuDgjgvnBP`5m!uLNyagbcTEaIYLlrbASf<3nO1C5`)41q5lZEHS9E)Q9lGQ?f+r7(if$iz1{||iMRFi^`{p89qEcb z_vXbC_Loaz0rmBTHvfCi*&pfTrDUi=6fcG7=B5VfWn~Zc!nwgmiBkr21GC$tW6o^S zFumcZ;0KR&MifV6{#*H~G!5U!BJCK{ipe_(K}D!S-|mmL%C7^tL-Xaz5%+NzOKmFe zIYC3~agA6wjoonp_ZQg!M~<(Il1U`7U{Tp`MFhJPqd-#HDG(B_CXz!#+FcL=uOxv% zV9IF#6NqFv6rIoHj0R2Z&)%x3i<_v-?a$t-sf(Ma%*AK*~uM<4GnkD8$xhcbq3>9M+M@ zZ%J?h1E$E6hDCc%WyHh{K!FQeDk*Q?0mTz>4RQk;%dT?0zkXJBL7l&6Va8uaMq~b+ zF?YjE5N8hC)W@s?V(VLV>F}`W7dNgFE6wFvEbB9sM|a>tBW&Wg84t5}xXGiX&PzqH5q((>GwNwaWK=(E4nBZJM=TYYu%b0{%1I077 zMrWI)L|PC8 zzTH^{cqg2h|4Bza8F(Vf?Bl_~TYNh-j6YMZuwH3D68eE)r5PWlR3gmY&Y#RKmqa73 z-jABE4VGe!{-kG-r+xG(J<0|{7yWDgXw2L#pbi-wnJDe(zDE*!DEJSB*$dR+1u3w8 zw3?1DcDD$#YFV3=uusWI(hgs_*k^qMRn&PY4zP?FNEsRk2^D@@p$9J* zIfX%HCY^*e#|pP&bY#qcC-z_AC^`_hImc@(lTR;kl-#GXBJU}&ou55VVHDdw)BZv( zB;EwPI}qL`a+YFd{XPf4=XMB!7LR!*r_G~ndk57sAJe@ccR>)P2V;;)z>yvTr3XWh zU4+tDQRHDouyjzt=MjYma-uoVf=M9a1U|Dc5LwPdy=#F&(SnAjW6OqNj^J5sTzC9f zn!09eu8?4h3Vt5g&U^`MaY%u1i`x~IXbugMG4vJrk690VgAEMUF~>Vg1TeQY{54-H zS|t$nX8d&tC`k-F@zSx~=Y7UFPwWsQ5xrW|1DMEAv(Lb4v;}&cQU6OU8j>S1*ZnAY z2?&4y6V>T_D?4A=1cKt)PiA%qu3JR$g9?wO8IOBs;ITZu@jSU-2lZHN@;ZIX8WPkY z$isk6=?XLD1n%SZY?&(^YUV@DqkZit7b)E12PYW0N)sPlBThCM?{D)CZ8(qn8_#dy z9BUt~?>p{qz)D$3%FGJiY{m>|I^6nbjcKGZ?n_f@7@7~-P_1nGSJ>i)5_I2t`4O3d l;xcfx>D#ZmlEOk#qpjLwaMaAL09l?2X?wE&1)pz) zKZONi<`GPB(hRpIaHK#;W8y!d4;()jJqx=`^GgeUG@NfTBJU}&ou55TK``Aq^ZKeT zC=wH@9x&X@cALy#+gb(6;kM{TaLainsfDM@GeeOxf0^?~^9?YiL}&h`09$eZg=S^k zl~5WK7lJ@xnp{u;>lL9vQ0#pW0*PdV1bW$gK$*rQ-EO69al#5`1B>EA%*@?AvT@j4 z{P>PI;#g#hY&iaO20RT86HcdEOPbwP2yQ9VUl2t#PkSqThvVd$<3WE91T@=zxb;_V z9wZc+F1WP;8B1Zl*|y=;OIhGPE$gi_S#f^VCY;Qex5Eq$z(-z~@jFLoKD0&=zuEY` z$xOrp72Bn3uXj701)!+1OQJdqh&)1>gN_R&9jP5*h_SdjaX6hjMZZ|6F#0)<7*@PV zhy#pD&uvxh1a4<`D*0&{f{u>`V;jjRIge0lk1IHxNLTZfYmT-V>uvYurEpJwd#Nhp z(96?p=PK%L#G;V_3rGsvZ^GoDavXkcsSlTsou<#_-A diff --git a/Audio/es_ES/golf.ambe b/Audio/es_ES/golf.ambe index 2587912892caab113a86ce7d110666e6f50f6a45..42f1d3ff607ee76b9b70bb4fa7773d80d63a6739 100644 GIT binary patch literal 378 zcmV-=0fqjx$)EueDyggU)SBl-Q(kI9>ALDAv<8Xa39M1ED1mOn>k^69S@N`+EA~He7Hi{nk0F$1peM Yd}UNp1+|D5*=e5l;N*fq5L~fmaIsOgKmY&$ literal 378 zcmV-=0fqjR2kaWeVEbV6=PIBDayVc@i}#7eWpr^#jtP|epd}Vq=-k(8em<(4Rlk() z4o_}^pS#O(3t0$WwBp6v;W92wDtY%D)U$tX;tMS!pBV8?%Jz%(ub%PfbaME7{^`4F zphySk2A-(pBA5k2>Pl9a@qn!dVEaV1s7W<1lxF{8;h5u7cS=y$Sw)%Sg4iYoj{rN4 z_ghcyZX;$Yi?@T0Fm4lNZ<*4D-4zT6BU9h=r6mkGKW12nvFjF4Id$B-^+%v(@a#gH^M2XKbkuNVaNk+W<1~3k YJgLO+O4yn^+2!6Z_R^FcUDL3 z3q?7anTz6g_6m1Tbh0VV;D#A30)nI$poPU5ECR#TMYXcEY)O1n<}Zh75ml7OI!yhQLr^uIT1C5o%RdAJ^+q&7`d|C~ zo?DY-i#DKrZ2(j--b#6~`17(buA2 IU@pN`6~OJdxc~qF literal 414 zcmV;P0b%~{M5Pu!=J&HSc=@R;G;5*TXYw45SZ7cfqRF+(fc5l z!FXy4PxYgg+o2N;l1bBbj#8}a8qE&kVb#b(w|(qwk2HCR<7LU=j9o@-WkQ&9+F$?O zm=3TVVvT7VoXs*O!$z1@bHDLlh0+w+AXl%?kM~&=+5%LnsjI^sRhmaZzr=2a#U|?j zWuN?xqg^z-Av=$y3VZK6R1X8I!7ERT2viRdtMNJy+z47wiJP*A)ecY9OD@o?^!b2o z)hG|XMq>ty4fAYOz9b;{)F|6&2%xCEB4K&|ZFKG@9%NEEuW1+HrW>8-JK0Jbkn7qt zGNw@q4$|DOgW&TuYe|GGFX`5`Qw+fI;br-aHvII9Z^PN%{8UU2%hH5N#}z^pu{Sl;IHGkYNHhko{YK_T I0tgUFJ)+df&;S4c diff --git a/Audio/es_ES/india.ambe b/Audio/es_ES/india.ambe index c510e682a38ef75d5f61c8768d744f88c846eca9..647db0aebf194e1f20ab067aa9bb553a357e722e 100644 GIT binary patch literal 360 zcmV-u0hj*xz4iG~$Zm@d}wP{O8Ku>Awf^T^~DIO8{+mVANCr|Aa_dFFb=X`^Eqkq#I; zaQ9ba7_M1OXmzls_d@&}&`fmh5>|_aYR^7G;Jxe1JzMTxMV(?D7jSFNZdRW`3;|Ka zbu3`$76`|ql~PDd$Yl&otEE9mYMo?xdc0bw3ip!h!ETX+aW0~=z+~&WE{ICsvJ}P5 zCu-^`{0>-I0pgZ1ZSElIZCuyWz2am+yDO)Ima@QM2Z$gjV}*dg2L#w8Yhln1rVw<5 GAX_Cly{O*+ literal 360 zcmV-u0hj)oOXYMx3K_!xj9%kXMA1m?CqX2M3jsyFK4pk$#A9?m4C2`&$6eZ}`2-8d zQKKc6%#DbN5OC%IcI^CwPTdoyWOuxyB?&eFm1lL_gi;C=RhdUXjKMj!l~t=}K#rFw z$F@X?WI?XrEur>6oD&j+g^w~eAgBP5t`hW2e?p#M70GURtu9MqV<4y}M@boYaX~|x z5OgSiN^l`ChS;;lHEB;uM5BSDLaSXqZW{Fw6VZbhqD`aE>um#~f5cs)fun1Y*-Bg} zG@oA}*rE?zN`LyNb4zqu@-BXeo>or*E{i^5s@3aHaewMsL)*F?AG|NBEmE5Bh+Pxm zaVjK@x=6`Qu@X%Nj-lL-CTRY;`zz@&aTYRpKx_;`U0 zD@e=>y2q3e!D6y8D$3*rr5uB|%i{tslPhD7@z%g4PPAa{DnU((3kXT$C#jNN<1lv1 G#5(EqBd0L{ diff --git a/Audio/es_ES/juliet.ambe b/Audio/es_ES/juliet.ambe index ebb4a34229b2be4edfeac499a9f454a3b7dd62c9..3d049bdf4610dc5ddbcffe58a4c6959713ff569a 100644 GIT binary patch literal 450 zcmV;z0X_cm0_O>GZD=A9#GA)fQgvwC32fbm19bwA2@&Guf@5=A!AEnGgvDb}B1TiG zw%dXOH5}=wvpqn4iNL!cwp3e1Jf|q=ZL?K)Rx4cyriIuVD@kuH`WjUx+*}+g^p5sP zaFr-qc%r&Bxi9oZnl4?X-Ie1f6N@BI?kiX}aaQ6b6WbNF2LwgqM{~vLK$vO-fdF&G z(3F|LH-Q0Dl%=8XvJu^7BIl1dFxf=kOl8emq=4Q9tY{a|?!at24F^yo^FLv}P`m@E78;G=BNR)WX!Jp;JQ6D&tqYtHW*M~IHz&I_I3rz0y6C2Zvqbq553hNo&D8IF ztf3icanvq{Y!bfp?{|ea8G^xsXU{~1S9-Lkl2z|jh7owc*M?N3v*1HV`vE9J^}~iE sWTfYB?S8cKoiWSpr|;d9f`4F5xI2BM_@W^)4Ec$(T-}ENPzU{5aboY)@c;k- literal 450 zcmV;z0X_cs=f!uVuj8et@IQwWV8JC?C5>##J7zEwCyLi8q7xz;Q9_uM`hWv9d)k?^ zk>T0AbD?E@-3oOWtLwVcCe>eNdgJdUweti#G-+Fcju{Y|O$`o9oVwL~o*aBl)a%Zf zFd0lA8>GIsDMPRW-VZ&j*N{hVSItBz=!=YKGjir27yiA(FU%9QWjF8TR1YR1rbIQ3 zlvG_21BFF(+~qMVa#pKlV9vEml$0Z@E@AKAR>_}3=u0>Lhs5f42_ZK{yFcN2!C!Yk z-ut1y9jR|FE^4XDq6yy^cuig18)sMeD1vvGj88GWT`uxuU75u^G)-*1Rqo6TFGk!R zxIAO3_4{fx9GN^r`LyY6Hyf@ev(MHJqZ}@qA937(j!O`+08M83#fsRoNsDeB-hH{N zSmv6a)i#|QVtkCb+ zZ0%i*k>ml3^p*wb|f~w(!zKa#dQ%(MUlPx0Mwd$Zka5$Tr;nb_fBv)l!%?s|=qjhvMc=gzqmd}vS`I>7d znTC45w(n!RA$gdbhPUlIf1=25v=V}3FM$HN2f2|#HD3pV3oFT*HrEo>;H zRdD9BXbUNRj#1+iCwSm(Y?d(NqZufX2r0E62hfp7lU#9I(P)WmO!*2z<#*e_@Cv(2 z18zNZ9APTBX2n~Tq}`D@s!0P~C`27LD(q=3J|e;K#z>tENgQhuwmC?xElVkD5ak?h z;b>cYV%%S07?>`vLdhA)WE+SK`a-Tf|0SMY;UsW@Z0uC5P2vVn@_Dakx5|M)5IL`p W;k7Tu8~_a@|N}h literal 324 zcmV-K0lWU9&80Lppt-|Ypk3%$VISUvW79?b>J%>pX@|3f@?wV^J)ZZEf8igAf5ZKeXJ{O)=CXILTZ^U4f3O2cD-t;4G+hoTqT%j z!%bbbBG8vS1$N`Pqc7DOgI59@aRaLX>X#b; diff --git a/Audio/es_ES/lima.ambe b/Audio/es_ES/lima.ambe index 96375b4e4f28e02ff4794596df02ad6460e36072..e45aae6f933623e0053a10779e20a6b03736af53 100644 GIT binary patch literal 333 zcmV-T0kZz^ALS4_Zn5SqjP)BZxRKntK9kPa0>mU&Sg zVboS0a*HA|No>~O^(-JmK@G7uY^NMEViSL~N^HS>Ic^*Xo*ouu3%=*u6cu|!FrT&PfFJ=r-K@b+T)|{^ONXYB z4Nq^N`pK_VI%#8H_xP^zpU*0F0`sXV{iz%uLnr6B@t@|wX=7?jiiS;;#XziR9lz}b zBBle+4KJ9Lg&}Tnzd%Os4Oz-q6XQU)%!L@)jYfq5hqy%8le$KhCrjuVP>z)b);m?w zEf}7fa<3zDr{ta>G-yB}MdjJ>q$XHX0T-9tf}}xN87f%pH_}#R31 diff --git a/Audio/es_ES/linked-to.ambe b/Audio/es_ES/linked-to.ambe index bfe616db003097426240e09ddcbdb55a58e2f8ec..fb26360c4747b8a10089813c935fcecbeca6e099 100644 GIT binary patch literal 594 zcmV-Y0MB@~2X{WLmS83A^P z*N*PHNjM>8pNH6qn;w4yaPZ&l35Oqr2VmrLSz+dB&`d9-Af<2>>t&@ zM-4?lR}tnYz(hIGpo)-{%D_c?)i`0Vam!xqnyh*ATvyy<$C$%JG8l4?Vga~reToGrTJL3$&TlB|s=MBhDe zv(!Th!2|AQWrwZ^Hr!;uW)#+(P|a;e;YTN=jX=&jV$wihY^V$X5_c?Pb$W=L5|2bU zVNkF{gw;<)C}LERB+%DQbq`}f8m!DfnFd`aWeb#8Kow*RLT3!^i~*g?kJ^OoZ(eM~ z%a7WG?QdRe#AF^SNg$vQL>LBaOMyn@TuGd&fx=gIqU)QDtCGT3QoyOb+`XseRTON! gl5?qR#6TcVY@&$rEjnUOiD>Uid29?eA?azmgEwAV0Q8D$^)$X3TW4^r zj}GoP33^6jyU$pQ7aDnFR=S^Qi3fY*1SX0b9kK3h_A3qTAYlW#3X%+^z%;p!>07me zL*Y$`o0XzyqCnG`XhIb8ih}`@+3=}tQR{#2n2veZTsNKv=l;0i64VyUA|c+%oTpee z=>i4M|E-5=cbH}(+pu5b_dv`g^C=naWG_xb4Sz3ru*Ss?Y7AeV?)Cu1Q!sa*!7ZD`|7AFTu6GT||QQ7pkvVkJDM^K*CP)IQYheb!I!9)u;MBpSus6@m?5>qV&6}n|qQlAq{ zKs5OX#1uzS9t9HnAXHF~aUUlE`d|bBonjvb2hT860G(hA1}E$xL_wMD>72-G&sO9B z?dhDzYtL5X0E@5Q>Md`Qr~oETX~9H*NKK5$;HMW+z*k5{y0hQJI3lRdj^? gp6-#)rUQ3|+@UV^(}V&vhqVs<<~V=`MqMQ%x`i(hlEyLRx3CTv2vFuQaagY%2`Xd8B4Ih+Di{`O3F34t3JnEUy|hC8 zp-o;?5t-o`OO(SsV>>|GUpWOrckf?OnMmQ&$P%go@QoqidPro6Mn}%~4e^5nvtkjO zZ%`)MRI6qpuYoD#;~}^NP5UT)A~rLN0kOYu*AEQMfF?>Q$5-0*ZV9KU}y3YP?Rx(wTWK6#(g>j?28YicgkW;t`T zR}ZFZ9CwG3S|xui|7Z%>!872jKHn^-wYf&%Bm^s*iPdA18w{G3Si6XF1%8 zXY0qS*N^)1s5c1O+S$3-75SH_PKF1jS%bJisePtlg=n^qVeaMPa~ZwQU$ck!+=p5S zn(+yVp@3C>8Avm-_dwwWaIejU9fu*NWD~MGwx^$m<#uu@?e`IoG_Ap6hrJE|u9e0x zFihI#Re_7V15i!?)CWxNrBGrf&pc)vox*Shcqt!<^G3&IU?A+ykg%8K6Hp;kQU8Le B*l7R& literal 459 zcmV;+0W|)?4Te#0;sJXXolNw-1-SH;Nd(Q=nG+wEtIvV90b&7)&k&GKhKUwh&uf3KWhwHH)KtX%%hFW^FyvY*nGmQxHmuk&`i&&(0%48MowrFs*8nxY z?6C@-G|2!2j_B>6Z$=Q_JHVWA}IGJp;MHi zSLH>ihoTeol|s`t)rQLNc&jms@_|p|B~|#RdYQSS!%#No>8p*hH1B~3Z8?|o-^Z1? zW=PiSwuhaY0dT@li?1HO@?`Gr$CJZ209WK_GE)rOqSHY=t B+(`fc diff --git a/Audio/es_ES/nine.ambe b/Audio/es_ES/nine.ambe index cb53bd99fe8e47918af8efaa8cacc116d2460ce1..1f13d1e4b3e48588ea56e15d19d0df47062d22c4 100644 GIT binary patch literal 369 zcmV-%0gnE&q{L%Xb44c0k*3E5a$qt=%?Vd{y|F_u|Gi5>e)qb}gWtbtPiDr#9w5Rk zDn0|^w>Q-0wJ9kgqCAc1VkJ610fEOC;Pt0z8$txIX$ms(SSd!TrgWBiuWCR7b=UoZ z;1M4*VKSo*Vw_}cX9gkg1Ja3@UR5Rn!7}mOjZ&WibGPu$5J46BU{LaO3qDYBo+pd; zsuwC4G2H^s%{y`8{$s62%ZLSolLKMdM5VYaQx1b6sw0rech(wDbL(LryKv|vif=I_ z3H1nbG8`BwPgZ05hQ4vMeE)|)>&wjEp+&Spzzc@ zx(;Hg#@Y)MYTi#}-8FnfaCn(b9G^Oii{n_BO&z~}j_cK?P)xw>J+lDkl|W6xoGZm8 zl9WPiT--Q-rg4nSyOTn~e diff --git a/Audio/es_ES/not-linked.ambe b/Audio/es_ES/not-linked.ambe index 806c142f916d47260ab1f9b82e3839be0da0708c..ee2bf20bdd589961c3c3f070944628a8f947db3d 100644 GIT binary patch literal 576 zcmV-G0>Ay6XvI)qYAmzK)Vs$gR8c(1UBrs#1vNxWzbSo9z+?nyv9*#7ZGEE1nEN&_ zOlBq*lR}`{*=1y!;vn`ysfiv%UI z2#!tPCz2ph)`O+Yu@r$;n5+QYAHxOL0WQ?(5EVB-dH|D{VOYXYaCl&{w5Xg2Yc*K} zSKFGx0i@t4j1!b6FC(+^EEon!7uN)W#^A_aO*O?Pf~Dn*OMg*=V=Cfk&<`gu z;sJ!B9M}edK%-}bkW>s8YD1DCDDH$5$7&;%W&pn7R7f*5$429xOh~~|0r5T(g49@r zM@F-65o(#l4A(WxZQ@BKp=&{rOrmf+b1}Ua=Lhb$<`687`@uU zjK!BXooRQp`;l*NIYll-n1CM($!K3XM%W59xZ*iJeGvQy!Ky19uq8%6-aw}%D&cV( zLy>U0cRhhD7<^1D8qHdkEJ2%-$HKE8!+#c?Rt5j|U7}`@&>8g7wJyDH25IGF0I4~t zWT$DvfW3u(s3~n3!D0NTe7Y>dcGi89Kfxy?IU~n$b OWj0Kjrf&ioThisQE(@Lj literal 576 zcmV-G0>Ax-=%XVvNX+ckmfL_K5?|WL^tH>PB~m@yy1@+$ey%_%BTP#TZGEE1nA$cC z3}P@F|LS0#-DzM!F}oCHD>+(oV==fiM_3D6Kw}e$BXBAi2qGp|>N~J2)f*87cDPN` zI@DQFcv_6nOQfSe6b0$nxhe`KEC&Mv?ee8$UMv?QB+t;a04QXLMp4|LT7i&Yy(Z;O6PFh zZ#8_jKRtyGdh?`k+D$t2XknR~2f}*@_j)#)x<&Foe}W|SxY0BkxoX`lLV}E_$SGav zCZmI^NOc7{$ZKiwsjW0;TDnTbniV9Fom-0v@POFiEvIO@NVbUv1%a$tiwUBJuE7lP zEZbgr-L=G+h diff --git a/Audio/es_ES/november.ambe b/Audio/es_ES/november.ambe index c38dae37e7b482c94965dbdc51a79321ba85e761..081771c3e98bef7b6d564be6f35ea5a60425b4b0 100644 GIT binary patch literal 459 zcmV;+0W|*Ph~))vM-BN4*NNvvQZ-(yJd{1e8bCiGn4^1)vPdD7e*P;NK|8HxahS(* z4kah=jj0}N1W9251oWxl^Z`y+Cndus@yLxVG(Z93Z9~6QePkyE@&VV%`&)4+PqaJy z4Ei}%4Q0KBdrrE2Aua>7nLo^@ST_P&@X|+mkVqSHB*1?x0I&`j7$epuLrCd43qMvp z5NV;eALlPdUjxb27#dd$L;kfIYRGWfdNk^n!~X(jxkg8>;17VqXTv2?-4vD7Oab_ymdT3vnpJY!bBYNvM$h5S3? zBPi4cr_`7*or5g!9(AJJ|RFgFnAVn8S82b;hgM5B1z9262R@=%PvoxH@cA0 z$obL==uh^vm8kdW;o>TgMt4pOFQ%!x035l&@AV!q#DRe@+jVFT`Rbx9965+`S>ZNqrhI1?skyKUe~#a(4jOa5wn z*;#2cX<@nTzYI4yXD$Q$l|M_bOaWzoxzmHYbqfw=DC^R^0O2khMd$t^Qv@Ykdwf#V zS)ph$dxviVwL1YF*jhDcNBZC2Dnt~X2bQj@mp8@*+X7|otlQ*IW5*&_`rPq8zC*+! zcDn4uT)R}k1u?r<)KwNUxkIC+-4dV|P>o`6t6U4(TL7vSAG;1YCIbsZHYwgvB(X?riU!N;Ai5B~|(uB4~VsmGZky{8@$$P&RSy-CX^LbRZGjY(ZD(sV{P741ejsWW^#taG&3! zuos|WBpVs7S;BP3AV*>RjFrmQsga8Nrl}S)mj@D{353HsbMr!UeyCUgR$%r)RnRgJ zwvuV&i)H0g;bTIox${4u&ZTlx|zRWeEa^fA4M#y3)W+r$Il_Mj63Dd9IovxLPHB4Ac?t>E^8HDNF1K}Sd=r(Xa7 literal 351 zcmV-l0igciEu>^8&?9*j)fk~h1Y0yPo21yH14d2Ao58iofI$Fkyoslz+JGkl9?kFP znM&ki04h(>%ZgjXM`SKJ#N9XLUHHnG01Mu8_Yzdj-Ox;`5rjlG{pD0iLo=jCb^pRe zE_NV=W_OsRMK4zXwN-Myq(llbM$r{=nnjQl1R&leMyw!@&c-3C1A*KimV9{=i6PPL z2K8-EKNKlT%mDk!k!u8K5&PKAc}5-?N>YoT<-~yk_)X===5 z38}(Usr?-PWWb_hoASDX;go1oU7m zi%a^J0L9;Q5132)wgSPcCT!gg{XD}tE-Auyrw3@Nc{9I&%;Zp8YcD!s@sHsWRLWh~ x^NO(HW@3cxuKk}+;5BfAPt13nhQ}8$UAdG+orULdQ90|!A&$1@S5qIY^;0XlsZ9U? diff --git a/Audio/es_ES/oscar.ambe b/Audio/es_ES/oscar.ambe index fefcc1a0b0e98a5ac62a5fbc108cd24614cfefe2..829afef79dfa04b3d47819073f842dc094e33463 100644 GIT binary patch literal 369 zcmV-%0gnE&rRO7XLkCCtf`-RKabr<&-jSx|6hTlVW4{oZ8I9ZYyrO^w$q+}}$&TS( zaK9iygvI$YKt#I+MWP&Z3@#ejY zpMmoa=OBD3<%2)9YJ_GOo(Jm;q9WsAqYB5@#WFXR3DmR=02}4+T6~=}Ien}5dh~q@HTR-Dm z1FRwt&!G(Re{kAECC-(5iEK@%OWc{D8|w)k%rRKJTYc$e)cqpJ>3RwKDS6B#eV%E1 zn+f%h?XiE6JR_&=D?$_X@M-k-V9NhQgq+>Sr PgKNF=)}teEc(6wSKf|;0 literal 369 zcmV-%0gnEf_Vm$W-y7~wLn1VOSeMUU60zIOQtVDuSqN3?FJ!& zR;yGY%;9~e&_JDIM~Ylt&N)YlMq$t8PJpm-*=Piaq1K&nH`*&{&Th3H!D78l)9m$& zTg_MQ;Z=g?nD4KVO283{G4HPkf+K(Un=nKl#BDZZtRfS&`c&Y*Rk6$|3r^rHYZ zCQp=ztAoNI6!q?!{)up-qst_bVl*gcJD9Gk;Z(qTQhxU8y~4_gJ}PNa=&AJ8#!Iyy zC5+<4f}sfZdT{uz6oy?t?+!`K${f|8J?}1htp6F5mwWGG_W9`Cp|&mkELn)`c$TFd z-zkyYg|++HJLxTzt~u0^VknId%*l2_J=GrYp%9n_i8;$Z diff --git a/Audio/es_ES/papa.ambe b/Audio/es_ES/papa.ambe index 83597deb63cefb502b8f1aaf1a456129ffceccc9..214819703afa8113c923ddadd8d7ab95f2efcaaa 100644 GIT binary patch literal 324 zcmV-K0lWSlp2B8!Oe-AEe%z&EF#*hfRL8sJXH-@Vs(R#$=K*y@3f)Nbg7aCO`SL(M9f4B%AWo(F}s4|pjZ30~C`bZ->YFq$$?}}V>8*Gpzz>2c~ zJjoB#9tT`AiRDRbxlN=*U`c)RfBtT*BPov5L&qthAVORuBKsok8N>SRZ%;q~sx4HW z*#w@>5St!xtgRKg%qQtG6ujxZkX$v|AT<5InBhreiEy30{J^e>S|?gy-Jb0ZCs`(V zW8cW%2qzC=2lLD0{j{`QX&fi0;Y0FCURymCxQ0dcXjrr{$Le|%0aQ%IF7dty+-Spi zm`kFl5CpTR4DLyXv>ZhPf(-j>q*~V<=Qpr_s7`p(Z)+*wj-ym+H?29H)1ROaNG0eF W|C7vx5I~@eu};t&rUpdSF(_2oCYMRim5%|Edj z7TZ0-`~fRPpCYOtfvsh-8x2|)Md1Hcf2hN124XnL7`NrCY$0AZ{C25h$!T4BVbG@W zWZFJRb1^ra1!Zj-8zyZ z64u#&TRA_kW5yX>ufP5p4{~0-uP{BCGB%$!$QLDs6qc_HwbkEeoVNUy{cyoL@@neK>g)kA8 z4b60?HhkcNf>rB7qabN3lHq)$ literal 378 zcmV-=0fqkTcjZwME(LuZ%Hy&62lT>&9G`#V5l65*t#j(3j}fS!n@_88>Rs-e=zD=X zFx?u!*y$?>6DF=CgUq?2SCm{4LcqPff20dcB4GBf`Fn*gC}kfJ+2czqjZJwRCA!Bk z&{xEkp?0m*^3}I38y@n$-I=m0!jo zHrTN{-*q0lW1`XJzc;Bp$Sbu5ONm?`4$CT`HzE?ozt2(tRaJP{n^jh0LMI_Ag%CR@h+evqZNwMRBw&vWGSD^IH&mPwFicA%NRp8 z1gjLqbh3(QbErFsQ6v7m7ytkO diff --git a/Audio/es_ES/repeater.ambe b/Audio/es_ES/repeater.ambe index f27ed8f6d120c37cc1ffd9eb5b1e71a182ffdfa4..45f7f17a4f9ebbdeb9293dec78474c19c4c55357 100644 GIT binary patch literal 522 zcmV+l0`>inHG@M0Pi>xi!(_)}L@@lzqwsd;A!R_0xY4J}qbC&_x!SW(%U$2fuM6Wk z5d9$Cjz4wet5&)+ck(FDXp1@pOM_aM%fRnHZ*0K7-HZb|Z*?oDkp5;43_Dj2GrECK z3z-^cZxobV&a$Iv1aUc@4wvPt3lbD(n_HJFmpBn5WxHL67>8(6K{TonByCAbQDHFY zb_ZyCX<-5rkm#fGV=f$GJ`wT2oQw#EZNn5|K(Q1Ulx^b@R07f`Ndj!EM@bom$s1=2 zt&FR+l+oc$mZ^tA81+WHA znoXo8G#GB@EpAQ4kI$J9Tv{1Er>q+~eM&5E2wK)_qR~5Su|Y`0Lu{P-I@AGfqodA- z`U&#@3M(o16A2#o3 zf`J1FGel>$@&?mfFu{>}+~sr1RBR>7jWEPYcruJOCp(pcp+^NJA)}+ zh970a^M8maEG(h~yOA!hYp7bti7N6*&kD=1;#Zafe%cSL)CvKa%^0=~u}uBcD-CLp zp>r;<#vgIW;l>wRQtdTgUZjxBK6N_|wg1GmyJC2x>43MayB2ikQQ!L2tL6uDQE%BA M*1E?j0*rEk8OaF+_SXG7?0$iNaey@DVTNfh-cm4(ix>HF(d=;2*>wVqGj|=A* zM!G}UjJl=z>2RNNb=gT9s7qdFD~GV^1{f8S_3lS^D+LtDpL0LCQH@w-4 zJ0}=tED-+X8fusgVlo@JsBo#fZ*^2dySr0o$6RzqL7n{vR@F>ZL{^O3Az{>RS7cJp zz5`_UEhQsUn1H7?FAP~y5_kOsR9#BO2*Y)H)Z?vr)(Ybl4U*7{c>+(XBYs(voLfPE z*i`Nbp^+Hal4`^7n9?)h;iH90S zehb$lPQju7(~TO{D?+9Lkv&I#SUh&><#5AUN+eiz%+J3l6J2#gBc1tWGuBRKW(EJb zQb2AnS#&Zph|rP#+kK(32-?tWLT-8yL0g_ZAAa8ef8;t7?VnR z>yz;czZ>XD4yDSBb5IJ64yc}B6>73g>1@fk;+GP`e%NlR{=>yll^(Q9)rd75Ye+89 z<9Ea84%gs}frJycTP6A1806B()jjjZFqxpicT)8H>CHc`kE3j9c^71!HKSs6Hp32* Myp-fcb4!WhcGvCq*Z=?k diff --git a/Audio/es_ES/romeo.ambe b/Audio/es_ES/romeo.ambe index 0e344fe9a1fb7314d370a81356a1cf01f53ec8bd..1dc93bc5946cc5c297696981f4731efe653e5d83 100644 GIT binary patch literal 486 zcmVVI8q8~kQ9!X2_6O>MBNyQ)(fEKe_#mosVKV=RMdfHLWE zn9qAsZK1#3=FPlqL<^PG-c)LCerId9sWzAQCtpPgkdf&FeP3K=I)#Sl2QGUi=_`52 ze%CtIHjG$hwC<%V9ueL}LWQq90KW&IAamElw9S_>h6NGOTD9R1Go~al@C=6I8a3Nt zCW8eETvAZD0#bVq_2b4@j|3NehmiR^Eg?fAEVT-K@qBVWeoYvH@bXD_vr1u+)*%CDEb?De-DGsi zfe*oaR`_-ynUYJFMqB3pIfoTmhea9Hzeu%I7{5j4g?*@5VmY5iqo-epXkke10pXT3 zY+3wD-U6q!CrlW)Ig3YuYKDZpgDUb0F?z}U*wG4=DSLQ^7-JRrZfeOQ56S$m*^clUfv>nP;5IMO>MBNyQ*^<98FHLx&Me)D+q-SfLN)- zJP&(PZK1#3=FGflVrlpzFkh|4a_!Afs8OQ9fMv60Hu4q~A z+%Pu7P{>(jx~8G8Ru$_aMC_})z-|+?XBGa3bO=W=wnb5#hGi&26Qo9Sz2!n^Llgf6 zB)A2h%+qqbAyAX&-vbsA&ty~a&loYdX+a?;#NEQRaXu7ST7jGzbp9zZ4L!V!%HtkC zT}yt;^K}|PUuX;w+m{B09(jf>WZRYG(w11a4QI%-nntMFji?;p)IBkNy4Y;7F60)^gu zESdC9*+rrKCy1SGY}zNKpw3Km7Yy@kH=iLf*nw`>2z{I;6l1A=)N4DFjpf~>)WQ4M&>(n|NW3|Wl-74S;x5Zipm4R@d7z+03HR~|V1%NeRvH48(teeb c;t&zdG#g=p+=UQPqrIbTvCXDX7PIN$UIIYyy8r+H diff --git a/Audio/es_ES/seven.ambe b/Audio/es_ES/seven.ambe index 669248e8f6e13ef845e22a7cbc91b19e856570c8..2b9f36714dcbb536d5875aef16d6cf800cab12ce 100644 GIT binary patch literal 387 zcmV-}0et?7v%wP(#Qf^~_85Q!aC~7Sx`%?uFLioc@ynBwr6smh`z>Y3V}n*5S;pI` zo)F+v)ni#;4fZSJH-Dp{+}FY^#W#B!^MilF9_JGsI>p8<*g4?^Kd)a{9q1b31wM~` zPiy!X<3SvaUrRm>L42#ByD;E(7!_`53hXB8vk65+4aDEEY#3SvVk*gQm!YaPjae7g zj;2~%7QP#DjdOE_R%Ol~1@pvHY2pI>MPuaZXcWw4pC&~<)T4@fNi$htR#K(O$1F;1 z))P^YwVhpE;zcA&prxlQ9i=4$Lt)c->_o;zAPG|sKW%F{tgZg3%vDb=I);m)ZgbHZ z94%0yxMW~QOt4Epl8`3=R~*s|bfW$DRI7P}Y*UpOGatD-ta(K9vK!B~Ug|3{)FIrX zkv+{!8Maf)S?hpi2&Cs}VWUIR5>Mn>>8&<;;s$Sqf+69??HcTF;c8DA&-*#5ZtqGY h%v1;%nhl9$nmg_%3ybG628Jnia)AYbMRiO){aIKFv#0<7 literal 387 zcmV-}0et?7PNrqxDCg}Us(Z#kA`NNM$-(BRNpt#`xx2ZQ;su%v^L-hKCFgLr%@|vy znkI)Zyd%xz&9Zvp7Md~aoe!dEf)cg5eI_^27{wIO;D}?b+&QH|-66Cb9qbyWLEHni z3v2usrv?52mJdEj2Vbk|(HCVt92F{Ut|02Gr)?o+FUzN~{B|5eA}GxHaI5-4*;yCZ z$D-U85V$^4kDGU!`eW#N2l>E~iza5eMMJEH50H=n++_jQ{A)w*3sW3N6FMc$3ob}+ z)-x5s_l-&~E`cD2FumV>Zo_9FUE%Yzgz2DjAQ-I6=WS>^j*0!)>}3yJeWJ;#zB6A= zXblj`lr*IuNS7@}+OVU*mw1*9cB-|v(C2)z331;Dv!6LXi7Y^wv!6?2I*coHzD?X? zojK|YIldEH-F~D{Z{n;7@492r8vlMg{P(!4}X2?4ymMU h6r9K$yl9UNn(J<-YstZI3PwG;^5tXVB_*h>=YPzJyvqOp diff --git a/Audio/es_ES/sierra.ambe b/Audio/es_ES/sierra.ambe index bb0bd2b7bab335519981a4a88d5c30a1184fa6cd..b03f831c1771d45f7297f7b704f3ffe14cea5f9c 100644 GIT binary patch literal 441 zcmV;q0Y?7N9j71^;t_f$#0sJWa!hb>iM4v=AQBXWC1Y!^m-ivK(A9VCXQehzv9h*i zwc)2x~sjef#Q`9v` zWM9=T{KBC2YuV8~MqQ76GdV+nTto|lk)K5hYfEBq0jgssXdQV&K_RMh135klF$71i z4d+PnGT$Xt`WN}ErZM~{bgNVR|BzvyKt;$uKHFF_?*=5VH16J!ckv}t-&CLw69LQz zXQ^_{`GaBDKs?P=y>po%nqsl`*h7bQSR@HBq*HD69UVIfVDKko9o$L^2s(~nvk@0v z{4UIdyZX+~8^{y#^skJ-HqS?*p?zEMn8BWT@SP`+V&Kt)K24Sm6- zDMzU}+HUd3#&HXI9?wX!mIxIk_Xws9^;({U8!LGCXtf>C02s$;yegtj1<3hSIJ*vt jQtT_qSF_KDFhIAy!#%LxgivO%?V@d@%78KhZ|SL`E9T4z literal 441 zcmV;q0Y?7xtfUm6N9E^|tZm|9BElJsG3ywhMPn40wr7rez+tT&F&Xl!CxkM%H2&i1 zdrZYv%Y4i)myV*u@D)9@i=5^mnSC`S#o8o8g5G7;ICvRkQV~ndKWRYD(L_>|c2PCq7Rc2#| zy+$UpH_0GZyxZP`YBl;IcI}_|^IRp#07s3g{?=GD>LNhP`MSa`bJYM<|G3vW`UT1Y zW$(Vp_iqKhBN&VEeLLA@+(Xg<UvN96%~G$UiML6OB|@gcU@Om z;|rk7f&C+EJhd93qpOd!CL9}CQLdZOwZnUa4J5d-grcVk_G)3guMp5lT(AH;s>{qb z<$w8DMy{P~T-|*6S_0heXMe~+qr#) z&%(fBg;12PWNyvnQ7ZaN@Ckj$=P`vNWk$(--^FtX?QO?@z(J)T&=n-NY2k6CAkr}~ z)jBA0dWb&g4hGrs=?NJ;Qi*zk%Q6HA*Z!YG>~ahd@E- z-^%)IV1~4C&t;eD>A<+gV<3$UllH0PLSk2M+$r>%=R{;cT>D<4gykg>QgkKB@S)2) literal 405 zcmV;G0c!r((ByS|WB(;D3|fawBsj1g$*rTNb@d1^uer}b#c;lr9r&K=#fM~yQe;1+ z>%^x-tWgIn!F%naSIl&?kSi*T}2Pz^Q^X)!(qbf9q$UB-VtVE-%M}_^~1NU8meOGe#nHjWHn(h#DKkBE`MCKv`M45}DLDkL& diff --git a/Audio/es_ES/tango.ambe b/Audio/es_ES/tango.ambe index cdcc75dfa284698d659bcaca2a116bb8d4d3cb40..cdedc7fc2c554e591748fecb3dba1ad2f1a5bb88 100644 GIT binary patch literal 369 zcmV-%0gnFniR5-=bWHhrl7+=^MPm|B?U4qcU}s%9jT-QG=Kw|qjQx<)M8{$P5RALU z;CIJn0urC8x9Qi3wW#~IoCE`^EFz8lR?f%2?89_CXcXQZa+ZLiS;GlVxF`(szpnW~6+rZJSq!21SNUt!&FR*g+$; zH408Z6x%^?(qtP70Vc_DQ_(gWO>%ES2L*rWyGt*9a4cUOY~q!bXe$UFoFK$^bq=ur z>N>UV+9(}`6=LKBEI06I^G7C;=F3avd!=H>(($+dTrBYdm-azplnhAT1LKEsUO0(a zsU&o^buh1Fd#ffF=T`&R1#Zt6G+2+5M+FX?TogLuP$u4N{8zRWi-B6~J&#iISxk_` zdmQ>p)*hlc_jE3?OVuLk5uKYpkZH3M&Jo?NSdU7CSC~y94O!?(u0(>4z4{1<#so#i POmkyeli@)nYG8p`yydBJ literal 369 zcmV-%0gnE*{G(^?$KfhQv;U<-W`(cNZRV)t1z}`a%}dva$0K$JIGY*9sl_FBBM*){ zwdsICG7XHW(CgKS*ND5fm?i_NEh3Hob>GMUs|`b$$N-wzR?K8g-j0ZGQ)Zh*A;_R@ z;-h4lL_+VBY4U+KkYZPxKVd_TB$7Z=*$p*d-gB=*V5%H>?ORi>V@IwGdF%^OtYc@L z9ZHW3aKB?c~a|>@>b}oCeru$VD3{6QGxTF+2HE7dg ztdQLz66{;UB?hQSeD?TX#{gv6!e7f}U*{tQnw5XQP)xHX@wvq#ea&wAN2Tm`j{IG2 zok29+B;*RD9nA(2%U)9)4NA{Ubi7Aj2LM~_A5hSWobOIb+7R$Kjsc!1Jh^bRvW3_H zzj>%=^4S9=v-~=d4$;R$+1#Hhq7Jq7XW5r4JFi9U{GtXNb$fY$F1O4VuvY zbF5$#>0UVB4{)wj`HoeWwk1=HDP5Kl@crv6AWtu&0!wcuKT9mbPy10`(ZB+PJ!|#r zh)>Hyfm2#ql)TugBF7OPF?7v#nFED)SD1t`9K#Hqc|<~A!s?i_`%N@Kv~plqYRniA z93Y1Xlz8P-GZvB*V=F{E%#542N7OuBe1`d&>r`4!F94d2F*eN$9ZwMx_nrT3a7aA1vY z18sJVGr45iaK2y{`z%ZC9&^hBD}|{JsP|N)VU*PQ2wJB?lUZQo+053BRcu&vw9FXP zS0o-jG{ex`)!Z@(IYYB7%#0O7Y;AT;j6feR19%VeOtpxbT@xPWa1Mb?%FWDYhIU+_ z;GtssK%jLUYn95%tX+ZzI$gU3eeEyD7fe)mV&|?-fpslu&0!16;l*cbGKg^v4ouSL zpaAfDE6MVQWg_Vh?GuZGp;1^GJQnf!^Mw><%vi5M%TvQNB*!sF^n&fCRY!s7hkc(+ T!XpC2JpVqIdR|jC={`MWQ#c)a(gAy#l~j^>kQq9f3~yc|i)Ff@ZQcphPA;e7*>=CZI${ zTo~PWP32;VYI%n2%hf*)mcD_(b!hdF)CS9`lMJ; z8vr_5HmlHB5galpdPm#j3`AK)Y$|fCM2KH6XF4pjiWS7((N|uDbmYl|0!ief^nSPK zsOh4eXrM&omX*eej(MVI$EEYd?Ttx-L4x)4#`=s%gJGee$D^x_p{D`G8WgXqN+{5y z%q;M$2kr8}VZcGht#^xuqg9gfbk(LmP~#UTUp}HsX)NaC6EF^U;w0 Trw~x3sG=UcIlyRF%(!OrpjPU> diff --git a/Audio/es_ES/three.ambe b/Audio/es_ES/three.ambe index 2769ece8fd1077a4335be5f416f91d75cfc71c2c..cae2dd7f19c5499eefe1fb8fc6ef4f6e4dc5af6a 100644 GIT binary patch literal 306 zcmV-20nPsOy2U0^U~Kyw@$1C1F`Y1F8q9v3SD)Q^TryMoUfh|FI>1W@tqL;UHUpzZ zKVwN@_k`)WO%=QXOW(&oZi!KkazfZ1TkIZSyh3K#I(YsaLD*n#nlr3Nj&}WiG@Cw$ z;mZQ-2X(q<>HCCgb3-GTb$3lqTO?)in@|p`^BNupUhzmP&#!Kwc|oGJV?i|?sBI?2 zXl(NwUY`!~kYMB?87}%u_dnoS7|3)dR zNrVO(#+(}V`8LyCBq E)WOM)dH?_b literal 306 zcmV-20nPra=f?3u#Pv&a^xmTJImz(RkIa6ZSD)Q@d@@t|U)-6GJK#$Jt1c4U+y<@6 zJ4G&GpMq%_>s8)lOWlwDDg`ymGGf2FsNh}%_yR`0oSV{JXWU`K_|roN4iJev5}lq$ zu8Rix0(bnY?dEDubw)wHy>mgsKVT=f#f3yo=%OH+?1EtS_Bp zaii7d)y?fG#CP}HVdEyRYNAt+g2&X1i=~2fv*2~W2mcu4M%J59@d2+}q5`s%w}z?D zDaJzf?o`rt-4?W2#3W1GHZtj(H+&)aLUf=sjIa{q>3qz$>7X)1IP9LMx9gxX2O8h` E*G+n+YybcN diff --git a/Audio/es_ES/two.ambe b/Audio/es_ES/two.ambe index 89b076ee025d9b880b4b93275ab7b0da49cf6ba1..112c6257200832630e49765c61aabdb70125d430 100644 GIT binary patch literal 378 zcmV-=0fqjuHh@9|O(?!^<45Np10b2tkbGaj0v8L@@WWj{E^4~W@=xz-J$<7(U*!j* zUh`=Pd|-`eGc2-AJP_rXp~Y)bPlDa4{V$@Ce;D0TIBlrKdc?QUweQ29KM8ow@!tVLCOwp`c` z{DLht|Ln)@7 z8R21Q(esPa(_)5Uut62Fdb%NvSq3So`n2jOgJ&gXt&(=p*MI>K2-6Wqpp@kSc6DS? z$)?+)U=U1*?(+4B=SM>ZUHMDIs>cTaR$tvO;OC-nVhYCxb+fhS5GG+1bkD%_pfDg9 Y;ROfuiN|DcR(bn*mFt24aSn*NgK~7YivR!s literal 378 zcmV-=0fqk0=iwC$?d&SBR}98{Wr6snF)lx+BoSs1u^(MOFKW8X^KZ==Nqd35aqUjQ z8j%_-kqiZ(vrgh`J{(ltZzpR~PlDa4sVv~unbu}44ze6_44tVY=M4LoV?%{Zpl4h7jG2GBzftNXS0i)VF-rpZ?Ss;YT zAN6GXc})iJnb4(cWiG=_L7V{~iSP{LO?RDl6zj!VscvqbIJy0nf7@-Zish9v_I}$; zxQ*qZH{*Ti$2P_h5hJLHO@&5hq&AHq&MDFCvCE@ zS%YPQnL9&PgcO0h%0T%~Z}wxuK~Tx5vl*xWoN6a}t)AlZ_n{$nNQ5y~pN7U4b1Asj zaIc5t7jaCOpcLMA#zP=K0XQ1%XT)SgYX@H~Kfb_cQy)t`$sMiYLv(F,5g`>FGqװtGQ GeCqQm0eDL7aa PfpTueWP\ba@M(H1eP[SBj5㰹E:e?#nHYo$Y&,\J}p:-Kb__+j Mi<DnT?*~ٺ|i -?iZZ]x_ Eڲ_Q"T|c['t[BӅn' ,S0Т m9_E * Ô{{Dd\ -WXY.nzMG4.VR_9Rli,,s8!(jyjqĿ4` nZ]7d|,֭JI.HiыuX󰲇B&yAWs?…W WRjC|w \ No newline at end of file +CEM9sGrͳD`fWcĢ$C>PCbA!GBJ5^Fuz +11hq2'ŔA(2f4P!Eƺhq#'ĄrB#SǘAESa3ecэXU&wUEfer@{CI1'ri}FduT[fB yU&,ᓋ\m{K4E^Na+`Qb+ \ y:+.ðb. <_a'89s%] xmٟ+/'д?aR +"{Fv[.R# +5)>/xSiYR  }_WLfD }DF8S0MUJM><.> (Z[\plt/nB[\`C]HoRN|=HO\1m:ىhJ!Z38~bt<"77gps2#ʣ0zڢc3>ϸ \ No newline at end of file diff --git a/Audio/es_ES/victor.ambe b/Audio/es_ES/victor.ambe index b1033be7bdeae2838b213eced35d73160351177e..1e409032a1876d6d4f83be7a8f5de5ce3332a9fc 100644 GIT binary patch literal 387 zcmV-}0et?bO2=UVcs+s1eU;BERs%?Lf6joH^#e0ta8(%znrTK%eL*>l^7R=ZWC}~e zIz$?~xvA4cz!_yuHM1F=m5@pfKm=`u6_F5FUt%hy5{!&ABfv&|x$TnIk#x63JH+*X z0lsmAVmq@5k_r$}i7E|Fh>i&^3=j{;Cc%7QdrBgQ1!ZJS3GV(nspG7fW3KN(=fc#> zb&NQ3vE7Xd1Vq(3r;?P%Fk^BSP|3jbqA~(L&}0Xbr^hy6Q8Wu`Ux$Uu`lW>tCU5xP% zmwYCXLs6SaQbL$lt4u4dAT?)e?X>ZD7^&mspn6|7%JE+I{X9}>m48O3$xgPvA_RWO)a>*6N#b9J*dsVzbud+ zxT4DDQNfiY>&2G+;1z{^HL*K{kby=CMx~Nn+R)RAY)K#-0SE@1iarEv=@_6Cqeo;6 heZ5G=?d4i-p0P$1N+tEt;zg59ScZAsl z&2B=`V^to@2_Q0NzZ0!Yid^PEQLZ-WqS{g!4r8n+Pv$4X@7!jZ2(YA-42)}H-R3q= zm4+wtES{rQI>D%r)D66VQaQ5Qfx#}1f;2j$sn?;Q6u=`}rko>k@pGqR)B_XH8X_U% z!FTuzc9_n`fI?PR42A!km&9gLNc^w?os{GTP+yKY) literal 396 zcmV;70dxL^$$>Njd*6!ohUlOLGd|6^(AT)-Cl&%uj(LXLf?-k}t(nt6$zR{8oO{z9 zHRvEWkK6izD{+iM70OIY&Mzj|Cj9TW0qQ4Ujcuf;!Q2VBV1qW(`Pr<$Gg0LLRnN?X zPmDzKB~kkY!DKc-pH$1O1Hq<170Na5jHYqBW_OxRDXt?^E*xN5+(x+_x<66|N8 z+dtS}x){m|qjnc&n1f)LdBsvOD164diE77FBuh_*zum=$`5`!@xyOQ?i`j~v(?6{` z^j+$m;EbGOYVj(7+k>lAPI;suq3TK}2V-iN1G4F9U@&KHktXS_C{Z}oinLR!lYQsYEO{A^a-2M$LgIm>Grl8mfjV|cnq;hH58v&}k}4bxid qfqNWky$XaVC(rvd9=eq7#$`BrJ|v6&2nAUCUQs=tzy@I)Tnwv{fyA!> diff --git a/Audio/es_ES/x-ray.ambe b/Audio/es_ES/x-ray.ambe index c938e83..0b6e2b7 100644 --- a/Audio/es_ES/x-ray.ambe +++ b/Audio/es_ES/x-ray.ambe @@ -1,2 +1,4 @@ -b dgCKt!pU2 Ch*Ap,́eqH @}/.tg *P!K5e>RZ%ƃ$H'l˝C`DфAG7oу0]e%Gb! EeP>'(3:Ƈge!k|PkI:_n4K_N& Jf[6d08#ffAZW8?%cX` -:Lt*zwE0;8WNgH=rzY\u"^g'*xTХl9F|9@Hlyσ@gqJ3G:zc;7٬(o0rJiq†1v+A \ No newline at end of file +̒T!qWM%[ |dʿGwS^ ep|męgGqm!$@}혽.?Vf/*Ts`'/J+Q`GhP;#+C ]DcB c%pb4gJTWңE7M' | <;9Aae'%s^#X7Pq@T/:Ɔgg+-yYHoZ< ;Y9֢/lcj[=kY,29z #y +k &[5*"-XYDAE4˴ydͼ9' NA \ No newline at end of file diff --git a/Audio/es_ES/yankee.ambe b/Audio/es_ES/yankee.ambe index 2f607c08fd709181f08dcbad877721696b1fd53f..41345cbacab453fad2e3fb03bc0dfcae068bcc36 100644 GIT binary patch literal 405 zcmV;G0c!r?EQfM-fF*lpwOhwFaWt?uc9u%#5iul`Z~=R1ecUf|L8~)5SP7D$jU49Q z3SS!WUL_MWS{#xL4;VNfIFD-6Xpo^i7@S2pSxAzvBaa->4kkauj6Wjh%?6x0a{dz~ zqE1IucOV!G9u-|KFl#z4RCo4!ZW>CV9)ab24H|uF zmKFQK*h3ClPWA>=!IiG>m4xw(o*u*C7o(IqkNmeNUASJPSMpw`yg@q;TAQ613Bz+5 zeL2-%M`i;mD6u&%_AFwCz+2%)1>m9RDzj|$U~=L}>}GBZwIorL6K!y(S*j*RK~Q*u-VX>0n?|%cl7_seNR2FbTsi~Qet)Vj)OhQ?*V{;s3&dIl z%)3B5qAJr3VWbzce)0{sA<^OQA$*p_7bd4S-o+}Y#v>$$A9Z(;(8PXVXrR1k_XM*f literal 405 zcmV;G0c!r%JK!)Jh2-po*9f2#RBbdBij`Q#R5dY?24xHxez@v~ea_i_94oYo;7nrH zUk!MXk`2%K-X69L3-pjf_z!ON54Pz%oDSn1O>D5~&x;WqYEoR}tB>NYjR1-sQvCTK zui8=hSx4D|m5LT1i5>>%%OT#HCB$2G*p$u$hZodm^V%$Fqy`bpCPtYRir)8gzhGzj zO<&AA5$+{*=p~DtkOJQ&SJ-E~=+#PKA|}+U(v?waa4H_eJik8sC|U`n_K7L9$$T10 z@;{S-93KvOP1Xc-#fQJ`wWsl~k6zKxRm11<&$+8$iM(3jRk|A|I;4MVIN960$=MZo zJ6yMs=kA992$5Jyy5yry$X~}IC+M(fsu5`O2Q=zRFM{eQlVda7GVSnZJ4{_yZq<*%fQA|s>Qi<+ZttK-8Yb8Q~G)WLi;iQC1t2b=&F?!y$LkVF+!pTUvm#=PI&Qz<_ktG zbJ(SNXpKAyM3(6{Q!)Su_h!JY6Vf%yd4*ut^3kA;cnF_H#kOpzY-D-t0n?-uTzS2h zBLE0$s|q7Ypd}ArIH3~LX@+$y$8HHddo8y_EruHiDJUF=A}z=~Cdu%qJE;xYV$2EJ zH%gyrwid4$G;SM+=QK9PDKrAL1E(f*!F=U~@*Rd$Mxr%qcb$ahH&O}h$6=%o)GQ$= zbBp1&`=CQ2Pnycsruv{`0Sl?DwY2zxBSJizn&Rh*#YS;pdFpSZ%Ysq>UHQrOx9fm# I0UnI_=cF9Ok^lez literal 414 zcmV;P0b%}z?!p&<3o*BR?03Zka4d079LMv7GXsK^Ed8XAp*0Or!j=iwP>kJ@?l$Au;PUeC*1q3Wd~xq62rjpD(f5V)1? zmxbolgf{+Ln%{pji5rN_;n>3CA(|`zjOljEiC}>SwVAx`-*-aPB6r=sq&~YtHgX3coekB1O!b?4n&0yDSvU*+#C5Uw18RqOiF{W=kYV zcihdsC;?b(C$Nv#lRiKU!C>Hx-@4bAG!N!4cyS(=xNW#(Rwd_#AVNUGwE&+Hw9jZv4fB?~+ zCTzJavKa4;wCZ`v!8CkEDe8jvVuB<(V0bBEfLy>dBv1u#QnDdb~g zy$axHQvRJV;i?pcaM~sB(94|%z!ZC%H23TM%ZsB*e}w_|^d6PR6XIIGyah%U1ykf4*WYFl>3$aXU>uk+)Y)7_w?!DG z<&adI6{8?h<-wGVl4Q|FRK&Mq3qfkC_{-%x z;R$dFkIadOTZ3&=I_7N2TMWo$CK(IuVUr)|Wk)*;%2D$h?_g3{!`v%xPO2bP4pJHw z3l8aUyMHoAOS>EVYgv2~mE-U%f=iQf$w1xPc)v-80Ld6~Z65YW{ZseSRwydtZ`&6Q qrU~|d6|yk|2nqacu{5J|Wl4LS38+fO5JGM_9- zcQ%5?=MTyE&JXWSd*eZzmftZ4cZ3<8n&rk?1q8Bv)BC5@_k1$rL_D5}(A1DXksyBU z;Sj)l6Ng50uEbCaRsgqUR;{&ANKzn#XBN%HR7q7JwnaDH$2AIaWUFTd&+!h`gmRBV zbNhdMy;vFnCk4x2p=;1P10;0YJ;G_=Z)gu9jqq}ySXzAu6#Q-=ny@|NZzt|TAdBH0 z!A(}rV-(4QKjCh5{6-+jlP=6=BJt;?p%;CxAZ4|$2G#F>uOd{Hs{rHg3hH20z#hik z&tI=7f3;dqNh5!(D_^x=O)Fp+mM^h9iG*1jUcL|Fq5;G*eSWkL`*6QT7UWK)EctNl qCRO*uQ!3v?q0KyL*FX!OCWOCCNVOw{6DE^6r?rsYq!(7^sjwfWX~19r diff --git a/Audio/es_ES_2/0.ambe b/Audio/es_ES_2/0.ambe deleted file mode 100644 index cf50e740e880cbb95bef51a844230f259d8c1216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%~>K;w6GgEe!dc>9VhGAZWUXQ71UW|<-!=^$;u!4Qq z#o@+BTsj5wqxJE|XHGdF<<)_vq$MegfVk11wS*@vyyJ`1fu@I6JGrI2)RK~gHrHi{ zKPThY!xVYfQqMaizhBJe(HH?oC!7c%jsbGl1q8(fvGK63A00;0Mt8IOV7h-t;zd`L zx+Sk1Rl+7y`%~d3QCHF?Q`rKB0(VipBV&f=sAg3ay-E_~+2;rk9}{R!Y!X!DYA;|5 zar$k3Btc$EL6*mtSN?!#mq6r$vzGY_9m62?v~ggCIB5AG;W*4;s3>{L0MQ8CP`!Ec zML;ZS3(9K^;$=ssJ_Qz6Wac&t;Q+0Dx2^XiOMrbqt!R*^Ay3K{&P_bEJE;uXV$2EJ zH(H-)wid4$HE%nM#uRkMc{CH1AcO`~g*fGv+sZoVnhtW17-KAo99P$ac!w9 ze>lN=12J_U1>~v4V{u|k?|B!+efr6%01Vy&u_sbaftW$+H@5;7S_#YyRv@qib3Mn1 zGRQN4B@rIciFVji$3isnWk8aIV#7joT*+7w5O<6xAZ_NbidtjLC*c?B-ud{fCV2M5(e5rbFwrWDHnS(3j-dSFc+I_U2O&_ zx4o>i9|;&zl`v&1>1v~6g<4JQO}uD_bg~^}+G#ZQi)b_f?MMqK%*j@^o&uLO+ YWR9(u%YZ>3eyh#b)rjRqL1lT%Zw||?WdHyG diff --git a/Audio/es_ES_2/3.ambe b/Audio/es_ES_2/3.ambe deleted file mode 100644 index 8bc5f0ff2c31efcb5fb96cf6ad0a55b4e25a63df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr}HPx3w=WF39s3Ne=WtBJ!W{lRyI+@uq*cTI;I-I=LzQV_0%P26=93W*6 zTLvp<(I!2G9dX-XZ<%B6CfG6VRbUv}W6CC_@YjdJ$`+qn6t$km zDGvh9WO0R_Xx=qa;WQ<37TkF699wG_r^UOZv zH*9rkQNisE=Qn*+X=kSIETuPb&d-?4>BGb|djgF>5C1&I23!+cRe;Yu=0tonI|8K7 z4deoRW?WYH`8LvAH0*<$BT|dJ7ZQcJstSUZY|y_vjo2wM(lqNB2k(k*HW zc|7OKGR=DMPfoWo!opihr+jDCcw`N!Znb)MJsLfL^&6{sK~GOWeKbnj3=n)ol1uG5 z&ur6gDJZM0O6Uu{E>2A+l}fH#;bM+SLnv3RBf zy_cjDZSYEYFX9~MM+h18giq!2CW9&-0#WwRkf(Z+GrKtP6-bjM>NUUdcv*h zSqEM=NFD2T%Rh{X0XXdlE<5d`_0Jd?KWQJQD6J<+;Yv$MaSspQ_bprHZD|Vl>=U_P z?+4(1Az+f>Oxy?1enV35ky*TAm1|XhX=@ oXGo1H;%gzuxezMOE`T=TodJLv-3_E9q|QWvOXz6GB(Utt>BBFfpa1{> diff --git a/Audio/es_ES_2/6.ambe b/Audio/es_ES_2/6.ambe deleted file mode 100644 index 00763fc9603644b0d57e02636e6824b5d150aa9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!s6pTZ?p>OJ@I-Nu6;WB@tF>x+ZoL?qL@uKbOmrv#!oQHb4&p@RSndVMp* zuZM<4YVlfVeLIPTcMW=v$}23cgL6oeoTh;oyMpae)QmAzYF8 zMsjWzIPO14n^YeJ>3qf0$ghr~6|4yZ{vbAnL?*3UGQ^v-C{Gu>dltmW!V5|v&nHKk zR_U*R5zYi>+d{qig)rP^Qp1lMG>S6bWK)ET8z#CABx54uD0i;`PIVE9vt2&Ylvoxy zH^g^uupJH?8e_yoCQY4tfn7j3qACAuKcPGy9}jseoet?{WjcE3XQ2$)aQJ*c0t?(& z`42HX5T+UH_XkO!7&FT`lcG{6plX3B5ycTUglZ zeuj~tM_B;yl3l^BqjM=Giy6Jazk*Q;b(|@U!i=F&3uCxC@8Q4W5k!oArl;=>hCo5+ z-^%)|ru(*H!)a6E>BG9l5dhr{g&M)669HF;_QCa<=Tv1teCtf+tH)GkQ%tTYty;hX diff --git a/Audio/es_ES_2/7.ambe b/Audio/es_ES_2/7.ambe deleted file mode 100644 index 709bd0c..0000000 --- a/Audio/es_ES_2/7.ambe +++ /dev/null @@ -1,6 +0,0 @@ -ΆT㭲?עBpv5]#tb9;@ -!A@dL bbiϺaI#5wg !!]% ]~%.+|a:-~i׮6>\wm#$+}p$\:gpfQ*bXT-^]#d%fG -XDat#I"yCt=uq =6bPy\\"UGPVy+oHE+Hy?^zlRlHnBX#XnR]gs;۱] "R\(g_ -=X"Lhɭ'Kp -]ybB )H -Ig8 v d+%)R"}wr'e7(}Y \ No newline at end of file diff --git a/Audio/es_ES_2/8.ambe b/Audio/es_ES_2/8.ambe deleted file mode 100644 index ba3e76111540b4eee2d6f4b6de27fd3596667eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPrEOXg4m5U>Y#)8wSyVdpboLtEsutW%3LcD=+Rr>x;t_zI#$`U>9%$pwk&KtC|{;j3J*9Yfde!c znoRx+1&CBAd&z69RN#y2xLe9k diff --git a/Audio/es_ES_2/9.ambe b/Audio/es_ES_2/9.ambe deleted file mode 100644 index 67b4a5dac923ab997184f8d87a571eaa649b6d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnEJTIUx4BZVgw))}HCP)u;ZWw=a80N?rrUy0Q4W}{m)E<;GG=j4nho~2qF;=c)Cs|Debq zKVTwlzPVS8$p|qAK*&hdDWO-3XA+#`O{c+OuR{me4qWGD5&kt9yiK&ljSegsA(2vxA&pHOPzob@#-ZW z&q{%T4iOi(NUSR0Yi8NmMmw1wze8;!;6A$yhc#2x%jUnew3I zZdh$VvtPAnKu#NFR2f_W>D_(6D`^6Z36XvX<$3|0*>b}SDR(^w-1m7(o(Xka1<-h# zz_(_bZ9Cr*Fdl48Wp7K2ZhhZPK-fq#xP*j_HWRxcmWTnxKN=CZ22J{I7$#Rj=tFMa zW4#8iV%uU&yHSc1oH6MYWhac~JycmmYdS&Ix-a`C?K${&8H(ly7UEb@ NV)II{qgKFg?7ta?h_V0x diff --git a/Audio/es_ES_2/busy.ambe b/Audio/es_ES_2/busy.ambe deleted file mode 100644 index 40d93c5925ec1280848941a5237a5cc661806b66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%~PN$yPmpugzvfR^VFLP20a%VPO`jM%Sgf($p08zP<|2A4%OuSf9IMRDzm zMw$c{k$k;r`9B3=BA`2U{{?A96|WgBRxOVkO-w0Pz;48QS;YvzW(t?XpE}T$MK*NB z@T2+WpMT8oER#D-COfMxD9>R!YIi<^YREtH1#VX%iGfWE;*l-}M9<}8?Da2LJ}7>2 zyV-!JNcAsEL=s)yhg|J#i2)tX#Bf5+ZOC>;MMs=5-8rJW>v~ue5W7BOpW6Zd=px@W z1CDi_{>L!R1!0J1h^>MG?F3Y)BZ>NhX$K|7$Nv37%@|Qlc4^b~CTD3sF4Z%Z1kCG9 z&@b{9;gFADTpt;f`%;ce_^gt75?FPlzlR%D`5z^NS9tw*K2VJ z$ywL|;yUbboET`WEl&S}}x#vF%q3;%DRNGvUl_)h&StuEmn4Q&az4~azV z4~bVhx(w@N=xDkHALfH|a>(G{EpD~taaQ6XoAOSC#B)^B6R*Ktm&P+?;Ub^0j)cc? I5O1yJBg~-03jhEB diff --git a/Audio/es_ES_2/charlie.ambe b/Audio/es_ES_2/charlie.ambe deleted file mode 100644 index 2424d5a..0000000 --- a/Audio/es_ES_2/charlie.ambe +++ /dev/null @@ -1,6 +0,0 @@ -REl Ժ'UR oT44cFE7>Ҿ9QJϢ6GNU}ƛ!#'lsa#"%&w\6- O3 ߩ6nрf -m(8hHǩ 2:0lS Bo] N+0O|8=Y;|jlr{!|NXS$fDX(9{!hc - -M,|k.J(3j+o -IgOZ!V|l[AW 7^`&Y~ -F"-7p^T@ \ No newline at end of file diff --git a/Audio/es_ES_2/delta.ambe b/Audio/es_ES_2/delta.ambe deleted file mode 100644 index f61a3a0..0000000 --- a/Audio/es_ES_2/delta.ambe +++ /dev/null @@ -1,6 +0,0 @@ -pD,قu;`"tք lȾY0;x!qm U + l<1=rz&T>pldN4|ыfn+%,+A a^ @Ye-9 -YGG**W'g./w1"`0o=@{`.$wt*i -X4 -Dn*ȈÅdӧN_ZΨٻq/;]Ί-;MtG / /7ϔkOe -lannNeY Y -|,KՍ2\. <_^-+-];Yʃv QU? \ No newline at end of file diff --git a/Audio/es_ES_2/echo.ambe b/Audio/es_ES_2/echo.ambe deleted file mode 100644 index 7f0bbbd..0000000 --- a/Audio/es_ES_2/echo.ambe +++ /dev/null @@ -1,2 +0,0 @@ -PrցpR,΃a2b_݋zVd;cU.wKc;#{$z"lU)bwÑIFtՀsb=WbIuU12ABE߃t{O pES[: qӮBA**ec-3Yl(l8<#qXAz \,AIM~y {.Y0IO=x -K)cE>_O1+1!((?{h*K@;5lmKbFk>xj9+aMW){eMzh-Ys*VoH4{qUg-1-* zV(S1s^t)`!)+D|}lBH!w%(w%JZy=*4p(W)J`AsM)#%xH3BIqfnM+9@dfYE`s=R_`u z)yYvNnK*M6-w6Y#YQ{rjUl^o|y(54Es=e#^H9{PqJf|5Tw*k)&{A+LW5&3R~?K2t!HGAqy?N-6)$=M2v#xQ5Md3H0IF^o%gFa6Eq=s2TAQYEbP EV-DSpm;e9( diff --git a/Audio/es_ES_2/five.ambe b/Audio/es_ES_2/five.ambe deleted file mode 100644 index bf8122b99f62f00163b1a95d2ed673966e08be96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmV-c0jd7{ScExXR9u~7AL6w1ooQ4&V0%7ogfX?D0fG0y* zz?cWBK-NJPuwYQez(CYub@vcLl9eIJPYGIqUT@Q1LQii3ZchpLMKpm)l<=>} zIahizNDb>|%Rh{X0XXdnE_$o4Sxb~vUk`bsh7IqHsV)yIcPp=7yDdAR3Qwd+B-gb& zi)Vydl%SsF2)RU*dc~96fjO#ZQ(kOR9#P_UO9Tw+)#Q*l&TrLSY%RR#I{!@OP7WO0 o|18RBq;7>=^#Ll*FMu}UodJ+K-VLB2;GRT~Y3WIfB#^wy_|qSyasU7T diff --git a/Audio/es_ES_2/four.ambe b/Audio/es_ES_2/four.ambe deleted file mode 100644 index 142a01f2504f0614405195a5a0bb484c13d1024e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnFnsmBFUM@{PqwaTI;GYN{^!Hm%3lK?HGLaV?-#AVI+<~?#QcYgSOS4|eP z8zx({I+CjKk9}kY7ULDdu8A%eWY3mo{=f?eRc>OCYwgC6d;@G@%@fU3+*0XibIqfa z`Vu6p2`BtP6!%wC=|Bv=QmGZ3V)!Z~vupz<3_{#WRAme78Ig2Vg;-`LU?kVez`S2T zJ`)s)-t~bXcO^--ukFTzb2czor2FcTq4BE}I{6uYSUZY|znPp-N*O5%i~+JV5=|^m zdyz&0_SGJ=4k)p&+L5jYk7S}++24E&u^e#Yh9g)IJyqaP|OYJ zBsr)q&l2hi%LKO~r*U?|KjNpPF@;kV;4H_t)AfUJFb&{EA?EGGYXDFGV%V4JpfW%m PncL9BiN`cRcR$N6?ZvOH diff --git a/Audio/es_ES_2/foxtrot.ambe b/Audio/es_ES_2/foxtrot.ambe deleted file mode 100644 index 15a5f567b42b23b23634c737d83352d3ebf6d5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*UbEv82nsPFHo*chQ@RWRR@CBq%2CsVahZ4rja!AE(gT0^Y+EWvf5A#khe z-w&lDR_Tn1yWbDyWms`*aN~+fh9`UV+b^}?UW3HyN^>4aA&Yw2<~dy$++>&xUgoXj z=4L?48gRlLac~$y*c(Cd4N?*v1i5-AEJwKLnlb1uegI7D<*D(m-GXyQo>wE7DB^>y zkvXw|j)Uc5%8qV`RO&6EO~X(Y?2}xbpK*abaeYI_XO1MJ zasyshSH=C z@LxfUBLj?wAHZB!jTQvCrYgTh>0Lv9SSiP|}VLk9%?mNS9erZr>q$g>ROzomDiAf&^l zu>9r~4j4^qK*7@D5SBYDPOr@4!a{&Tl&%A;w1)&N#VJc^9XQ8O(KM?4qb@1MQkF-X zxswe(<#s*3gLori&K>(~tksLhMwwXgjA{Br0YR)r{j6o8=3@toWYsN-S$I1fZ3r&s zX@$cpHOm?ptADi}^Aq0$MaXi9o`qobV^y&u1;n>d_d`~)Wl+(AVAVlqkPuLUry!># zLV|3Bl1M~2SJ|K~OpZ~Duiok{ZMd`Rr~r$v-s&xHlc)fT zuiok{ZC=x$E`#}GgiU`QTP0G6WkMJ zvk^T)7$KP$J3&V~FJ5A-MEA`Jep+2}rF`>FFghI`aFUBhK~Y)47DmW=3e(LhlR*RS z7LS&5E3zk#@TB7rb9wb|IWF#tSG_N|ORTVC*3K0>y)Da*au*)=EdFSt(+@#mg-`ZA zlHCrwI=2m#4m;C@B+Cg3fNFW0^s_v=9MEoe-xVOagMQgYr0fv*&UstRK0=b(-`!an zyl7|QmrVYrU9TuDgjgvnBP`5m!uLNyagbcTEaIYLlrbASf<3nO1C5`)41q5lZEHS9E)Q9lGQ?f+rMRn&PY4zP?FNEsRk2^D@@p$9J* zIfX%HCY^*e#|pP&bY#qcC-z_AC^`_hImc@(lTR;kl-#GXBJU}&ou55VVHDdw)BZv( zB;EwPI}qL`a+YFd{XPf4=XMB!7LR!*r_G~ndk57sAJe@ccR>)P2V;;)z>yvTr3XWh zU4+tDQRHDouyjzt=MjYma-uoVf=M9a1U|Dc5LwPdy=#F&(SnAjW6OqNj^J5sTzC9f zn!09eu8?4h3Vt5g&U^`MaY%u1i`x~IXbugMG4vJrk690VgAEMUF~>Vg1TeQY{54-H zS|t$nX8d&tC`k-F@zSx~=Y7UFPwWsQ5xrW|1DMEAv(Lb4v;}&cQU6OU8j>S1*ZnAY z2?&4y6V>T_D?4A=1cKt)PiA%qu3JR$g9?wO8IOBs;ITZu@jSU-2lZHN@;ZIX8WPkY z$isk6=?XLD1n%SZY?&(^YUV@DqkZit7b)E12PYW0N)sPlBThCM?{D)CZ8(qn8_#dy z9BUt~?>p{qz)D$3%FGJiY{m>|I^6nbjcKGZ?n_f@7@7~-P_1nGSJ>i)5_I2t`4O3d l;xcfx>D#ZmlEOk#qpjkI9>ALDAv<8Xa39M1ED1mOn>k^69S@N`+EA~He7Hi{nk0F$1peM Yd}UNp1+|D5*=e5l;N*fq5L~fmaIsOgKmY&$ diff --git a/Audio/es_ES_2/hotel.ambe b/Audio/es_ES_2/hotel.ambe deleted file mode 100644 index 76a76b4c71f886c1920bd4e6ab7d98e0e0b8d94a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%|~%D_f?VJnUE(E-MLa7sA_Bkt9L7jzLxhS|}@fKWs`hXZGkmc?>FcUDL3 z3q?7anTz6g_6m1Tbh0VV;D#A30)nI$poPU5ECR#TMYXcEY)O1n<}Zh75ml7OI!yhQLr^uIT1C5o%RdAJ^+q&7`d|C~ zo?DY-i#DKrZ2(j--b#6~`17(buA2 IU@pN`6~OJdxc~qF diff --git a/Audio/es_ES_2/india.ambe b/Audio/es_ES_2/india.ambe deleted file mode 100644 index 647db0a..0000000 --- a/Audio/es_ES_2/india.ambe +++ /dev/null @@ -1,2 +0,0 @@ -CD/d%$mcK!&c(7#Rd`)ۑX+ϧ yzic;pWdYMhuBLtVj>B=[^EbpknVA Qu,`ǣRHLe MAHjdyzZ -nq.d.J߲'j)XY1m m\ӽdA+a (c$kat [% \ No newline at end of file diff --git a/Audio/es_ES_2/juliet.ambe b/Audio/es_ES_2/juliet.ambe deleted file mode 100644 index 3d049bdf4610dc5ddbcffe58a4c6959713ff569a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_cm0_O>GZD=A9#GA)fQgvwC32fbm19bwA2@&Guf@5=A!AEnGgvDb}B1TiG zw%dXOH5}=wvpqn4iNL!cwp3e1Jf|q=ZL?K)Rx4cyriIuVD@kuH`WjUx+*}+g^p5sP zaFr-qc%r&Bxi9oZnl4?X-Ie1f6N@BI?kiX}aaQ6b6WbNF2LwgqM{~vLK$vO-fdF&G z(3F|LH-Q0Dl%=8XvJu^7BIl1dFxf=kOl8emq=4Q9tY{a|?!at24F^yo^FLv}P`m@E78;G=BNR)WX!Jp;JQ6D&tqYtHW*M~IHz&I_I3rz0y6C2Zvqbq553hNo&D8IF ztf3icanvq{Y!bfp?{|ea8G^xsXU{~1S9-Lkl2z|jh7owc*M?N3v*1HV`vE9J^}~iE sWTfYB?S8cKoiWSpr|;d9f`4F5xI2BM_@W^)4Ec$(T-}ENPzU{5aboY)@c;k- diff --git a/Audio/es_ES_2/kilo.ambe b/Audio/es_ES_2/kilo.ambe deleted file mode 100644 index bdb3beb5b3524cc2220711fe5db6eeb91e1d11bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWUU>%(MUlPx0Mwd$Zka5$Tr;nb_fBv)l!%?s|=qjhvMc=gzqmd}vS`I>7d znTC45w(n!RA$gdbhPUlIf1=25v=V}3FM$HN2f2|#HD3pV3oFT*HrEo>;H zRdD9BXbUNRj#1+iCwSm(Y?d(NqZufX2r0E62hfp7lU#9I(P)WmO!*2z<#*e_@Cv(2 z18zNZ9APTBX2n~Tq}`D@s!0P~C`27LD(q=3J|e;K#z>tENgQhuwmC?xElVkD5ak?h z;b>cYV%%S07?>`vLdhA)WE+SK`a-Tf|0SMY;UsW@Z0uC5P2vVn@_Dakx5|M)5IL`p W;k7Tu8~_a@|N}h diff --git a/Audio/es_ES_2/lima.ambe b/Audio/es_ES_2/lima.ambe deleted file mode 100644 index e45aae6f933623e0053a10779e20a6b03736af53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmV-T0kZz^ALS4_Zn5SqjP)BZxRKntK9kPa0>mU&Sg zVboS0a*HA|No>~O^(-JmK@G7uY^NMEViSL~N^HS>Ic^*Xo*ouu3MB@~2X{WLmS83A^P z*N*PHNjM>8pNH6qn;w4yaPZ&l35Oqr2VmrLSz+dB&`d9-Af<2>>t&@ zM-4?lR}tnYz(hIGpo)-{%D_c?)i`0Vam!xqnyh*ATvyy<$C$%JG8l4?Vga~reToGrTJL3$&TlB|s=MBhDe zv(!Th!2|AQWrwZ^Hr!;uW)#+(P|a;e;YTN=jX=&jV$wihY^V$X5_c?Pb$W=L5|2bU zVNkF{gw;<)C}LERB+%DQbq`}f8m!DfnFd`aWeb#8Kow*RLT3!^i~*g?kJ^OoZ(eM~ z%a7WG?QdRe#AF^SNg$vQL>LBaOMyn@TuGd&fx=gIqU)QDtCGT3QoyOb+`XseRTON! gl5?qR#6TcVY@&$rlEyLRx3CTv2vFuQaagY%2`Xd8B4Ih+Di{`O3F34t3JnEUy|hC8 zp-o;?5t-o`OO(SsV>>|GUpWOrckf?OnMmQ&$P%go@QoqidPro6Mn}%~4e^5nvtkjO zZ%`)MRI6qpuYoD#;~}^NP5UT)A~rLN0kOYu*AEQMfF?>Q$5-0*ZV9KU}y3YP?Rx(wTWK6#(g>j?28YicgkW;t`T zR}ZFZ9CwG3S|xui|7Z%>!872jKHn^-wYf&%Bm^s*iPdA18w{G3Si6XF1%8 zXY0qS*N^)1s5c1O+S$3-75SH_PKF1jS%bJisePtlg=n^qVeaMPa~ZwQU$ck!+=p5S zn(+yVp@3C>8Avm-_dwwWaIejU9fu*NWD~MGwx^$m<#uu@?e`IoG_Ap6hrJE|u9e0x zFihI#Re_7V15i!?)CWxNrBGrf&pc)vox*Shcqt!<^G3&IU?A+ykg%8K6Hp;kQU8Le B*l7R& diff --git a/Audio/es_ES_2/nine.ambe b/Audio/es_ES_2/nine.ambe deleted file mode 100644 index 1f13d1e..0000000 --- a/Audio/es_ES_2/nine.ambe +++ /dev/null @@ -1,5 +0,0 @@ -cTsE&ˑr`2E WxC0KB~̃߿iOf -*>7))"Pq'*1;qcGˈaD,S!#wOsap$o1$ s2)OVcy/ *UX-[y=1#\]8A~ -vuo&Jn(5|*>: '\*?~ -k4Oă5$O#垐D -jEU=Hgx(,ZD - #+Wkʂp'rrd307p# \ No newline at end of file diff --git a/Audio/es_ES_2/not-linked.ambe b/Audio/es_ES_2/not-linked.ambe deleted file mode 100644 index ee2bf20bdd589961c3c3f070944628a8f947db3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>Ay6XvI)qYAmzK)Vs$gR8c(1UBrs#1vNxWzbSo9z+?nyv9*#7ZGEE1nEN&_ zOlBq*lR}`{*=1y!;vn`ysfiv%UI z2#!tPCz2ph)`O+Yu@r$;n5+QYAHxOL0WQ?(5EVB-dH|D{VOYXYaCl&{w5Xg2Yc*K} zSKFGx0i@t4j1!b6FC(+^EEon!7uN)W#^A_aO*O?Pf~Dn*OMg*=V=Cfk&<`gu z;sJ!B9M}edK%-}bkW>s8YD1DCDDH$5$7&;%W&pn7R7f*5$429xOh~~|0r5T(g49@r zM@F-65o(#l4A(WxZQ@BKp=&{rOrmf+b1}Ua=Lhb$<`687`@uU zjK!BXooRQp`;l*NIYll-n1CM($!K3XM%W59xZ*iJeGvQy!Ky19uq8%6-aw}%D&cV( zLy>U0cRhhD7<^1D8qHdkEJ2%-$HKE8!+#c?Rt5j|U7}`@&>8g7wJyDH25IGF0I4~t zWT$DvfW3u(s3~n3!D0NTe7Y>dcGi89Kfxy?IU~n$b OWj0Kjrf&ioThisQE(@Lj diff --git a/Audio/es_ES_2/november.ambe b/Audio/es_ES_2/november.ambe deleted file mode 100644 index 081771c3e98bef7b6d564be6f35ea5a60425b4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|*Ph~))vM-BN4*NNvvQZ-(yJd{1e8bCiGn4^1)vPdD7e*P;NK|8HxahS(* z4kah=jj0}N1W9251oWxl^Z`y+Cndus@yLxVG(Z93Z9~6QePkyE@&VV%`&)4+PqaJy z4Ei}%4Q0KBdrrE2Aua>7nLo^@ST_P&@X|+mkVqSHB*1?x0I&`j7$epuLrCd43qMvp z5NV;eALlPdUjxb27#dd$L;kfIYRGWfdNk^n!~X(jxkg8>;17VqXTv2?-4vD7Oab_ymdT3vnpJY!bBYNvM$h5S3? zBPi4cr_`7*or5g!9(AJJ|RFgFnAVn8S82b;hgM5B1z9262R@=%PvoxH@cA0 z$obL==uh^vm8kdW;o>TgMt4p$$P&RSy-CX^LbRZGjY(ZD(sV{P741ejsWW^#taG&3! zuos|WBpVs7S;BP3AV*>RjFrmQsga8Nrl}S)mj@D{353HsbMr!UeyCUgR$%r)RnRgJ zwvuV&i)H0g;bTIox${4u&ZTlx|zRWeEa^fA4M#y3)W+r$Il_Mj63Dd9IovxLPHB4Ac?t>E^8HDNF1K}Sd=r(Xa7 diff --git a/Audio/es_ES_2/oscar.ambe b/Audio/es_ES_2/oscar.ambe deleted file mode 100644 index 829afef79dfa04b3d47819073f842dc094e33463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnE&rRO7XLkCCtf`-RKabr<&-jSx|6hTlVW4{oZ8I9ZYyrO^w$q+}}$&TS( zaK9iygvI$YKt#I+MWP&Z3@#ejY zpMmoa=OBD3<%2)9YJ_GOo(Jm;q9WsAqYB5@#WFXR3DmR=02}4+T6~=}Ien}5dh~q@HTR-Dm z1FRwt&!G(Re{kAECC-(5iEK@%OWc{D8|w)k%rRKJTYc$e)cqpJ>3RwKDS6B#eV%E1 zn+f%h?XiE6JR_&=D?$_X@M-k-V9NhQgq+>Sr PgKNF=)}teEc(6wSKf|;0 diff --git a/Audio/es_ES_2/papa.ambe b/Audio/es_ES_2/papa.ambe deleted file mode 100644 index 214819703afa8113c923ddadd8d7ab95f2efcaaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWSlp2B8!Oe-AEe%z&EF#*hfRL8sJXH-@Vs(R#$=K*y@3f)NRim5%|Edj z7TZ0-`~fRPpCYOtfvsh-8x2|)Md1Hcf2hN124XnL7`NrCY$0AZ{C25h$!T4BVbG@W zWZFJRb1^ra1!Zj-8zyZ z64u#&TRA_kW5yX>ufP5p4{~0-uP{BCGB%$!$QLDs6qc_HwbkEeoVNUy{cyoL@@neK>g)kA8 z4b60?HhkcNf>rB7qabN3lHq)$ diff --git a/Audio/es_ES_2/repeater.ambe b/Audio/es_ES_2/repeater.ambe deleted file mode 100644 index 45f7f17a4f9ebbdeb9293dec78474c19c4c55357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522 zcmV+l0`>inHG@M0Pi>xi!(_)}L@@lzqwsd;A!R_0xY4J}qbC&_x!SW(%U$2fuM6Wk z5d9$Cjz4wet5&)+ck(FDXp1@pOM_aM%fRnHZ*0K7-HZb|Z*?oDkp5;43_Dj2GrECK z3z-^cZxobV&a$Iv1aUc@4wvPt3lbD(n_HJFmpBn5WxHL67>8(6K{TonByCAbQDHFY zb_ZyCX<-5rkm#fGV=f$GJ`wT2oQw#EZNn5|K(Q1Ulx^b@R07f`Ndj!EM@bom$s1=2 zt&FR+l+oc$mZ^tA81+WHA znoXo8G#GB@EpAQ4kI$J9Tv{1Er>q+~eM&5E2wK)_qR~5Su|Y`0Lu{P-I@AGfqodA- z`U&#@3M(o16A2#o3 zf`J1FGel>$@&?mfFu{>}+~sr1RBR>7jWEPYcruJOCp(pcp+^NJA)}+ zh970a^M8maEG(h~yOA!hYp7bti7N6*&kD=1;#Zafe%cSL)CvKa%^0=~u}uBcD-CLp zp>r;<#vgIW;l>wRQtdTgUZjxBK6N_|wg1GmyJC2x>43MayB2ikQQ!L2tL6uDQE%BA M*1E?VI8q8~kQ9!X2_6O>MBNyQ)(fEKe_#mosVKV=RMdfHLWE zn9qAsZK1#3=FPlqL<^PG-c)LCerId9sWzAQCtpPgkdf&FeP3K=I)#Sl2QGUi=_`52 ze%CtIHjG$hwC<%V9ueL}LWQq90KW&IAamElw9S_>h6NGOTD9R1Go~al@C=6I8a3Nt zCW8eETvAZD0#bVq_2b4@j|3NehmiR^Eg?fAEVT-K@qBVWeoYvH@bXD_vr1u+)*%CDEb?De-DGsi zfe*oaR`_-ynUYJFMqB3pIfoTmhea9Hzeu%I7{5j4g?*@5VmY5iqo-epXkke10pXT3 zY+3wD-U6q!CrlW)Ig3YuYKDZpgDUb0F?z}U*wG4=DSLQ^7-JY3V}n*5S;pI` zo)F+v)ni#;4fZSJH-Dp{+}FY^#W#B!^MilF9_JGsI>p8<*g4?^Kd)a{9q1b31wM~` zPiy!X<3SvaUrRm>L42#ByD;E(7!_`53hXB8vk65+4aDEEY#3SvVk*gQm!YaPjae7g zj;2~%7QP#DjdOE_R%Ol~1@pvHY2pI>MPuaZXcWw4pC&~<)T4@fNi$htR#K(O$1F;1 z))P^YwVhpE;zcA&prxlQ9i=4$Lt)c->_o;zAPG|sKW%F{tgZg3%vDb=I);m)ZgbHZ z94%0yxMW~QOt4Epl8`3=R~*s|bfW$DRI7P}Y*UpOGatD-ta(K9vK!B~Ug|3{)FIrX zkv+{!8Maf)S?hpi2&Cs}VWUIR5>Mn>>8&<;;s$Sqf+69??HcTF;c8DA&-*#5ZtqGY h%v1;%nhl9$nmg_%3ybG628Jnia)AYbMRiO){aIKFv#0<7 diff --git a/Audio/es_ES_2/sierra.ambe b/Audio/es_ES_2/sierra.ambe deleted file mode 100644 index b03f831c1771d45f7297f7b704f3ffe14cea5f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmV;q0Y?7N9j71^;t_f$#0sJWa!hb>iM4v=AQBXWC1Y!^m-ivK(A9VCXQehzv9h*i zwc)2x~sjef#Q`9v` zWM9=T{KBC2YuV8~MqQ76GdV+nTto|lk)K5hYfEBq0jgssXdQV&K_RMh135klF$71i z4d+PnGT$Xt`WN}ErZM~{bgNVR|BzvyKt;$uKHFF_?*=5VH16J!ckv}t-&CLw69LQz zXQ^_{`GaBDKs?P=y>po%nqsl`*h7bQSR@HBq*HD69UVIfVDKko9o$L^2s(~nvk@0v z{4UIdyZX+~8^{y#^skJ-HqS?*p?zEMn8BWT@SP`+V&Kt)K24Sm6- zDMzU}+HUd3#&HXI9?wX!mIxIk_Xws9^;({U8!LGCXtf>C02s$;yegtj1<3hSIJ*vt jQtT_qSF_KDFhIAy!#%LxgivO%?V@d@%78KhZ|SL`E9T4z diff --git a/Audio/es_ES_2/six.ambe b/Audio/es_ES_2/six.ambe deleted file mode 100644 index f154acf..0000000 --- a/Audio/es_ES_2/six.ambe +++ /dev/null @@ -1 +0,0 @@ -؂!2GPTH;A>/ cp8Y j۹}bPdnQ*K }1#eF|smA $iq 10:(rz> $ +dohƈF~;w^6iAce> qAE(x 0VG2WCj@&A*3S2?89_CXcXQZa+ZLiS;GlVxF`(szpnW~6+rZJSq!21SNUt!&FR*g+$; zH408Z6x%^?(qtP70Vc_DQ_(gWO>%ES2L*rWyGt*9a4cUOY~q!bXe$UFoFK$^bq=ur z>N>UV+9(}`6=LKBEI06I^G7C;=F3avd!=H>(($+dTrBYdm-azplnhAT1LKEsUO0(a zsU&o^buh1Fd#ffF=T`&R1#Zt6G+2+5M+FX?TogLuP$u4N{8zRWi-B6~J&#iISxk_` zdmQ>p)*hlc_jE3?OVuLk5uKYpkZH3M&Jo?NSdU7CSC~y94O!?(u0(>4z4{1<#so#i POmkyeli@)nYG8p`yydBJ diff --git a/Audio/es_ES_2/this-is.ambe b/Audio/es_ES_2/this-is.ambe deleted file mode 100644 index 829c495c6e09657d9d78a64cd4dbcaa09390fd9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmV<30V4jch30irO^?-A*YK@QH#UlcQBmq&?4JK>r4JFi9U{GtXNb$fY$F1O4VuvY zbF5$#>0UVB4{)wj`HoeWwk1=HDP5Kl@crv6AWtu&0!wcuKT9mbPy10`(ZB+PJ!|#r zh)>Hyfm2#ql)TugBF7OPF?7v#nFED)SD1t`9K#Hqc|<~A!s?i_`%N@Kv~plqYRniA z93Y1Xlz8P-GZvB*V=F{E%#542N7OuBe1`d&>r`4!F94d2F*eN$9ZwMx_nrT3a7aA1vY z18sJVGr45iaK2y{`z%ZC9&^hBD}|{JsP|N)VU*PQ2wJB?lUZQo+053BRcu&vw9FXP zS0o-jG{ex`)!Z@(IYYB7%#0O7Y;AT;j6feR19%VeOtpxbT@xPWa1Mb?%FWDYhIU+_ z;GtssK%jLUYn95%tX+ZzI$gU3eeEyD7fe)mV&|?-fpslu&0!16;l*cbGKg^v4ouSL zpaAfDE6MVQWg_Vh?GuZGp;1^GJQnf!^Mw><%vi5M%TvQNB*!sF^n&fCRY!s7hkc(+ T!XpC2JpV1W@tqL;UHUpzZ zKVwN@_k`)WO%=QXOW(&oZi!KkazfZ1TkIZSyh3K#I(YsaLD*n#nlr3Nj&}WiG@Cw$ z;mZQ-2X(q<>HCCgb3-GTb$3lqTO?)in@|p`^BNupUhzmP&#!Kwc|oGJV?i|?sBI?2 zXl(NwUY`!~kYMB?87}%u_dnoS7|3)dR zNrVO(#+(}V`8LyCBq E)WOM)dH?_b diff --git a/Audio/es_ES_2/two.ambe b/Audio/es_ES_2/two.ambe deleted file mode 100644 index 112c6257200832630e49765c61aabdb70125d430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjuHh@9|O(?!^<45Np10b2tkbGaj0v8L@@WWj{E^4~W@=xz-J$<7(U*!j* zUh`=Pd|-`eGc2-AJP_rXp~Y)bPlDa4{V$@Ce;D0TIBlrKdc?QUweQ29KM8ow@!tVLCOwp`c` z{DLht|Ln)@7 z8R21Q(esPa(_)5Uut62Fdb%NvSq3So`n2jOgJ&gXt&(=p*MI>K2-6Wqpp@kSc6DS? z$)?+)U=U1*?(+4B=SM>ZUHMDIs>cTaR$tvO;OC-nVhYCxb+fhS5GG+1bkD%_pfDg9 Y;ROfuiN|DcR(bn*mFt24aSn*NgK~7YivR!s diff --git a/Audio/es_ES_2/uniform.ambe b/Audio/es_ES_2/uniform.ambe deleted file mode 100644 index 1da7006..0000000 --- a/Audio/es_ES_2/uniform.ambe +++ /dev/null @@ -1,4 +0,0 @@ -CEM9sGrͳD`fWcĢ$C>PCbA!GBJ5^Fuz -11hq2'ŔA(2f4P!Eƺhq#'ĄrB#SǘAESa3ecэXU&wUEfer@{CI1'ri}FduT[fB yU&,ᓋ\m{K4E^Na+`Qb+ \ y:+.ðb. <_a'89s%] xmٟ+/'д?aR -"{Fv[.R# -5)>/xSiYR  }_WLfD }DF8S0MUJM><.> (Z[\plt/nB[\`C]HoRN|=HO\1m:ىhJ!Z38~bt<"77gps2#ʣ0zڢc3>ϸ \ No newline at end of file diff --git a/Audio/es_ES_2/victor.ambe b/Audio/es_ES_2/victor.ambe deleted file mode 100644 index 1e409032a1876d6d4f83be7a8f5de5ce3332a9fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmV-}0et?bO2=UVcs+s1eU;BERs%?Lf6joH^#e0ta8(%znrTK%eL*>l^7R=ZWC}~e zIz$?~xvA4cz!_yuHM1F=m5@pfKm=`u6_F5FUt%hy5{!&ABfv&|x$TnIk#x63JH+*X z0lsmAVmq@5k_r$}i7E|Fh>i&^3=j{;Cc%7QdrBgQ1!ZJS3GV(nspG7fW3KN(=fc#> zb&NQ3vE7Xd1Vq(3r;?P%Fk^BSP|3jbqA~(L&}0Xbr^hy6Q8W-p0P$1N+tEt;zg59ScZAsl z&2B=`V^to@2_Q0NzZ0!Yid^PEQLZ-WqS{g!4r8n+Pv$4X@7!jZ2(YA-42)}H-R3q= zm4+wtES{rQI>D%r)D66VQaQ5Qfx#}1f;2j$sn?;Q6u=`}rko>k@pGqR)B_XH8X_U% z!FTuzc9_n`fI?PR42A!km&9gLNc^w?os{GTP+yKY) diff --git a/Audio/es_ES_2/x-ray.ambe b/Audio/es_ES_2/x-ray.ambe deleted file mode 100644 index 0b6e2b7..0000000 --- a/Audio/es_ES_2/x-ray.ambe +++ /dev/null @@ -1,4 +0,0 @@ -̒T!qWM%[ |dʿGwS^ ep|męgGqm!$@}혽.?Vf/*Ts`'/J+Q`GhP;#+C ]DcB c%pb4gJTWңE7M' | <;9Aae'%s^#X7Pq@T/:Ɔgg+-yYHoZ< ;Y9֢/lcj[=kY,29z #y -k &[5*"-XYDAE4˴ydͼ9' NA \ No newline at end of file diff --git a/Audio/es_ES_2/yankee.ambe b/Audio/es_ES_2/yankee.ambe deleted file mode 100644 index 41345cb..0000000 --- a/Audio/es_ES_2/yankee.ambe +++ /dev/null @@ -1,3 +0,0 @@ -,rv%{g[6q47vJ1$p{i}/sA3:X  -_^%4Z 88jh<E9YH#&?Č?":r%V7a"VF\ ic[UsEb-D`CC#e wC,Gݔ$bQG8(*&w  ].0k:.Tw{nJ| }jCZNT:(]^W^A;Z s}9_Gf*(9.,b[F*l`rHfn $QmpY&F5 gHg&qs:APx -F:H,x\:~/xH Z̻@<* a~ !!|&7*#$uw~`hh \ No newline at end of file diff --git a/Audio/es_ES_2/zero.ambe b/Audio/es_ES_2/zero.ambe deleted file mode 100644 index 955e4478942cd24a562c46e0dc63291cb82ed8a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%~Ghv#MzN$jO?486hyWo!!@nGLSOV*y+_4B0BV#3y65ITm-7fWRa|_!oIa z!N=l2X!are3-RT{Kuh#A%{}1o-~*LCX?~s2;o<|64+?MGr_91&@pv)xf9B`M60p^2 zM|Y!;hccCO+8c64{&<+ZttK-8Yb8Q~G)WLi;iQC1t2b=&F?!y$LkVF+!pTUvm#=PI&Qz<_ktG zbJ(SNXpKAyM3(6{Q!)Su_h!JY6Vf%yd4*ut^3kA;cnF_H#kOpzY-D-t0n?-uTzS2h zBLE0$s|q7Ypd}ArIH3~LX@+$y$8HHddo8y_EruHiDJUF=A}z=~Cdu%qJE;xYV$2EJ zH%gyrwid4$G;SM+=QK9PDKrAL1E(f*!F=U~@*Rd$Mxr%qcb$ahH&O}h$6=%o)GQ$= zbBp1&`=CQ2Pnycsruv{`0Sl?DwY2zxBSJizn&Rh*#YS;pdFpSZ%Ysq>UHQrOx9fm# I0UnI_=cF9Ok^lez diff --git a/Audio/es_ES_2/zulu.ambe b/Audio/es_ES_2/zulu.ambe deleted file mode 100644 index 951af14c8029fc9f8446edcd9e9cca00ea2ba117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxMGwB%QESkII}QK^?mQbgoq8=$4fQeqHP70HvQ#ZqKv7c=kE#DY>nDdb~g zy$axHQvRJV;i?pcaM~sB(94|%z!ZC%H23TM%ZsB*e}w_|^d6PR6XIIGyah%U1ykf4*WYFl>3$aXU>uk+)Y)7_w?!DG z<&adI6{8?h<-wGVl4Q|FRK&Mq3qfkC_{-%x z;R$dFkIadOTZ3&=I_7N2TMWo$CK(IuVUr)|Wk)*;%2D$h?_g3{!`v%xPO2bP4pJHw z3l8aUyMHoAOS>EVYgv2~mE-U%f=iQf$w1xPc)v-80Ld6~Z65YW{ZseSRwydtZ`&6Q qrU~|d6|yk|2nqacu{5J|Wl4LS38+fO5JGM_ Date: Mon, 6 Mar 2023 18:21:16 +0000 Subject: [PATCH 17/35] Lets see if ARM build now works --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a319dfd..0a3436b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,8 +26,8 @@ build-dev: # This job runs in the build stage, which runs first. # - docker buildx build --no-cache -f Dockerfile-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . #- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . - - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . +# - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:development-latest -t $CI_REGISTRY/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . - echo "Compile complete." @@ -75,8 +75,8 @@ build-release: # This job runs in the build stage, which runs first. script: - echo "Compiling the code..." - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . - - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . + - docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/arm/v7,linux/amd64,linux/i386,linux/arm64 --push . + #- docker buildx build --no-cache -f docker-configs/Dockerfile-ci -t hacknix/freedmr:latest -t gitlab.hacknix.net:5050/hacknix/freedmr:latest -t hacknix/$CI_COMMIT_TAG-with-proxy -t gitlab.hacknix.net:5050/hacknix/freedmr:$CI_COMMIT_TAG-with-proxy -t hacknix/freedmr:development-latest -t gitlab.hacknix.net:5050/hacknix/freedmr:development-latest --platform linux/amd64,linux/i386 --push . From d3ca3d0e0f6e85078a1f2e48540623df4bed0326 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 13 Mar 2023 00:35:35 +0000 Subject: [PATCH 18/35] Add blacklist on rate drop Fix es_ES voices --- bridge_master.py | 1 + hblink.py | 4 ++++ i8n_voice_map.py | 42 +----------------------------------------- 3 files changed, 6 insertions(+), 41 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 68fb1f6..82b1df0 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -1499,6 +1499,7 @@ class routerOBP(OPENBRIDGE): #Rate drop if self.STATUS[_stream_id]['packets'] > 18 and (self.STATUS[_stream_id]['packets'] / self.STATUS[_stream_id]['START'] > 25): logger.warning("(%s) *PacketControl* RATE DROP! Stream ID:, %s TGID: %s",self._system,int_id(_stream_id),int_id(_dst_id)) + self.proxy_BadPeer() return #Duplicate handling# diff --git a/hblink.py b/hblink.py index dc5aafc..7e03f2e 100755 --- a/hblink.py +++ b/hblink.py @@ -802,6 +802,10 @@ class HBSYSTEM(DatagramProtocol): _bltime = str(_bltime) _prpacket = b''.join([PRBL,peer_id,_bltime.encode('UTF-8')]) self.transport.write(_prpacket,sockaddr) + + def proxy_BadPeer(self): + for _pi in self._peers: + self.proxy_IPBlackList(_pi,self._peers[_pi]['SOCKADDR']) def validate_id(self,_peer_id): diff --git a/i8n_voice_map.py b/i8n_voice_map.py index 894de65..cd215b9 100644 --- a/i8n_voice_map.py +++ b/i8n_voice_map.py @@ -121,47 +121,7 @@ voiceMap = { }, 'es_ES': { - '1': 'one', - '2': 'two', - '3': 'three', - '4': 'four', - '5': 'five', - '6': 'six', - '7': 'seven', - '8': 'eight', - '9': 'nine', - 'A': 'alfa', - 'B': 'bravo', - 'C': 'charlie', - 'D': 'delta', - 'E': 'echo', - 'F': 'foxtrot', - 'G': 'golf', - 'H': 'hotel', - 'I': 'india', - 'J': 'juliet', - 'K': 'kilo', - 'L': 'lima', - 'M': 'mike', - 'N': 'november', - 'O': 'oscar', - 'P': 'papa', - 'Q': 'quebec', - 'R': 'romeo', - 'S': 'sierra', - 'T': 'tango', - 'U': 'uniform', - 'V': 'victor', - 'W': 'whiskey', - 'X': 'x-ray', - 'Y': 'yankee', - 'Z': 'zulu', - 'to': 'silence', - 'notlinked': 'not-linked', - 'linkedto': 'linked-to', - 'allstar-link-mode': 'alfa' - }, - 'es_ES_2': { + '0': 'zero', '1': 'one', '2': 'two', '3': 'three', From 9176665347cd40be3745570b0c327430bcd129e8 Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 20 Mar 2023 00:30:49 +0000 Subject: [PATCH 19/35] Report keyerror ir reset_static_tg() better --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 82b1df0..c323e4a 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -263,7 +263,7 @@ def reset_static_tg(tg,ts,_tmout,system): BRIDGES[str(tg)] = bridgetemp except KeyError: - logger.exception('(ERROR) KeyError in reset_static_tg() - bridge gone away?') + logger.exception('(%s) KeyError in reset_static_tg() - bridge gone away? TG:',system) return def reset_default_reflector(reflector,_tmout,system): From 13d642402e273338405645742a1cdbe7ea7d14a5 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 10:58:47 +0000 Subject: [PATCH 20/35] Enhance the bridge debugger --- bridge_master.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index c323e4a..c96eb0d 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -263,7 +263,7 @@ def reset_static_tg(tg,ts,_tmout,system): BRIDGES[str(tg)] = bridgetemp except KeyError: - logger.exception('(%s) KeyError in reset_static_tg() - bridge gone away? TG:',system) + logger.exception('(%s) KeyError in reset_static_tg() - bridge gone away? TG: %s',system,tg) return def reset_default_reflector(reflector,_tmout,system): @@ -393,12 +393,25 @@ def bridgeDebug(): logger.info('(BRIDGEDEBUG) Running bridge debug') for system in CONFIG['SYSTEMS']: bridgeroll = 0 - for bridge in BRIDGES: - for enabled_system in BRIDGES[bridge]: - if enabled_system == system: + dialroll = 0 + activeroll = 0 + for _bridge in BRIDGES: + for enabled_system in BRIDGES[_bridge]: + if enabled_system['SYSTEM'] == system: bridgeroll += 1 - if not bridgeroll: - logger.warning('{BRIDGEDEBUG) system %s has no bridges', system) + if enabled_system['ACTIVE']: + if _bridge[1] == '#': + dialroll += 1 + activeroll += 1 + else: + activeroll += 1 + if bridgeroll: + logger.info('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + + if dialroll > 1 : + logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - needs fixing',system, dialroll) + + def kaReporting(): logger.debug('(ROUTER) KeepAlive reporting loop started') From a728854789e83994d6dfe4b11344868159d32671 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 11:22:35 +0000 Subject: [PATCH 21/35] fix trace --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index c96eb0d..827e197 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -400,7 +400,7 @@ def bridgeDebug(): if enabled_system['SYSTEM'] == system: bridgeroll += 1 if enabled_system['ACTIVE']: - if _bridge[1] == '#': + if _bridge and _bridge[0:1] == '#': dialroll += 1 activeroll += 1 else: From d9f6a6506f65222f6f14f75836e12411d4f3dd54 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 12:59:54 +0000 Subject: [PATCH 22/35] Add fix routine to bridge debug --- bridge_master.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 827e197..05942c3 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -121,7 +121,7 @@ def config_reports(_config, _factory): logger.info('(REPORT) %s systems have at least one peer',i) logger.info('(REPORT) Subscriber Map has %s entries',len(SUB_MAP)) - logger.info('(REPORT) HBlink TCP reporting server configured') + logger.info('(REPORT) FreeDMR TCP reporting server configured') report_server = _factory(_config) report_server.clients = [] @@ -406,10 +406,26 @@ def bridgeDebug(): else: activeroll += 1 if bridgeroll: - logger.info('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) if dialroll > 1 : - logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - needs fixing',system, dialroll) + logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) + times == {} + for _bridge in BRIDGES: + for enabled_system in BRIDGES[_bridge]: + if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': + times[enabled_system['TIMER']] == _bridge + ordered == sorted(keys(times)) + ordered.pop() + for _bridge in ordered: + for _entry in BRIDGES[_bridge]: + if _entry['SYSTEM'] == system: + _entry['ACTIVE'] = False + + + + + From a653e7d7c4b2598d428d7304f56e9cf615f5efa9 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 13:10:31 +0000 Subject: [PATCH 23/35] fix == = = --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 05942c3..2aa7599 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -410,7 +410,7 @@ def bridgeDebug(): if dialroll > 1 : logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) - times == {} + times = {} for _bridge in BRIDGES: for enabled_system in BRIDGES[_bridge]: if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': From 3e7cc7ea712fc03a334dd8eda6a4ffcdd886d7c8 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 13:13:41 +0000 Subject: [PATCH 24/35] fkljlkj --- bridge_master.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bridge_master.py b/bridge_master.py index 2aa7599..9cd8c6d 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -419,6 +419,8 @@ def bridgeDebug(): ordered.pop() for _bridge in ordered: for _entry in BRIDGES[_bridge]: + if _entry['SYSTEM'][0:3] == 'OBP': + continue if _entry['SYSTEM'] == system: _entry['ACTIVE'] = False From 370a762bed938a6f65cbbef2b5a96b0ee441016b Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 13:20:42 +0000 Subject: [PATCH 25/35] Revert "fkljlkj" This reverts commit 3e7cc7ea712fc03a334dd8eda6a4ffcdd886d7c8. --- bridge_master.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 9cd8c6d..2aa7599 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -419,8 +419,6 @@ def bridgeDebug(): ordered.pop() for _bridge in ordered: for _entry in BRIDGES[_bridge]: - if _entry['SYSTEM'][0:3] == 'OBP': - continue if _entry['SYSTEM'] == system: _entry['ACTIVE'] = False From 4ce46b299d9fe886b2e6ff94ee39c618024f107f Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 13:20:45 +0000 Subject: [PATCH 26/35] Revert "fix == = =" This reverts commit a653e7d7c4b2598d428d7304f56e9cf615f5efa9. --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 2aa7599..05942c3 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -410,7 +410,7 @@ def bridgeDebug(): if dialroll > 1 : logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) - times = {} + times == {} for _bridge in BRIDGES: for enabled_system in BRIDGES[_bridge]: if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': From 1ba044b48a95eb01464fa2d7c8bcc2811ff5b999 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 13:20:46 +0000 Subject: [PATCH 27/35] Revert "Add fix routine to bridge debug" This reverts commit d9f6a6506f65222f6f14f75836e12411d4f3dd54. --- bridge_master.py | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 05942c3..827e197 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -121,7 +121,7 @@ def config_reports(_config, _factory): logger.info('(REPORT) %s systems have at least one peer',i) logger.info('(REPORT) Subscriber Map has %s entries',len(SUB_MAP)) - logger.info('(REPORT) FreeDMR TCP reporting server configured') + logger.info('(REPORT) HBlink TCP reporting server configured') report_server = _factory(_config) report_server.clients = [] @@ -406,26 +406,10 @@ def bridgeDebug(): else: activeroll += 1 if bridgeroll: - logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + logger.info('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) if dialroll > 1 : - logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) - times == {} - for _bridge in BRIDGES: - for enabled_system in BRIDGES[_bridge]: - if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': - times[enabled_system['TIMER']] == _bridge - ordered == sorted(keys(times)) - ordered.pop() - for _bridge in ordered: - for _entry in BRIDGES[_bridge]: - if _entry['SYSTEM'] == system: - _entry['ACTIVE'] = False - - - - - + logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - needs fixing',system, dialroll) From 77815f31822738665ec09d462f3a9609a77360e6 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 17:34:15 +0000 Subject: [PATCH 28/35] Fix bridge debug and fix routine --- bridge_master.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 9cd8c6d..3effcd7 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -388,13 +388,14 @@ def statTrimmer(): if CONFIG['REPORTS']['REPORT']: report_server.send_clients(b'bridge updated') -#Identify systems with no bridges +#Debug and fix bridge table issues. def bridgeDebug(): logger.info('(BRIDGEDEBUG) Running bridge debug') for system in CONFIG['SYSTEMS']: bridgeroll = 0 dialroll = 0 activeroll = 0 + statroll = 0 for _bridge in BRIDGES: for enabled_system in BRIDGES[_bridge]: if enabled_system['SYSTEM'] == system: @@ -405,6 +406,8 @@ def bridgeDebug(): activeroll += 1 else: activeroll += 1 + if enabled_system['TO_TYPE'] == 'STAT': + statroll += 1 if bridgeroll: logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) @@ -414,15 +417,20 @@ def bridgeDebug(): for _bridge in BRIDGES: for enabled_system in BRIDGES[_bridge]: if enabled_system['ACTIVE'] and _bridge and _bridge[0:1] == '#': - times[enabled_system['TIMER']] == _bridge - ordered == sorted(keys(times)) - ordered.pop() - for _bridge in ordered: - for _entry in BRIDGES[_bridge]: - if _entry['SYSTEM'][0:3] == 'OBP': - continue - if _entry['SYSTEM'] == system: - _entry['ACTIVE'] = False + times[enabled_system['TIMER']] = _bridge + ordered = sorted(times.keys()) + _setbridge = times[ordered.pop()] + logger.warning('(BRIDGEDEBUG) setting %s dial bridge to %s as this bridge has the longest timer set to run',system, _setbridge) + + for _tstamp in ordered: + for _bridge in times.values(): + for _entry in BRIDGES[_bridge]: + + if CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': + if _entry['SYSTEM'] == system: + _entry['ACTIVE'] = False + + logger.info('(BRIDGEDEBUG) The server currently has %s STATic bridges',statroll) From 5b18073e3ab9fbb895edbf21b33b05011a70c003 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 17:39:08 +0000 Subject: [PATCH 29/35] Make bridge debugging and fixing the default --- config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.py b/config.py index f845177..8a17948 100755 --- a/config.py +++ b/config.py @@ -148,7 +148,7 @@ def build_config(_config_file): 'SERVER_ID': config.getint(section, 'SERVER_ID', fallback=0).to_bytes(4, 'big'), 'DATA_GATEWAY': config.getboolean(section, 'DATA_GATEWAY', fallback=False), 'VALIDATE_SERVER_IDS': config.getboolean(section, 'VALIDATE_SERVER_IDS', fallback=True), - 'DEBUG_BRIDGES' : config.getboolean(section, 'DEBUG_BRIDGES', fallback=False) + 'DEBUG_BRIDGES' : config.getboolean(section, 'DEBUG_BRIDGES', fallback=True) }) if not CONFIG['GLOBAL']['ANNOUNCEMENT_LANGUAGES']: From 2e87da26337d3f1d146d7bac7b66075c918abd84 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 17:42:15 +0000 Subject: [PATCH 30/35] Tidy up bride debugging --- bridge_master.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 601d91b..6b9917a 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -391,11 +391,11 @@ def statTrimmer(): #Debug and fix bridge table issues. def bridgeDebug(): logger.info('(BRIDGEDEBUG) Running bridge debug') + statroll = 0 for system in CONFIG['SYSTEMS']: bridgeroll = 0 dialroll = 0 activeroll = 0 - statroll = 0 for _bridge in BRIDGES: for enabled_system in BRIDGES[_bridge]: if enabled_system['SYSTEM'] == system: @@ -409,7 +409,7 @@ def bridgeDebug(): if enabled_system['TO_TYPE'] == 'STAT': statroll += 1 if bridgeroll: - logger.info('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + logger.warning('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) if dialroll > 1 : logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) @@ -430,7 +430,7 @@ def bridgeDebug(): if _entry['SYSTEM'] == system: _entry['ACTIVE'] = False - logger.info('(BRIDGEDEBUG) The server currently has %s STATic bridges',statroll) + logger.info('(BRIDGEDEBUG) The server currently has %s STATic bridges',statroll) def kaReporting(): From 8517b7380dcc537925e0cdbac391a7473b8458ce Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 17:49:14 +0000 Subject: [PATCH 31/35] hh --- bridge_master.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 6b9917a..38036d5 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -409,7 +409,7 @@ def bridgeDebug(): if enabled_system['TO_TYPE'] == 'STAT': statroll += 1 if bridgeroll: - logger.warning('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) + logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) if dialroll > 1 : logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) From 3d3cae5e1d50a164d598e5cf2ad7eb12659cc610 Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 22 Mar 2023 17:59:42 +0000 Subject: [PATCH 32/35] Fix extranous logging in bridge debug --- bridge_master.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index 38036d5..df17bce 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -411,7 +411,7 @@ def bridgeDebug(): if bridgeroll: logger.debug('(BRIDGEDEBUG) system %s has %s bridges of which %s are in an ACTIVE state', system, bridgeroll, activeroll) - if dialroll > 1 : + if dialroll > 1 and CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': logger.warning('(BRIDGEDEBUG) system %s has more than one active dial bridge (%s) - fixing',system, dialroll) times = {} for _bridge in BRIDGES: @@ -420,7 +420,8 @@ def bridgeDebug(): times[enabled_system['TIMER']] = _bridge ordered = sorted(times.keys()) _setbridge = times[ordered.pop()] - logger.warning('(BRIDGEDEBUG) setting %s dial bridge to %s as this bridge has the longest timer set to run',system, _setbridge) + if CONFIG['SYSTEMS'][system]['MODE'] == 'MASTER': + logger.warning('(BRIDGEDEBUG) setting %s dial bridge to %s as this bridge has the longest timer set to run',system, _setbridge) for _tstamp in ordered: for _bridge in times.values(): From 5e6c533b94a00334ab826334a9191b59f4ea6a0c Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 5 Apr 2023 01:09:19 +0100 Subject: [PATCH 33/35] Allow 1000 bytes of tolerance in downloaded files --- bridge_master.py | 1 + hblink.py | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bridge_master.py b/bridge_master.py index df17bce..509a10e 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -406,6 +406,7 @@ def bridgeDebug(): activeroll += 1 else: activeroll += 1 + if enabled_system['TO_TYPE'] == 'STAT': statroll += 1 if bridgeroll: diff --git a/hblink.py b/hblink.py index 7e03f2e..b232438 100755 --- a/hblink.py +++ b/hblink.py @@ -66,6 +66,8 @@ from urllib.request import urlopen import shutil import csv +import math + logging.TRACE = 5 logging.addLevelName(logging.TRACE, 'TRACE') @@ -1347,7 +1349,7 @@ def mk_aliases(_config): # Make Dictionaries #Peer IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE'] + '.bak'),getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['PEER_FILE']), rel_tol=1000): raise Exception('backup peer_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['PEER_FILE']])) != checksums['peer_ids']: @@ -1375,7 +1377,7 @@ def mk_aliases(_config): #Subscriber IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE'] + '.bak'), getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['SUBSCRIBER_FILE']),rel_tol=1000): raise Exception('backup subscriber_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['SUBSCRIBER_FILE']])) != checksums['subscriber_ids']: @@ -1406,7 +1408,7 @@ def mk_aliases(_config): #Talkgroup IDs try: - if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') and (getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') > getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'])): + if exists(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak') and not math.isclose(getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE'] + '.bak'), getsize(_config['ALIASES']['PATH'] + _config['ALIASES']['TGID_FILE']),rel_tol=1000): raise Exception('backup talkgroup_ids file is larger than new file') try: if blake2bsum(''.join([_config['ALIASES']['PATH'], _config['ALIASES']['TGID_FILE']])) != checksums['talkgroup_ids']: From 93a3fc244338ebc5c5a79ecd55e167fa519afd68 Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 15 Apr 2023 12:27:58 +0100 Subject: [PATCH 34/35] Add docker freedmr.cfg example --- docker-configs/freedmr.cfg | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 docker-configs/freedmr.cfg diff --git a/docker-configs/freedmr.cfg b/docker-configs/freedmr.cfg new file mode 100644 index 0000000..50d2194 --- /dev/null +++ b/docker-configs/freedmr.cfg @@ -0,0 +1,104 @@ +#This empty config file will use defaults for everything apart from OBP and HBP config +#This is usually a sensible choice. + +#I have moved to a config like this to encourage servers to use the accepted defaults +#unless you really know what you are doing. + +[GLOBAL] +#If you join the FreeDMR network, you need to add your ServerID Here. +SERVER_ID: 0 + +[REPORTS] + +[LOGGER] + +[ALIASES] + +[ALLSTAR] + +#This is an example OpenBridgeProtocol (OBP) or FreeBridgeProtocol (FBP) configuration +#If you joing FreeDMR, you will be given a config like this to paste in +[OBP-TEST] +MODE: OPENBRIDGE +ENABLED: False +IP: +PORT: 62044 +#The ID which you expect to see sent from the other end of the link. +NETWORK_ID: 1 +PASSPHRASE: mypass +TARGET_IP: +TARGET_PORT: 62044 +USE_ACL: True +SUB_ACL: DENY:1 +TGID_ACL: PERMIT:ALL +#Should always be true if using docker. +RELAX_CHECKS: True +#True for FBP, False for OBP +ENHANCED_OBP: True +#PROTO_VER should be 5 for FreeDMR servers using FBP +#1 for other servers using OBP +PROTO_VER: 5 + +#This defines parameters for repeater/hotspot connections +#via HomeBrewProtocol (HBP) +#I don't recommend changing most of this unless you know what you are doing +[SYSTEM] +MODE: MASTER +ENABLED: True +REPEAT: True +MAX_PEERS: 1 +EXPORT_AMBE: False +IP: 127.0.0.1 +PORT: 54000 +PASSPHRASE: +GROUP_HANGTIME: 5 +USE_ACL: True +REG_ACL: DENY:1 +SUB_ACL: DENY:1 +TGID_TS1_ACL: PERMIT:ALL +TGID_TS2_ACL: PERMIT:ALL +DEFAULT_UA_TIMER: 10 +SINGLE_MODE: True +VOICE_IDENT: True +TS1_STATIC: +TS2_STATIC: +DEFAULT_REFLECTOR: 0 +ANNOUNCEMENT_LANGUAGE: en_GB +GENERATOR: 100 +ALLOW_UNREG_ID: False +PROXY_CONTROL: True +OVERRIDE_IDENT_TG: + +#Echo (Loro / Parrot) server +[ECHO] +MODE: PEER +ENABLED: True +LOOSE: False +EXPORT_AMBE: False +IP: 127.0.0.1 +PORT: 54916 +MASTER_IP: 127.0.0.1 +MASTER_PORT: 54915 +PASSPHRASE: passw0rd +CALLSIGN: ECHO +RADIO_ID: 1000001 +RX_FREQ: 449000000 +TX_FREQ: 444000000 +TX_POWER: 25 +COLORCODE: 1 +SLOTS: 1 +LATITUDE: 00.0000 +LONGITUDE: 000.0000 +HEIGHT: 0 +LOCATION: Earth +DESCRIPTION: ECHO +URL: www.freedmr.uk +SOFTWARE_ID: 20170620 +PACKAGE_ID: MMDVM_FreeDMR +GROUP_HANGTIME: 5 +OPTIONS: +USE_ACL: True +SUB_ACL: DENY:1 +TGID_TS1_ACL: PERMIT:ALL +TGID_TS2_ACL: PERMIT:ALL +ANNOUNCEMENT_LANGUAGE: en_GB From b3739178ce42a1b83387869f5f9448e4776108a7 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 5 May 2023 00:06:26 +0100 Subject: [PATCH 35/35] Trap weird error reported by N2CID so we can see what's going on Note this error appears to be in HBLink3 as well and may be related to Python or library version --- bridge.py | 6 +++++- hotspot_proxy_v2.py | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/bridge.py b/bridge.py index afa31f9..86d6dc3 100755 --- a/bridge.py +++ b/bridge.py @@ -791,7 +791,11 @@ class routerHBP(HBSYSTEM): systems[_target['SYSTEM']]._report.send_bridgeEvent('GROUP VOICE,END,TX,{},{},{},{},{},{},{:.2f}'.format(_target['SYSTEM'], int_id(_stream_id), int_id(_peer_id), int_id(_rf_src), _target['TS'], int_id(_target['TGID']), call_duration).encode(encoding='utf-8', errors='ignore')) # Create a Burst B-E packet (Embedded LC) elif _dtype_vseq in [1,2,3,4]: - dmrbits = dmrbits[0:116] + _target_status[_target['TS']]['TX_EMB_LC'][_dtype_vseq] + dmrbits[148:264] + #catch weird bug, so we can work out what's going on (N2CID) + try: + dmrbits = dmrbits[0:116] + _target_status[_target['TS']]['TX_EMB_LC'][_dtype_vseq] + dmrbits[148:264] + except Exception as e: + logger.warning('(N2CID) Caught error [non-fatal] %s',e) dmrpkt = dmrbits.tobytes() _tmp_data = b''.join([_tmp_data, dmrpkt, _data[53:55]]) diff --git a/hotspot_proxy_v2.py b/hotspot_proxy_v2.py index 35bb2ee..bad2ba2 100644 --- a/hotspot_proxy_v2.py +++ b/hotspot_proxy_v2.py @@ -283,6 +283,7 @@ if __name__ == '__main__': BlackList = [1234567] #e.g. {10.0.0.1: 0, 10.0.0.2: 0} IPBlackList = {} + UsePrivilegedHelper = False #******************* @@ -313,6 +314,11 @@ if __name__ == '__main__': ClientInfo = bool(os.environ['FDPROXY_CLIENTINFO']) if 'FDPROXY_LISTENPORT' in os.environ: ListenPort = int(os.environ['FDPROXY_LISTENPORT']) + if 'USE_PRIV_HELPER' in os.environ: + UsePrivilegedHelper = os.environ['USE_PRIV_HELPER'] + + if UsePrivilegedHelper: + for port in range(DestportStart,DestPortEnd+1,1): CONNTRACK[port] = False