| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -23,40 +23,17 @@ import monitor
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import Queue
 | 
					 | 
					 | 
					 | 
					import Queue
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					from utils.transport import *
 | 
					 | 
					 | 
					 | 
					from utils.transport import *
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					from utils.workers import ThreadManager, Factory
 | 
					 | 
					 | 
					 | 
					from utils.workers import ThreadManager, Factory
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					from utils.ml import ML,AnomalyDetection
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					import utils.params as SYS_ARGS
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					import atexit
 | 
					 | 
					 | 
					 | 
					import atexit
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					PARAMS  = {'context':''}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					if len(sys.argv) > 1:
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						N = len(sys.argv)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for i in range(1,N):
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							value = None
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if sys.argv[i].startswith('--'):
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								key = sys.argv[i].replace('-','')
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if i + 1 < N:
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									value = sys.argv[i + 1] = sys.argv[i+1].strip()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if key and value:
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									PARAMS[key] = value
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							i += 2
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					app = Flask(__name__)
 | 
					 | 
					 | 
					 | 
					app = Flask(__name__)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					app.config['SECRET_KEY'] = '!h8-[0v8]247-4-360'
 | 
					 | 
					 | 
					 | 
					app.config['SECRET_KEY'] = '!h8-[0v8]247-4-360'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX=?RT'
 | 
					 | 
					 | 
					 | 
					#app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX=?RT'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					PARAMS = SYS_ARGS.PARAMS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					f = open(PARAMS['path'])
 | 
					 | 
					 | 
					 | 
					f = open(PARAMS['path'])
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					CONFIG 	= json.loads(f.read())
 | 
					 | 
					 | 
					 | 
					CONFIG 	= json.loads(f.read())
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#HANDLERS= {}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#for key in CONFIG['monitor'] :
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#className = CONFIG['monitor'][key]['class']
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#ref	= "".join(["monitor.",className,"()"])
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#ref 	=  eval(ref)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						#HANDLERS[key] = {"class":ref,"config":CONFIG['monitor'][key]["config"]}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					f.close()
 | 
					 | 
					 | 
					 | 
					f.close()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#
 | 
					 | 
					 | 
					 | 
					#
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -66,12 +43,7 @@ p = CONFIG['store']['args']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class_read = CONFIG['store']['class']['read']
 | 
					 | 
					 | 
					 | 
					class_read = CONFIG['store']['class']['read']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class_write= CONFIG['store']['class']['write']
 | 
					 | 
					 | 
					 | 
					class_write= CONFIG['store']['class']['write']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					factory = DataSourceFactory()
 | 
					 | 
					 | 
					 | 
					factory = DataSourceFactory()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#gWriter = factory.instance(type='CouchdbWritera',args=p)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#gReader = factory.instance(type='CouchdbReader',args=p)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#p['qid'] = HANDLERS['processes']['config'].keys()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					gReader = factory.instance(type=class_read,args=p)
 | 
					 | 
					 | 
					 | 
					gReader = factory.instance(type=class_read,args=p)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#gWriter = factory.instance(type=class_write,args=p)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#mthread = monitor.Monitor(HANDLERS,gWriter,'processes',)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					atexit.register(ThreadManager.stop)
 | 
					 | 
					 | 
					 | 
					atexit.register(ThreadManager.stop)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					@app.route('/get/<id>')
 | 
					 | 
					 | 
					 | 
					@app.route('/get/<id>')
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -82,8 +54,12 @@ def procs(id):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							
 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							r = {}
 | 
					 | 
					 | 
					 | 
							r = {}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for label in d :
 | 
					 | 
					 | 
					 | 
							for label in d :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								index = len(d[label]) - 1
 | 
					 | 
					 | 
					 | 
								if label not in ['learn'] :
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								r[label] = d[label][index]
 | 
					 | 
					 | 
					 | 
									index = len(d[label]) - 1
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									r[label] = d[label][index]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									#for row in r[label] :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										#yo = ML.Extract(['status'],row)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										#xo = ML.Extract(['cpu_usage','memory_usage'],row)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										
 | 
					 | 
					 | 
					 | 
										
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						except Exception, e:
 | 
					 | 
					 | 
					 | 
						except Exception, e:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							print e
 | 
					 | 
					 | 
					 | 
							print e
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -122,13 +98,14 @@ def trends ():
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						p = CONFIG['store']['args']
 | 
					 | 
					 | 
					 | 
						p = CONFIG['store']['args']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						class_read = CONFIG['store']['class']['read']
 | 
					 | 
					 | 
					 | 
						class_read = CONFIG['store']['class']['read']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						p['qid'] =[id] #HANDLERS['processes']['config'].keys()
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gReader = factory.instance(type=class_read,args=p)
 | 
					 | 
					 | 
					 | 
						gReader = factory.instance(type=class_read,args=p)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = gReader.read()
 | 
					 | 
					 | 
					 | 
						r = gReader.read()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if id in r:
 | 
					 | 
					 | 
					 | 
						if id in r:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							r = r[id] #--matrix
 | 
					 | 
					 | 
					 | 
							r = r[id] #--matrix
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							series = []
 | 
					 | 
					 | 
					 | 
							series = []
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for row in r:
 | 
					 | 
					 | 
					 | 
							for row in r:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								
 | 
					 | 
					 | 
					 | 
								
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								series += [item for item in row if str(item['label'])== app]
 | 
					 | 
					 | 
					 | 
								series += [item for item in row if str(item['label'])== app]
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -156,19 +133,37 @@ def dashboard():
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					"""
 | 
					 | 
					 | 
					 | 
					"""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					@app.route('/learn')
 | 
					 | 
					 | 
					 | 
					@app.route('/learn')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def learn():
 | 
					 | 
					 | 
					 | 
					def learn():
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						app = request.args.get('app')
 | 
					 | 
					 | 
					 | 
						global CONFIG
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						id	= request.args.get('id')
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						p = CONFIG['store']['args']
 | 
					 | 
					 | 
					 | 
						p = CONFIG['store']['args']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						class_read = CONFIG['store']['class']['read']	
 | 
					 | 
					 | 
					 | 
						class_read = CONFIG['store']['class']['read']	
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						p['qid'] =[id] #HANDLERS['processes']['config'].keys()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						gReader = factory.instance(type=class_read,args=p)
 | 
					 | 
					 | 
					 | 
						gReader = factory.instance(type=class_read,args=p)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						d =  gReader.read()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if 'learn' in d :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							logs = d['learn']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							del d['learn']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						else :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							logs = []
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						r = []
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if 'id' in request.args:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							id = request.args['id']
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							d = d[id]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							print CONFIG['monitor']['processes']['config'][id]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							print (apps)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							#apps = list(set(ML.Extract(['label'],d)))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							p = AnomalyDetection()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							#for row in d :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#xo = ML.Filter('label',app,d)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#info = ML.Filter('label',app,logs)	
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#value = p.predict(xo,info)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#print app,value
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#if value is not None:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								#	r.append(value)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						print r
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return json.dumps("[]")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = gReader.read()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = r[id]
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = ML.Filter('label',app,r)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						label = ML.Extract(['status'],r)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						r = ML.Extract(['cpu_usage','memory_usage'],r)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					@app.route('/anomalies/status')
 | 
					 | 
					 | 
					 | 
					@app.route('/anomalies/status')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					def anomalies_status():
 | 
					 | 
					 | 
					 | 
					def anomalies_status():
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -180,7 +175,7 @@ def anomalies_get():
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					if __name__== '__main__':
 | 
					 | 
					 | 
					 | 
					if __name__== '__main__':
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ThreadManager.start(CONFIG)	
 | 
					 | 
					 | 
					 | 
						#ThreadManager.start(CONFIG)	
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						app.run(host='0.0.0.0',debug=True,threaded=True)
 | 
					 | 
					 | 
					 | 
						app.run(host='0.0.0.0',debug=True,threaded=True)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |