| 
														
															@@ -107,7 +107,7 @@ def artnet_loop(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     while 1: 
														 | 
														
														 | 
														
															     while 1: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         #artnet._test_frame() 
														 | 
														
														 | 
														
															         #artnet._test_frame() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         artnet.next() 
														 | 
														
														 | 
														
															         artnet.next() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        time.sleep(0.01) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        time.sleep(0.001) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class CLOCK(): 
														 | 
														
														 | 
														
															 class CLOCK(): 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -135,7 +135,7 @@ class CLOCK_REAL(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def __init__(self): 
														 | 
														
														 | 
														
															     def __init__(self): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.__time = 0 
														 | 
														
														 | 
														
															         self.__time = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.__start = time.time() # only for debugging 
														 | 
														
														 | 
														
															         self.__start = time.time() # only for debugging 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        self.__tick = 0.01 # incremental timer drift's on highe cpu load ? 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        self.__tick = 0.001 # incremental timer drift's on highe cpu load ? 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def time(self): 
														 | 
														
														 | 
														
															     def time(self): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         self.__time = time.time() 
														 | 
														
														 | 
														
															         self.__time = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return self.__time 
														 | 
														
														 | 
														
															         return self.__time 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -947,14 +947,17 @@ class Main(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             except:pass 
														 | 
														
														 | 
														
															             except:pass 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             self.lock.release_lock() 
														 | 
														
														 | 
														
															             self.lock.release_lock() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             #self.lock.acquire_lock() 
														 | 
														
														 | 
														
															             #self.lock.acquire_lock() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            time.sleep(0.01) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            #time.sleep(1/35) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             fps += 1 
														 | 
														
														 | 
														
															             fps += 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if fps >= 100: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            stop_fps = 50 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            time.sleep(1/60) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if fps >= stop_fps: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 fps_t = time.time() 
														 | 
														
														 | 
														
															                 fps_t = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 #print(int((fps_t-fps_start)*1000),"ms")  
														 | 
														
														 | 
														
															                 #print(int((fps_t-fps_start)*1000),"ms")  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                print(round(100/(fps_t-fps_start),2),"core/fps")  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                print(round(stop_fps/(fps_t-fps_start),2),"core/fps")  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 fps = 0 
														 | 
														
														 | 
														
															                 fps = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 fps_start = time.time() 
														 | 
														
														 | 
														
															                 fps_start = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                time.sleep(1/60) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 main = Main() 
														 | 
														
														 | 
														
															 main = Main() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 if __run_main: 
														 | 
														
														 | 
														
															 if __run_main: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1011,30 +1014,8 @@ def set_dmx_fine_ch(Admx,dmx_fine_nr): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         cprint(x,color="red") 
														 | 
														
														 | 
														
															         cprint(x,color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         cprint("except 3455",e,color="red") 
														 | 
														
														 | 
														
															         cprint("except 3455",e,color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-def JCB(data,sock=None): #json client input 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    t_start = time.time() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    #print("-->-",data) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    jdatas = [] 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    l2 = 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    for line in data: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        data2 = json.loads(line) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        l2 += len(data2) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        #print("line:",line) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        jdatas.append(data2) #["CMD"]) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    print("INPUT JCB =>",len(data),":",l2) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    c = clock.time()  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    c = float(c) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ftime = 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    delay = 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    for cmds in jdatas: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        master_fx = MASTER_FX() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        if not cmds: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            continue 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        try: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def parse_cmds(cmds,clock=0,master_fx=None): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            c=clock 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             out = {} 
														 | 
														
														 | 
														
															             out = {} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             for x in cmds: 
														 | 
														
														 | 
														
															             for x in cmds: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 Admx = DMXCH() #dummy 
														 | 
														
														 | 
														
															                 Admx = DMXCH() #dummy 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1057,7 +1038,7 @@ def JCB(data,sock=None): #json client input 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         size_master.val(x["NR"],x["VALUE"]) 
														 | 
														
														 | 
														
															                         size_master.val(x["NR"],x["VALUE"]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 else: 
														 | 
														
														 | 
														
															                 else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    print(x) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    #print("x",x) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                      
														 | 
														
														 | 
														
															                      
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     if "DMX" in x: 
														 | 
														
														 | 
														
															                     if "DMX" in x: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         DMX = int(x["DMX"]) 
														 | 
														
														 | 
														
															                         DMX = int(x["DMX"]) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1208,10 +1189,52 @@ def JCB(data,sock=None): #json client input 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             CB({"cmd":"fxf"+ccm}) 
														 | 
														
														 | 
														
															                             CB({"cmd":"fxf"+ccm}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         else: 
														 | 
														
														 | 
														
															                         else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             CB({"cmd":"fx"+ccm}) 
														 | 
														
														 | 
														
															                             CB({"cmd":"fx"+ccm}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            return out 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import hashlib 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+JCB_GLOB_BUF = {} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def JCB(data,sock=None): #json client input 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    t_start = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    s = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    e = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    print("JCB TIME:","{:0.02f}".format(e-s),int(e*100)/100) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    #print("-->-",data) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    jdatas = [] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    l2 = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for line in data: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+         
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        data2 = json.loads(line) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        l2 += len(data2) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        #print("line:",line) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        jdatas.append(data2) #["CMD"]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    print("INPUT JCB =>",len(data),":",l2) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    c = clock.time()  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    c = float(c) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ftime = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    delay = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for cmds in jdatas: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        line = json.dumps(cmds) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        #md5 = hashlib.md5.hexdigest(line) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        master_fx = MASTER_FX() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if not cmds: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            continue 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        try: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            out = parse_cmds(cmds,clock=c,master_fx=master_fx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             #cprint("-","{:0.04} sec.".format(time.time()-t_start),color="yellow") 
														 | 
														
														 | 
														
															             #cprint("-","{:0.04} sec.".format(time.time()-t_start),color="yellow") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             # ------- ----------------------------------------------------  
														 | 
														
														 | 
														
															             # ------- ----------------------------------------------------  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        except Exception as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cprint("EXCEPTION JCB",e,color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cprint("----",str(cmds)[:150],"...",color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            raise e 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if out: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        try: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             try: # second loop to sync-start all dmxch's 
														 | 
														
														 | 
														
															             try: # second loop to sync-start all dmxch's 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 main.lock.acquire_lock() 
														 | 
														
														 | 
														
															                 main.lock.acquire_lock() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 for _id in out: 
														 | 
														
														 | 
														
															                 for _id in out: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1228,16 +1251,23 @@ def JCB(data,sock=None): #json client input 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 #print("SET V_MASTER",row) 
														 | 
														
														 | 
														
															                                 #print("SET V_MASTER",row) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                              
														 | 
														
														 | 
														
															                              
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     _init_action(row) 
														 | 
														
														 | 
														
															                     _init_action(row) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                e = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                print(" sub-JCB TIME:","{:0.02f}".format(e-s),int(e*100)/100) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															             finally: 
														 | 
														
														 | 
														
															             finally: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 main.lock.release_lock() 
														 | 
														
														 | 
														
															                 main.lock.release_lock() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            #time.sleep(1/30) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         except Exception as e: 
														 | 
														
														 | 
														
															         except Exception as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cprint("EXCEPTION JCB",e,color="red") 
														 | 
														
														 | 
														
															             cprint("EXCEPTION JCB",e,color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cprint("----",str(cmds)[:150],"...",color="red") 
														 | 
														
														 | 
														
															             cprint("----",str(cmds)[:150],"...",color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red") 
														 | 
														
														 | 
														
															             cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             raise e 
														 | 
														
														 | 
														
															             raise e 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    #cprint(" ","{:0.04} sec.".format(time.time()-t_start),color="yellow") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        #cprint(" ","{:0.04} sec.".format(time.time()-t_start),color="yellow") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        e = time.time() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        print("JCB TIME:","{:0.02f}".format(e-s),int(e*100)/100) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        time.sleep(1/60) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															              
														 | 
														
														 | 
														
															              
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def CB(data): # raw/text client input  
														 | 
														
														 | 
														
															 def CB(data): # raw/text client input  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     #print("CB",data) 
														 | 
														
														 | 
														
															     #print("CB",data) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1346,7 +1376,7 @@ if __run_main: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     s = chat.Server(cb=JCB) 
														 | 
														
														 | 
														
															     s = chat.Server(cb=JCB) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     while 1: 
														 | 
														
														 | 
														
															     while 1: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         s.poll() 
														 | 
														
														 | 
														
															         s.poll() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        time.sleep(0.01) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        time.sleep(0.001) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |