Fipy : Guru Meditation Error when I try to connect my socket
-
Hello,
Every time I try to connect my socket in order to test my connectity in LTE CAT-M to internet I have a Guru Meditation Error.
My main code is as follow :
import pycom # we need this module to control the LED import math import os import socket import ssl import time from network import LTE from network import Bluetooth from network import LoRa from network import WLAN from network import Server from LTEfunction import func from machine import SD from pytrack import Pytrack from L76GNSV4 import L76GNSS print() print('Switching off Heartbeat') pycom.heartbeat(False) pycom.rgbled(0x000000) print('Switching off WLAN') wlan = WLAN() wlan.deinit() print('Switching off Server') server = Server() server.deinit() print('Switching off Bluetooth') bt = Bluetooth() bt.deinit() print('Switching off LoRa') lora = LoRa(mode=LoRa.LORAWAN, region=LoRa.EU868, power_mode=LoRa.SLEEP) wakeReason = machine.wake_reason() #print("Wake Reason = " + str(wakeReason[0])) try: py = Pytrack() # Expansion Board Init except: print("ERROR : Pytrack non available") l76 = L76GNSS(pytrack=py,timeout=30, debug=False) # GPS Init SDInBoard =0 # setup SD card try: sd = SD() os.mount(sd, '/sd') LoF = os.listdir('/sd') SDInBoard = 1 except: SDInBoard = 0 print ("WARNING : Put a SD card if you want some records") if(SDInBoard == 1): i = 0 nameFound = 0 while nameFound == 0: RecordFileName = 'LTEGPS-record'+str(i)+'.txt' j = 0 namePresent = 0 while j < len(LoF): if RecordFileName == LoF[j]: namePresent = 1 break else: j+=1 if((j>=len(LoF)) and namePresent == 0): nameFound = 1 break else: i+=1 if(wakeReason[0] != 0 and i > 0): RecordFileName = 'LTEGPS-record'+str(i-1)+'.txt' print("INFO : RecordFileName : " + RecordFileName) lteAttached = 0 lteData = 0 lteConnected = 0 functionLTE = func() #functionLTE.lteFuncDeInit() # DeInit of the LTE Modem functionLTE.lteFuncInit() # LTE Modem Init #pycom.rgbled(0x007f00) # green loc = l76.get_location(debug=False) # Get localization with the GPS tim = l76.getUTCDateTime(debug=False) # Get date and time with the GPS lteAttached = functionLTE.lteFuncAttach(80) # Start LTE Attach if lteAttached != 0: # If attached lteConnected = functionLTE.lteFuncConnect(20) # Start LTE Connect if lteConnected: # If connected lteData = functionLTE.lteFuncSocket() # Start a socket in order to receive data #lteData = functionLTE.lteFuncMQTT(msgFipy="Date : {} - LOC : {}".format(tim, loc)) functionLTE.lteFuncDeInit() # Reset & DeInit of the LTE Modem if(SDInBoard == 1): # Record data in the SD if a SD card is inserted try: pycom.rgbled(0x7f0000) # red f = open('/sd/' + RecordFileName, 'a') f.write("Date : {} - loc : {}\t".format(tim, loc)) f.write("LTE Attached: "+str(lteAttached)+",\tLTE Connected: "+str(lteConnected)+",\tLTE Data: "+str(lteData)+"\n") f.close() pycom.rgbled(0x0) except: print ("ERROR : SD card not reachable anymore") print("INFO : Date : {} - LOC : {}".format(tim, loc)) print("INFO : LTE Attached: "+str(lteAttached)+", LTE Connected: "+str(lteConnected)+", LTE Data: "+str(lteData)+"\n") machine.deepsleep(2000)
The LTE functions code is below.
import socket import ssl import time import machine from network import LTE from mqtt import MQTTClient from network import WLAN class func: def sub_cb(self,topic, msg): print(msg) def lteFuncInit(self): self.lte = LTE() # instantiate the LTE object #self.lte.init() print(self.lte.imei()) print(self.lte.iccid()) #print(lte.send_at_cmd('AT!="showver"')) print(self.lte.send_at_cmd('AT+CGCONTRDP')) def lteFuncAttach(self, timeout): i=0 self.lte.attach() # attach the cellular modem to a base station print ("LTE Attach :") while (not self.lte.isattached()) and (i <= timeout) : time.sleep(0.25) #print (".", end="") i+=1 if(self.lte.isattached()): print("i attach : "+ str(i)) print (" Attached OK") return 1 else: print (" Attached NOK") return 0 def lteFuncConnect(self, timeout): i=0 self.lte.connect() # start a data session and obtain an IP address print ("LTE connect :") while (not self.lte.isconnected()) and (i <= timeout): time.sleep(0.25) #print (".", end="") i+=1 if self.lte.isconnected(): print("i connect : "+ str(i)) print (" Connect OK") return 1 else: print (" Connect NOK") try: self.lte.dettach() except: print ("ERROR : LTE dettach problem") return 0 def lteFuncSocket(self): print ("Creation Socket") s = socket.socket() print("AFTER CREATE SOCKET") s = ssl.wrap_socket(s) print("AFTER WRAP") s.connect(socket.getaddrinfo('8.8.8.8', 443)[0][-1]) # Error at this line print("Socket Connected") s.send(b"GET / HTTP/1.0\r\n\r\n") print(s.recv(4096)) try: s.close() self.lte.disconnect() self.lte.dettach() except: print ("ERROR : Socket close, LTE deconnect and/or dettach problem") if s.recv(4096) != "": return 1 else: return 0 def lteFuncMQTT(self, msgFipy): client = MQTTClient("FiPy", "52.70.203.194",user="XXXX", password="XXXXXXXXXXXXXXXX", port=1883) client.set_callback(self.sub_cb) print("MQTT") client.connect() print("Connected") client.subscribe(topic="MaloM/feeds/FipyPos") print("Sending ...") client.publish(topic="MaloM/feeds/FipyPos", msg=msgFipy) print("End Send") try: self.lte.disconnect() self.lte.dettach() except: print ("ERROR : LTE deconnect and/or dettach problem") return 1 def lteFuncDeInit(self): print('Switching off LTE') quit = False while quit == False: try: self.lte.deinit() except OSError: print(' Exception occured and retrying...') #machine.reset() else: quit = True
Below you can see a copy of the console with the error.
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff8028,len:8 load:0x3fff8030,len:1984 load:0x4009fa00,len:0 load:0x4009fa00,len:19088 entry 0x400a05e4 Initializing filesystem as FatFS! Switching off Heartbeat Switching off WLAN Switching off Server Switching off Bluetooth Switching off LoRa INFO : RecordFileName : LTEGPS-record4.txt Switching off LTE LTE Attach : i attach : 53 Attached OK LTE connect : i connect : 0 Connect OK Creation Socket AFTER CREATE SOCKET AFTER WRAP Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled. Core 1 register dump: PC : 0x00000000 PS : 0x00060a30 A0 : 0x800fa655 A1 : 0x3ffe2ec0 A2 : 0x3f955b10 A3 : 0x3f955b26 A4 : 0x3f955b34 A5 : 0x00000000 A6 : 0x00000000 A7 : 0x00000a6e A8 : 0x800e4197 A9 : 0x3ffe2ea0 A10 : 0x3f955b10 A11 : 0x3f955b26 A12 : 0x000001bb A13 : 0x3f955b34 A14 : 0x000000fe A15 : 0x3fbc1467 SAR : 0x0000001a EXCCAUSE: 0x00000014 EXCVADDR: 0x00000000 LBEG : 0x4009cb8c LEND : 0x4009cb97 LCOUNT : 0xffffffff Backtrace: 0x00000000:0x3ffe2ec0 0x400fa652:0x3ffe2ef0 0x400f6e69:0x3ffe2f10 0x400f6ed1:0x3ffe2f30 0x40102472:0x3ffe2f50 0x400fa744:0x3ffe2ff0 0x400f6e69:0x3ffe3020 0x400f6ed1:0x3ffe3040 0x40102472:0x3ffe3060 0x400fa744:0x3ffe3100 0x400f6e69:0x3ffe3180 0x400f6e96:0x3ffe31a0 0x400df22e:0x3ffe31c0 0x400df4a1:0x3ffe3260 0x400de181:0x3ffe3280 ================= CORE DUMP START ================= 9DgAABEAAABsAQAA pFr8PwAu/j9YNP4/ cC7+P/Az/j8sbwAAWFf8P1hX/D+kWvw/UFf8PxQAAAAIbvs/CG77P6Ra/D8AAAAA BQAAAFwE/j9NaWNyb1B5AAAAAAAAAAAAAQAAAFg0/j8AAAAAIAgGAAUAAAAAAAAA 5Hb7PwSs/D8AAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA== AAD/AAAAAAAwCgYAVaYPgMAu/j8QW5U/JluVPzRblT8AAAAAAAAAAG4KAACXQQ6A oC7+PxBblT8mW5U/uwEAADRblT/+AAAAZxS8PxoAAAAUAAAAAAAAAIzLCUCXywlA /////7sBAAA0W5U/dDYIQOzl+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAABAv/j/4yUA/AgAAAAAAAABsbg+A8C7+PxQ1QD8CAAAA AAAAAKgUlT+MywlAl8sJQAQAAADJOAhAFAyVP0xmCUDUbg+AEC/+PxQ1QD8CAAAA AAAAAAgMlT8DAAAAIwAGAHUkEIAwL/4/AQAAAAAAAAAAAAAACAyVPwEAAACuDwAA R6cPgFAv/j8IAAAAlCaVPwQMlT8IDJU/eC/+P+Av/j9sbg+A8C/+P5D/lD9YrPw/ YDD+P5Av/j9Hpw+AUC/+PwgAAAAoDJU/AAAAAPALlT8kDJU/CQAAAAMAAAAkMf4/ saYPgLAv/j9sbg+A8C/+P5D/lD9YrPw/7RYQgCAAAAAIAAAAHAyVPwAAAAAHAAAA AAAAAPALlT8gDJU/KAyVPyQMlT8bAAAAAQAAACkAAAAEDJU/AAAAADD///+VJpU/ 1G4PgCAw/j/ACJU/AQAAAAEAAAAYMf4/AAAAAJpQAADwC5U/MAAAAAkAAADwL/4/ dSQQgEAw/j8AAAAAAQAAAAEAAAAYMf4/AAAAAAAAAABHpw+AYDD+PwwAAAARIpU/ FDH+PwEAAAAAAAAAAQAAAGxuD4AAMf4/WKz8P1is/D/AMf4/sDD+P0enD4BgMP4/ CAAAADAx/j8AAAAAADH+Pywx/j8HAAAAYDH+P5AdlT8rAAAAAAAAAGxuD4AAMf4/ WKz8P1is/D/tFhCAoB2VPwcAAAAkMf4/AAAAAAcAAAAAAAAAADH+Pygx/j8wMf4/ LDH+PwAAAAAUMf4/oB2VPxQx/j8AAAAAMP///xIilT+Zbg+AgDH+P7D9lD8AAAAA sP2UPw8ilT8QMf4/JDH+P1is/D/ACJU/AESVPy4aAABgA5U/sACVP+ABlT/A65Q/ tyCVPxAx/j8AAAAASgIAAOBBCIBwMf4/kDH+PwAAAAAAAAAAAAAAAAAAAAAAAAAA ADH+PwAAAAAHAAAAUDH+PzHyDYCgMf4/sP2UPwAAAAAAAAAAAAAAAAEAAAAAAAAA pPQNgMAx/j+w/ZQ/IAAAAAAAAAAAAAAAAAAAACoAAACE4Q2AYDL+P17tlD9GAQAA AAAAAAAAAACk9A2AwDH+P8Rj/D8AAAAAIAAAALEKQT94CkE/CAAAALLhDYBQMv4/ 7uFBP0YBAACE4Q2AYDL+P17tlD9GAQAAwPENgKAdlT8wHZU/AAAAANgx/j9AMv4/ CAAAAMiZQj824BgAAQAAACAAAABe7ZQ/7eAYAAEAAAAgAAAAsQpBP3gKQT8IAAAA AAAAAIAy/j+QMv4/ohkAAJAy/j8gMv4/oFz8P0SI/T8AAAAA8DP+PwAAAAAAAAAA AQAAAKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXQNghAqNwNQDAABQAAAAAA 8DP+PwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAP////8AAAAA//////////////// /////8VCE4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAyAAAA AgEAAAAAAAAA4BsAgDL+PwAAKAAAAAAAAAAAAKgz/j9QM/4/AAAAAAAAAAAAAAAA AAAAAAEAAAAAAAAAWCFAPwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAPwz/j8AAAAA gAAAAArXIzwK1yM8CtcjPLq9B70AAIA/3NvYNfcuEacAwJ0naNqaOwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== CL39P5C7/T8Avf0/ kLv9P6C8/T/bSv/QhML9P/RW/D8Ivf0/7Fb8PxkAAAAgRaBm/LQwrQi9/T8AAAAA AAAAAAS5/T9JRExFAFIJt6MdkJGuSXQAAAAAAAC9/T8AAAAAIQAGAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY0Yw== 0DYIQHZdIEAwAgYA5FcJgFC8/T8gAAAAAAAAAMQL/T8MGfw/4Fj8P4hW/D/gC/0/ MLz9PwAAAAAAAAAAAAAAAIBV+z8DAAAAIwAGAAoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAMk4CECAVfs/TGYJQJxu+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAACAVfs/AwAAACMABgAAAAAAcLz9PwAAAAAAAAAA AAAAAAwZ/D/gWPw/iFb8PwAAAACgvP0/AAAAAAAAAAAMGfw/AAAAAAAAAAAAAAAA AQAAAAAAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKy8/T8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= fML9PwDB/T90wv0/ AMH9PxDC/T9T+hEY9Fb8PxC9/T98wv0/7Fb8PxkAAABZbfgzMgfTI3zC/T8AAAAA AAAAAHi+/T9JRExFAOoTJlENeRb1VMcAAQAAAHTC/T8AAAAAIQAGAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNRkg== 0DYIQHZdIEAwAAYA5FcJgMDB/T8gAAAAIAAAAMQL/T8MGfw/5Fj8P4hW/D8ADP0/ sMH9PwAAAAAjAAYAIAAGAMDa/T/AGPw/IAAGAAAAAAAAAAAAyTgIQAAAAAAAAAAA AAAAAMk4CEDA2v0/TGYJQAx0+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAANVXCYDAwf0/DBn8P+BY/D8AAAAA4MH9PwAAAAABAAAA AAAAAAwZ/D/kWPw/iFb8PwAAAAAQwv0/AAAAAAAAAAAMGfw/AAAAAAAAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzC/T8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IK/9PwBS/j9oU/4/ AFL+PwBT/j87bwAA9MP9P8zW+z8gr/0/2Fb8PxQAAAClpaWlpaWlpSCv/T8AAAAA BQAAAGxD/j9TZXJ2ZXJzAKWlpaWlpaUAAQAAAGhT/j8AAAAAIQAGAAUAAAAAAAAA 8H/7PwAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlpQ== 0DYIQMBVCUAwDgYAD+MNgMBS/j87bwAA5Fj8PwwZ/D8BAAAAAAD/AAAAAP/AVQmA oFL+PwEAAAA7bwAAIK/9PwEAAAD+AAAABA79PwAAAAAAAAAAAAAAAKjJCUDWyQlA /////8k4CEABAAAATGYJQPwE+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACCv/T8BAAAA/gAAAAQO/T8AAAAA4FL+PwAAAAAAAAAA DBn8PwEAAAAAAP8AAAAA/wAAAAAAU/4/AAAAAAAAAAAAAAAAAQAAACJf/D8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFP+PwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 7MP9P2DX/T+82P0/ YNf9P1DY/T87bwAABHf7Pyiv/T/sw/0/2Fb8Pw8AAAD0zf0/9M39P+zD/T/szf0/ CgAAAMDO/T9UbXIgU3ZjAKgeEZgDk9MAAAAAALzY/T8AAAAAIQAGAAoAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUUSQ== 0DYIQJ1kCUAwBAYAAAAAACDY/T8BAAAAO28AAAAAAADwWPw/6Fj8PzpvAACdZAmA ANj9PwAAAAAMGfw/AAAAAAAAAAAAAAAAAAAAACAAAABMivk/AAAAAKjJCUDWyQlA AAAAAMk4CEAAAAAATGYJQEyK+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUNj9PwAAAAAAAAAA AAAAAFUHAABk+f0/AAAAAAAAAADwWPw/6Fj8P00RAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABc2P0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA /Hb7PwCC/j90g/4/ AIL+PxCD/j88bwAAlNH7P/TD/T/8dvs/2Fb8PxMAAADYfPs/2Hz7P/x2+z8AAAAA BgAAAHh3/j9MVEUANHf7PzR3+z8AAAAAAQAAAHSD/j8AAAAAIQAGAAYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 0DYIQMBVCUAwCAYAIbEQgMCC/j88bwAA5Fj8PwwZ/D8BAAAAAAAAAAAAAADAVQmA oIL+PwEAAAA8bwAA/Hb7PwEAAAD+AAAAAAAAABgAAAAI4v0/AAAAAKjJCUDWyQlA /////8k4CEABAAAATGYJQAw1+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHy+F0AoGrw/8A79PxEAAAAAAAAA4IL+P3S2/D8AAAAA EQAAADgUvD9wC/0/EQAAAAAAAAAQg/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByD/j8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA jNH7P5DP+z+E0fs/ kM/7PyDR+z88bwAABNP7PwR3+z+M0fs/2Fb8PxMAAAAAAAAAAAAAAIzR+z8AAAAA BgAAAIjH+z9Mb1JhAAAAAAAAAAAAAAAAAQAAAITR+z8AAAAAIQAGAAYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 0DYIQMBVCUAwCAYAjqEQgFDQ+z88bwAA5Fj8PwwZ/D8BAAAAAAAAAAAAAADAVQmA MND7PwEAAAA8bwAAjNH7PwEAAAD+AAAAIwAGAA4AAAAw0Ps/AQAAAKjJCUDWyQlA AAAAAMk4CEABAAAATGYJQByD9z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAP//P7MAAAAAAAAAAAAAAAAAAAAAcND7P6Cz/D8BAAAA aNJCPyAABgAs4vw/AQAAAAAAAAAg0fs/AAAAAAAAAAAg0fs/AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcg/c/AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAstPw/CwAAAAIAAAABAAAA AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAALNH7PwAAAACAAAAAmpkJQArXIzwK1yM8 ur0HvQAAgD/c29g19y4RpwDAnSdo2po7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA= /NL7P4BI+z/gSfs/ gEj7P4BJ+z88bwAAdMX9P5TR+z/80vs/2Fb8PxQAAAAAAAAAAAAAAPzS+z8AAAAA BQAAAOQ5+z9NZXNoAAAAAAAAAAAAAAAAAQAAAOBJ+z8AAAAAIQAGAAUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 0DYIQMBVCUAwCAYAu4QQgEBJ+z88bwAA5Fj8PwwZ/D8BAAAABAAAAP///3/AVQmA IEn7PwEAAAA8bwAA/NL7PwEAAAD+AAAAIAMGAAAAAAB8+/Y/AAAAAAAAAAAAAAAA AAAAAMk4CEABAAAATGYJQHz79j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAPzS+z8BAAAA/gAAACADBgAAAAAAYEn7PwAAAAB0sfw/ DBn8PwEAAAAEAAAA////fwAAAACASfs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjEn7PwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAA== bMX9PyCt/T8Yr/0/ IK39P7Cu/T+dbwAA4Fb8PwTT+z9sxf0/2Fb8PwcAAADo4f0/6OH9P2zF/T/g4f0/ EgAAAByh/T90aVQAdADbdG4w4SUpaYMA////fxiv/T8AAAAAIQAGABIAAAABAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHe2dQ== 0DYIQCxICUAwBAYAgeIXgOCt/T+84f0/gK79Pwji/T8AAAAAEOL9PwAAAAAsSAmA wK39PwEAAABkAAAA5Fj8PwEAAAAMGfw/AAAAABAAAAAAAAAAAAAAAOnOCUD5zglA /f///8k4CEABAAAATGYJQKxg+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAABfRBeAIK79P/AO/T+Arv0/ AAAAADlvAAABAAAAAAAAAGQAAAAwrv0/VAG8P1AUvD+mRBeAMK79P1ReQz+UPAhA Y8wWgFCu/T/wDv0/gK79PwcAAAAM7RdA8C3+P4Cu/T9kAAAAOW8AAAAAAACoFJU/ AAAAAICu/T/ABRhAAAAAAAAAAACArv0/wAUYQAAAAACsFf0/rBX9P6gV/T+oFf0/ AAAAALCu/T8AAAAAAAAAACQUvD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvK79PwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA xNb7P+BV+z/kV/s/ 4FX7P4BX+z87bwAAKK/9P+BW/D/E1vs/2Fb8PxMAAAAqT4QTGw06P8TW+z8AAAAA BgAAAOhJ+z9TaWdmb3gA9jkCDqgwoEQAAAAAAORX+z8AAAAAIQAGAAYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 0DYIQMBVCUAwAgYAil0fgKBW+z87bwAA4Fj8PwwZ/D8AAAAAAAAAAAAAAADAVQmA gFb7PwAAAAA7bwAAxNb7PwEAAAD+AAAAIwAGABEAAAB8Cfc/AAAAAIzLCUCXywlA /////8k4CEABAAAATGYJQHwJ9z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAMTW+z8BAAAA/gAAACMABgAAAAAAwFb7P5xQ/T+YUP0/ DBn8PwAAAAAAAAAAAAAAAAAAAACAV/s/AAAAAAAAAADQNghAcF0fQDAABQAAAAAA gFf7PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA fAn3PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxX+z8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA tLb9P2B1/j9wd/4/ YHX+PxB3/j8AAAAAtJ/9P5iw/T+0tv0/aFb8Pw4AAACk9v0/pPb9P7S2/T+c9v0/ CwAAAHRf/j9JUlFzAAAAACC3/T8AAAAAAQAAAHB3/j8AAAAAIQAGAAsAAAAAAAAA AAAAAKx2/j8AAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA== 0DYIQCxICUAwDgYAeNkOgCB2/j949v0/wHb+P8T2/T8AAAAAzPb9PwAAAAAsSAmA AHb+PwEAAAD/////5Fj8PwEAAAAMGfw/AAAAAAAAAAAMKfo/AAAAAAAAAAAAAAAA AAAAAMk4CEABAAAATGYJQAwp+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABQAAAApaWlpaWlpaVw5w2AYHb+P8iq/D/Adv4/ AAAAAFwFAAClpaWlpaWlpf////9gdv4/tK38P8B2/j8AAAAAAQAAALyq/D+wM/w/ AAAAAPB2/j+8qvw/AAAAABB3/j8AAAAAAAAAAAAAAAAAAAAAvKr8PwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYrPw/ WKz8PwAAAADAdv4/ABQAAAwp+j8AAAAAAAAAAAAAAABYrPw/AAAAAAoAAAD///9/ AAAAABB3/j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAcd/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA rJ/9PyCe/T+kn/0/ IJ79P0Cf/T+IfmMx5Mb9P7y2/T+sn/0/aFb8PwEAAABEzf0/RM39P6yf/T88zf0/ GAAAAKib/T9pcGMxAJO7/nTJ1nCMN1QAAQAAAKSf/T8AAAAAIQAGABgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABz0dg== 0DYIQCxICUAwBgYA5B8IgOCe/T8Yzf0/AAAAAGTN/T8AAAAAGM39PwAAAAAsSAmA wJ79PwEAAAD/////5Fj8PwEAAAAMGfw/IAMGAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAMk4CEABAAAATGYJQDxR+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAKyf/T8BAAAA/gAAACMABgAAAAAAIJ/9P7xV/D8AAAAA AAAAAJYFAAAAAAAAIAMGAP////8AAAAAvFX8P6hV/D+0zP0/AAAAAAEAAAAAAAAA AAAAAECf/T8AAAAAAAAAAHyxCEABAAAAAAAAAAAAAACtFAiAgH3+PwABAADoDQBA AAAAAAAAAABMn/0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA== 3Mb9P2D0/T8Y9v0/ YPT9P7D1/T/CTnYkQJr9P7Sf/T/cxv0/aFb8PwUAAADw4/0/8OP9P9zG/T/o4/0/ FAAAABzq/T9ldmVudFRhc2sAyd8EursAAAAAABj2/T8AAAAAIQAGABQAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAtvw== 0DYIQCxICUAwDwYA9BYWgCD1/T/E4/0/YPX9PxDk/T8AAAAAGOT9PwAAAAAsSAmA APX9PwAAAAD/////4Fj8PwAAAAAMGfw/IAwGAAAAAAAwKBaA4PT9P6jJCUDWyQlA /////8k4CEAAAAAATGYJQKyn+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACAHBgCQ9f0/hJP+P4Cn/j8AAAAAYPX9P3wL/T8AAAAA AAAAAO4FAAD+AAAAIAwGAP////9g9f0/fAv9PwAAAAAQ5P0/AAAAABjk/T8BAAAA AAAAALD1/T8AAAAAAAAAAAMAAAAQp/4/hJP+P4Cn/j8W4RKAIKf+PwAAAAAMYv0/ XJoIgFCn/j+Ek/4/gKf+PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAC89f0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAA= OJr9P7CY/T8wmv0/ sJj9P9CZ/T+8bvPflJT9P+TG/T84mv0/aFb8PwEAAADszP0/7Mz9Pzia/T/kzP0/ GAAAADSW/T9pcGMwAKLwcCIcvrPynzMAAAAAADCa/T8AAAAAIQAGABgAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6hOA== 0DYIQCxICUAwCgYA5B8IgHCZ/T/AzP0/AAAAAAzN/T8AAAAAwMz9PwAAAAAsSAmA UJn9PwAAAAD/////4Fj8PwAAAAAMGfw/bMX9PwAAAADMS/k/AAAAAAAAAAAAAAAA AAAAAMk4CEAAAAAATGYJQMxL+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAOBY/D8AAAAADBn8P2zF/T8AAAAAsJn9P7hV/D8AAAAA AAAAAAUGAAAAAAAAAAAAAP////8AAAAAuFX8P6hV/D8Mzf0/AAAAAMDM/T8AAAAA AAAAANCZ/T8AAAAAAAAAAHyxCEAAAAAAAAAAAAAAAAAdFAiAYDz+P1BW/D9YVvw/ AAAAAAAAAADcmf0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA jJT9PwCT/T+ElP0/ AJP9PyCU/T+6qkupQDv+P0Ca/T+MlP0/aFb8PwMAAABAVfw/QFX8P4yU/T84Vfw/ FgAAAIiI/T9lc3BfdGltZXIAp5woY/8AAAAAAISU/T8AAAAAIQAGABYAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO6WSQ== 0DYIQCxICUAwAgYAkSgNgMCT/T8UVfw/AAAAAGBV/D8AAAAAFFX8PwAAAAAsSAmA oJP9PwAAAAD/////4Fj8PwAAAAAMGfw/IAAGAAAAAACAk/0/YJP9P6jJCUDWyQlA /////8k4CEAAAAAATGYJQBxG+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAACgDAAJQ/AAAAAAAAAAAAAAAAAJT9P2hV/D9wVfw/ AAAAABEIAABI/f0/cFX8P/////8kHrw/AAAKAAAAAAAAAAAAAAAAACRw9D8AAAAA AAAAACCU/T8AAAAAAAAAAAAAAAAAAAAAcFX8PwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAslP0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAA== ODv+P9Ch/j+Ao/4/ 0KH+PyCj/j/8////cFb8P5SU/T84O/4/aFb8PwIAAADwePs/8Hj7Pzg7/j/oePs/ FwAAAIST/j9idENvbnRyb2xsZXIAAAAAAAAAAICj/j8AAAAAIQAGABcAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYSQA== 0DYIQCxICUAwAAYAsdYIgJCi/j/EePs/8KL+PxB5+z8AAAAAHHn7PwAAAAAsSAmA cKL+PwAAAAD/////4Fj8PwAAAAAMGfw/AAAAABAAAABqAAAA////AE3KCUCByglA /////8k4CEAAAAAATGYJQBxV+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAGVNBYCwov4/AQAAAGj9+j9NhR+A0KL+P8R4+z/wov4/ AAAAABUIAAABAAAAAAAAAP/////Qov4/bHj7PwAAAADeHQAASAkAAAQBAACcCfs/ AAAAAPCi/j8QS/w/AQAAAP////8AAAAAFgAAAP///38AAAAAIKP+PwAAAAAAAAAA CAAAAAAAAAAAAAAAAAAAAKDWCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAso/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA kLD9P0Be/j9sX/4/ QF7+PwBf/j+lpaWlvLb9P3BW/D+QsP0/aFb8PxQAAAClpaWlpaWlpZCw/T8AAAAA BQAAAHBT/j9Tb2NrZXQgT3BlcmF0aW8AAQAAAGxf/j8AAAAApaWlpQUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlpQ== 0DYIQLw6DkAwAAUAAAAAAABf/j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAPwQ+j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAMX/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA ================= CORE DUMP END ================= Rebooting... ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff8028,len:8 load:0x3fff8030,len:1984 load:0x4009fa00,len:0 load:0x4009fa00,len:19088 entry 0x400a05e4 Initializing filesystem as FatFS!
My Fipy is running 1.20.0.rc4
Thanck you.
Best regards,
Malo
-
Hello @iwahdan,
I put the LoRa Init after the LTE connection and it works now ! Thank you.
Best Regards,
Malo
-
Hello @Malo , the Issue is indeed in Firmware, this crash is reproducible only when LoRa/Sigfox is initialised before LTE as you have in your Code, I'll push a Fix to be included in next stable and Development release.
For now you can fix this issue by removing LoRa init if you don't use it or do it after LTE connection.
-
@malo said in Fipy : Guru Meditation Error when I try to connect my socket:
import socket
import ssl
import time
import machine
from network import LTE
from mqtt import MQTTClient
from network import WLANclass func:
def sub_cb(self,topic, msg):
print(msg)
def lteFuncInit(self):
self.lte = LTE() # instantiate the LTE object
#self.lte.init()
print(self.lte.imei())
print(self.lte.iccid())
#print(lte.send_at_cmd('AT!="showver"'))
print(self.lte.send_at_cmd('AT+CGCONTRDP'))
def lteFuncAttach(self, timeout):
i=0
self.lte.attach() # attach the cellular modem to a base station
print ("LTE Attach :")
while (not self.lte.isattached()) and (i <= timeout) :
time.sleep(0.25)
#print (".", end="")
i+=1if(self.lte.isattached()): print("i attach : "+ str(i)) print (" Attached OK") return 1 else: print (" Attached NOK") return 0 def lteFuncConnect(self, timeout): i=0 self.lte.connect() # start a data session and obtain an IP address print ("LTE connect :") while (not self.lte.isconnected()) and (i <= timeout): time.sleep(0.25) #print (".", end="") i+=1 if self.lte.isconnected(): print("i connect : "+ str(i)) print (" Connect OK") return 1 else: print (" Connect NOK") try: self.lte.dettach() except: print ("ERROR : LTE dettach problem") return 0 def lteFuncSocket(self): print ("Creation Socket") s = socket.socket() print("AFTER CREATE SOCKET") s = ssl.wrap_socket(s) print("AFTER WRAP") s.connect(socket.getaddrinfo('8.8.8.8', 443)[0][-1]) # Error at this line print("Socket Connected") s.send(b"GET / HTTP/1.0\r\n\r\n") print(s.recv(4096)) try: s.close() self.lte.disconnect() self.lte.dettach() except: print ("ERROR : Socket close, LTE deconnect and/or dettach problem") if s.recv(4096) != "": return 1 else: return 0 def lteFuncMQTT(self, msgFipy): client = MQTTClient("FiPy", "52.70.203.194",user="XXXX", password="XXXXXXXXXXXXXXXX", port=1883) client.set_callback(self.sub_cb) print("MQTT") client.connect() print("Connected") client.subscribe(topic="MaloM/feeds/FipyPos") print("Sending ...") client.publish(topic="MaloM/feeds/FipyPos", msg=msgFipy) print("End Send") try: self.lte.disconnect() self.lte.dettach() except: print ("ERROR : LTE deconnect and/or dettach problem") return 1 def lteFuncDeInit(self): print('Switching off LTE') quit = False while quit == False: try: self.lte.deinit() except OSError: print(' Exception occured and retrying...') #machine.reset() else: quit = True
Hello @Malo ,
I could reproduce the crash using your code, I'll keep you updated with my analysis.
Thanks for your help.