├── 树莓派 ├── log.txt ├── data.txt ├── now_log.txt ├── exe.sh ├── now_task_name.txt ├── workbooks │ └── 测试.xlsx ├── FACEID │ └── Face-ID.xlsx ├── trained_knn_model.clf ├── log.py ├── server.py ├── data_create.py ├── face_distinguish.py └── train.py ├── facetest ├── proceed.txt ├── process.txt ├── Window │ ├── proceed.txt │ ├── process.txt │ ├── data.txt │ ├── log.txt │ ├── icon.png │ ├── frame.jpg │ ├── frame2.jpg │ ├── task_name.txt │ ├── now_task_name.txt │ ├── test_readline.py │ ├── 1.py │ ├── Toolbars.py │ ├── kill2.txt │ ├── kill.txt │ ├── Cbutton.py │ ├── File.py │ ├── ProcessBar.py │ ├── ttt.py │ ├── refresh.py │ ├── rstp_test.py │ ├── exe_now_before.py │ ├── timer.py │ ├── SSHConnection.py │ ├── SSH.py │ ├── test.py │ ├── interactive.py │ ├── exe_now.py │ ├── Dialog.py │ ├── Table.py │ ├── pi@192.168.1.4 │ ├── window.py │ └── trainner.yml ├── exe.sh ├── exe_now.sh ├── image.sh ├── test.xlsx ├── exe_now_before.sh ├── result │ └── 测试2.xlsx ├── FACEID │ └── Face-ID.xlsx └── workbooks │ └── 测试2.xlsx ├── 选区_061.png ├── 选区_062.png ├── 选区_063.png ├── 选区_064.png ├── images └── 徐梓涛.png ├── workbooks └── 签到表.xlsx ├── README.md ├── face_data_create.py ├── find_faces_in_picture_cnn.py └── face_distinguish.py /树莓派/log.txt: -------------------------------------------------------------------------------- 1 | Finish!!! -------------------------------------------------------------------------------- /facetest/proceed.txt: -------------------------------------------------------------------------------- 1 | False -------------------------------------------------------------------------------- /facetest/process.txt: -------------------------------------------------------------------------------- 1 | True -------------------------------------------------------------------------------- /树莓派/data.txt: -------------------------------------------------------------------------------- 1 | 2017133138 陈 -------------------------------------------------------------------------------- /facetest/Window/proceed.txt: -------------------------------------------------------------------------------- 1 | False -------------------------------------------------------------------------------- /facetest/Window/process.txt: -------------------------------------------------------------------------------- 1 | False -------------------------------------------------------------------------------- /facetest/Window/data.txt: -------------------------------------------------------------------------------- 1 | 2017133138 陈 -------------------------------------------------------------------------------- /facetest/Window/log.txt: -------------------------------------------------------------------------------- 1 | Image Get!!! -------------------------------------------------------------------------------- /树莓派/now_log.txt: -------------------------------------------------------------------------------- 1 | Capturing Image.... -------------------------------------------------------------------------------- /树莓派/exe.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | python3 /home/pi/Project/data_create.py 3 | -------------------------------------------------------------------------------- /facetest/exe.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | python3 /home/xzt/facetest/Window/Dialog.py 3 | -------------------------------------------------------------------------------- /选区_061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/选区_061.png -------------------------------------------------------------------------------- /选区_062.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/选区_062.png -------------------------------------------------------------------------------- /选区_063.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/选区_063.png -------------------------------------------------------------------------------- /选区_064.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/选区_064.png -------------------------------------------------------------------------------- /facetest/exe_now.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | python3 /home/xzt/facetest/Window/exe_now.py 3 | -------------------------------------------------------------------------------- /images/徐梓涛.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/images/徐梓涛.png -------------------------------------------------------------------------------- /facetest/image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | python3 /home/xzt/facetest/Window/refresh.py 3 | 4 | -------------------------------------------------------------------------------- /facetest/test.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/test.xlsx -------------------------------------------------------------------------------- /workbooks/签到表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/workbooks/签到表.xlsx -------------------------------------------------------------------------------- /facetest/exe_now_before.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | python3 /home/xzt/facetest/Window/exe_now_before.py 3 | -------------------------------------------------------------------------------- /树莓派/now_task_name.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/树莓派/now_task_name.txt -------------------------------------------------------------------------------- /树莓派/workbooks/测试.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/树莓派/workbooks/测试.xlsx -------------------------------------------------------------------------------- /facetest/Window/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/Window/icon.png -------------------------------------------------------------------------------- /facetest/result/测试2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/result/测试2.xlsx -------------------------------------------------------------------------------- /树莓派/FACEID/Face-ID.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/树莓派/FACEID/Face-ID.xlsx -------------------------------------------------------------------------------- /facetest/Window/frame.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/Window/frame.jpg -------------------------------------------------------------------------------- /facetest/Window/frame2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/Window/frame2.jpg -------------------------------------------------------------------------------- /facetest/Window/task_name.txt: -------------------------------------------------------------------------------- 1 | test 2 | 测试 3 | llll 4 | 测试2 5 | 8888 6 | 高等数学 7 | 线性代数 8 | 高等数学20181119 9 | -------------------------------------------------------------------------------- /树莓派/trained_knn_model.clf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/树莓派/trained_knn_model.clf -------------------------------------------------------------------------------- /facetest/FACEID/Face-ID.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/FACEID/Face-ID.xlsx -------------------------------------------------------------------------------- /facetest/workbooks/测试2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/workbooks/测试2.xlsx -------------------------------------------------------------------------------- /facetest/Window/now_task_name.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZT-XU/facerec_raspi/HEAD/facetest/Window/now_task_name.txt -------------------------------------------------------------------------------- /facetest/Window/test_readline.py: -------------------------------------------------------------------------------- 1 | 2 | with open('data.txt','r') as file: 3 | line = file.readline() 4 | list = line.split(' ') 5 | print(list) 6 | -------------------------------------------------------------------------------- /facetest/Window/1.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | while True: 4 | img = cv2.imread('frame.jpg',0) 5 | cv2.imshow('image',img) 6 | k = cv2.waitKey(0) -------------------------------------------------------------------------------- /facetest/Window/Toolbars.py: -------------------------------------------------------------------------------- 1 | from Dialog import Dialog 2 | from PyQt5.QtWidgets import QApplication 3 | import sys 4 | app = QApplication(sys.argv) 5 | dialog = Dialog() 6 | sys.exit(app.exec_()) 7 | -------------------------------------------------------------------------------- /facetest/Window/kill2.txt: -------------------------------------------------------------------------------- 1 | 16370 pts/0 S+ 0:00 /bin/sh /home/xzt/facetest/exe_now.sh 2 | 16494 pts/0 S+ 0:00 sh -c ps a | grep exe_now.sh > /home/xzt/facetest/Window/kill2.txt 3 | 16496 pts/0 S+ 0:00 grep exe_now.sh 4 | -------------------------------------------------------------------------------- /facetest/Window/kill.txt: -------------------------------------------------------------------------------- 1 | 16371 pts/0 Sl+ 0:00 python3 /home/xzt/facetest/Window/exe_now.py 2 | 16491 pts/0 S+ 0:00 sh -c ps a | grep exe_now.py > /home/xzt/facetest/Window/kill.txt 3 | 16493 pts/0 S+ 0:00 grep exe_now.py 4 | -------------------------------------------------------------------------------- /树莓派/log.py: -------------------------------------------------------------------------------- 1 | from subprocess import Popen, PIPE 2 | from time import sleep 3 | p = Popen("/home/pi/Project/exe.sh", stdout=PIPE, close_fds=True) 4 | count = 0 5 | while True: 6 | count += 1 7 | print('%s : %s' % (count, p.stdout.readline().strip())) 8 | if (p.stdout.readline().strip() == "Finish!!!"): 9 | break 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 人脸识别签到系统 2 | 终于完成了,写的很乱,小白练手项目,看看就行。。。。。。 3 | 最终版本 4 | 效果: 5 | ![Aaron Swartz](https://github.com/ZT-XU/facerec_raspi/raw/master/%E9%80%89%E5%8C%BA_061.png) 6 | ![Aaron Swartz](https://github.com/ZT-XU/facerec_raspi/raw/master/%E9%80%89%E5%8C%BA_062.png) 7 | ![Aaron Swartz](https://github.com/ZT-XU/facerec_raspi/raw/master/%E9%80%89%E5%8C%BA_063.png) 8 | ![Aaron Swartz](https://github.com/ZT-XU/facerec_raspi/raw/master/%E9%80%89%E5%8C%BA_064.png) 9 | -------------------------------------------------------------------------------- /facetest/Window/Cbutton.py: -------------------------------------------------------------------------------- 1 | from PyQt5 import QtGui 2 | import sys 3 | from PyQt5.QtWidgets import QApplication, QMainWindow, QTextBrowser, QTextEdit, QGraphicsTextItem, \ 4 | QPlainTextDocumentLayout, QPlainTextEdit, QGraphicsSimpleTextItem, QWidget 5 | 6 | class Window(QWidget): 7 | def __init__(self): 8 | super().__init__() 9 | 10 | self.title = "PyQt5 Window" 11 | self.top = 100 12 | self.left = 100 13 | self.width = 680 14 | self.height = 500 15 | 16 | self.InitWindow() 17 | 18 | def InitWindow(self): 19 | self.setWindowTitle(self.title) 20 | self.setWindowIcon(QtGui.QIcon("icon.png")) 21 | self.setGeometry(self.top, self.left, self.width, self.height) 22 | #pp = QPlainTextEdit(self) 23 | oo = QTextBrowser(self) 24 | 25 | self.show() 26 | 27 | 28 | App = QApplication(sys.argv) 29 | window = Window() 30 | sys.exit(App.exec()) 31 | -------------------------------------------------------------------------------- /facetest/Window/File.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from PyQt5.QtWidgets import (QMainWindow, QTextEdit, 3 | QAction, QFileDialog, QApplication) 4 | from PyQt5.QtGui import QIcon 5 | 6 | 7 | class Example(QMainWindow): 8 | 9 | def __init__(self): 10 | super().__init__() 11 | 12 | self.initUI() 13 | 14 | def initUI(self): 15 | self.textEdit = QTextEdit() 16 | self.setCentralWidget(self.textEdit) 17 | self.statusBar() 18 | 19 | openFile = QAction(QIcon('open.png'), 'Open', self) 20 | openFile.setShortcut('Ctrl+O') 21 | openFile.setStatusTip('Open new File') 22 | openFile.triggered.connect(self.showDialog) 23 | 24 | menubar = self.menuBar() 25 | fileMenu = menubar.addMenu('&File') 26 | fileMenu.addAction(openFile) 27 | 28 | self.setGeometry(300, 300, 350, 300) 29 | self.setWindowTitle('File dialog') 30 | self.show() 31 | 32 | def showDialog(self): 33 | fname = QFileDialog.getOpenFileName(self, 'Open file', '/home/xzt/') 34 | print(fname) 35 | self.close() 36 | 37 | if __name__ == '__main__': 38 | app = QApplication(sys.argv) 39 | ex = Example() 40 | sys.exit(app.exec_()) -------------------------------------------------------------------------------- /树莓派/server.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #-*-coding:utf-8 -*- 3 | import socket 4 | import cv2 5 | import picamera 6 | import numpy 7 | 8 | # socket.AF_INET用于服务器与服务器之间的网络通信 9 | # socket.SOCK_STREAM代表基于TCP的流式socket通信 10 | sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 11 | # 连接服务端 12 | address_server = ('192.168.1.100', 8080) 13 | sock.connect(address_server) 14 | 15 | 16 | # 从摄像头采集图像 17 | camera = picamera.PiCamera() 18 | camera.resolution = (320, 240) 19 | frame = numpy.empty((240, 320, 3), dtype=numpy.uint8) 20 | encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),90] #设置编码参数 21 | 22 | while True: 23 | camera.capture(frame, format="rgb") 24 | # 首先对图片进行编码,因为socket不支持直接发送图片 25 | result, imgencode = cv2.imencode('.jpg', frame) 26 | data = numpy.array(imgencode) 27 | stringData = data.tostring() 28 | # 首先发送图片编码后的长度 29 | #sock.send(len(stringData)) 30 | # 然后一个字节一个字节发送编码的内容 31 | # 如果是python对python那么可以一次性发送,如果发给c++的server则必须分开发因为编码里面有字符串结束标志位,c++会截断 32 | for i in range (0,len(stringData)): 33 | sock.send(stringData[i]) 34 | ret, frame = capture.read() 35 | #cv2.imshow('CLIENT',frame) 36 | # if cv2.waitKey(10) == 27: 37 | # break 38 | # 接收server发送的返回信息 39 | data_r = sock.recv(50) 40 | print (data_r) 41 | 42 | sock.close() 43 | cv2.destroyAllWindows() 44 | -------------------------------------------------------------------------------- /face_data_create.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | import openpyxl 4 | 5 | 6 | wb_name = '' 7 | res = input('是否创建一个新的签到表:(yes/no)') 8 | if 'yes' == res.lower(): 9 | wb = openpyxl.Workbook() 10 | ws = wb.active 11 | num = 0 12 | else: 13 | wb_name = input('请输入已有的excel文件名:') 14 | wb = openpyxl.load_workbook(wb_name + '.xlsx') 15 | ws = wb.active 16 | num = 1 17 | 18 | face_cascade = cv2.CascadeClassifier('/home/xzt/OpenCV-Python-Series/src/cascades/data/haarcascade_frontalface_alt.xml') 19 | 20 | cap = cv2.VideoCapture(0) 21 | 22 | 23 | value_list = [] 24 | 25 | ID = input("Enter your name:") 26 | for cells in ws['A']: 27 | value_list.append(cells.value) 28 | num = num + 1 29 | if ID not in value_list: 30 | cell = ws.cell(row=num, column=1, value=ID) 31 | 32 | while(ID): 33 | ret, frame = cap.read() 34 | gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 35 | faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5) 36 | for (x, y, w, h) in faces: 37 | roi_gray = gray[y:y+h, x:x+w] 38 | img_item = ID + ".png" 39 | cv2.imwrite('./images/' + img_item, roi_gray) 40 | print('get!') 41 | 42 | cv2.imshow('frame',frame) 43 | if cv2.waitKey(1) & 0xFF == ord('q'): 44 | break 45 | cap.release() 46 | cv2.destroyAllWindows() 47 | if not wb_name: 48 | wb_name = input('请输入表格名称:') 49 | wb.save('./workbooks/' + wb_name + '.xlsx') 50 | print('Finish!!!') -------------------------------------------------------------------------------- /facetest/Window/ProcessBar.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtWidgets import QApplication, QProgressBar, QPushButton 2 | from PyQt5 import QtWidgets 3 | from PyQt5.QtCore import Qt, QBasicTimer 4 | 5 | 6 | class ProgressBar(QtWidgets.QWidget): 7 | def __init__(self): 8 | QtWidgets.QWidget.__init__(self,Sec) 9 | self.timeStep = Sec * 10 10 | self.setGeometry(300, 300, 250, 150) 11 | self.setWindowTitle('ProgressBar') 12 | self.pbar = QProgressBar(self) 13 | self.pbar.setGeometry(30, 40, 200, 25) 14 | 15 | self.button = QPushButton('Start', self) 16 | self.button.setFocusPolicy(Qt.NoFocus) 17 | self.button.move(40, 80) 18 | 19 | self.button.clicked.connect(self.onStart) 20 | self.timer = QBasicTimer() 21 | self.step = 0 22 | 23 | def timerEvent(self, event): 24 | if self.step >= 100: 25 | self.timer.stop() 26 | self.timeStep = 0 27 | self.step = 0 28 | return 29 | self.step = self.step + 1 30 | self.pbar.setValue(self.step) 31 | 32 | def onStart(self): 33 | if self.timer.isActive(): 34 | self.timer.stop() 35 | self.button.setText('Start') 36 | else: 37 | self.timer.start(tiemStep, self) 38 | self.button.setText('Stop') 39 | 40 | 41 | if __name__ == "__main__": 42 | import sys 43 | app = QApplication(sys.argv) 44 | qb = ProgressBar() 45 | qb.show() 46 | sys.exit(app.exec_()) 47 | -------------------------------------------------------------------------------- /facetest/Window/ttt.py: -------------------------------------------------------------------------------- 1 | table = "abcdefghijklmnopqrstuvwxyz" 2 | def encode(message,key): 3 | message = message.replace(" ",""); 4 | result = "" 5 | keylen = len(key) 6 | messagelen = len(message) 7 | _round = messagelen // keylen 8 | remain = messagelen % keylen 9 | for i in range(_round): 10 | for j in range(keylen): 11 | move = table.index(key[j]) 12 | code = table[(table.index(message[i*keylen+j])+move)%26] 13 | result += code 14 | for i in range(remain): 15 | move = table.index(key[i]) 16 | code = table[(table.index(message[_round*keylen+i])+move)%26] 17 | result += code 18 | return result 19 | 20 | def decode(code,key): 21 | code = code.replace(" ",""); 22 | result = "" 23 | keylen = len(key) 24 | codelen = len(code) 25 | _round = codelen // keylen 26 | remain = codelen % keylen 27 | for i in range(_round): 28 | for j in range(keylen): 29 | move = table.index(key[j]) 30 | message = table[(table.index(code[i*keylen+j])-move)%26] 31 | result += message 32 | for i in range(remain): 33 | move = table.index(key[i]) 34 | message = table[(table.index(code[_round*keylen+i])-move)%26] 35 | result += message 36 | return result 37 | 38 | def main(): 39 | message = input("Message:") 40 | key = input("Key:") 41 | code = encode(message,key) 42 | print(code) 43 | message = decode(code,key) 44 | print(message) 45 | 46 | if __name__ == "__main__": 47 | main() -------------------------------------------------------------------------------- /facetest/Window/refresh.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | from PIL import Image, ImageDraw 3 | 4 | while True: 5 | # Load an image with an unknown face 6 | try: 7 | unknown_image = face_recognition.load_image_file("frame.jpg") 8 | 9 | # Find all the faces and face encodings in the unknown image 10 | face_locations = face_recognition.face_locations(unknown_image) 11 | 12 | # Convert the image to a PIL-format image so that we can draw on top of it with the Pillow library 13 | # See http://pillow.readthedocs.io/ for more about PIL/Pillow 14 | pil_image = Image.fromarray(unknown_image) 15 | # Create a Pillow ImageDraw Draw instance to draw with 16 | draw = ImageDraw.Draw(pil_image) 17 | 18 | # Loop through each face found in the unknown image 19 | for (top, right, bottom, left) in face_locations: 20 | 21 | # Draw a box around the face using the Pillow module 22 | draw.rectangle(((left, top), (right, bottom)), outline=(255, 0, 0)) 23 | 24 | 25 | 26 | # Remove the drawing library from memory as per the Pillow docs 27 | del draw 28 | 29 | # Display the resulting image 30 | pil_image.save("frame2.jpg") 31 | with open("proceed.txt","r") as f: 32 | b = f.read() 33 | if not eval(b): 34 | break 35 | except: 36 | pass 37 | #with open("proceed.txt","r") as f: 38 | # b = f.read() 39 | #if not eval(b): 40 | # break 41 | # You can also save a copy of the new image to disk if you want by uncommenting this line 42 | # pil_image.save("image_with_boxes.jpg") -------------------------------------------------------------------------------- /find_faces_in_picture_cnn.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import face_recognition 3 | import picamera 4 | import numpy as np 5 | import openpyxl 6 | 7 | 8 | wb_name = '' 9 | res = input('是否创建一个新的签到表:(yes/no)') 10 | if 'yes' == res.lower(): 11 | wb = openpyxl.Workbook() 12 | ws = wb.active 13 | num = 0 14 | else: 15 | wb_name = input('请输入已有的excel文件名:') 16 | wb = openpyxl.load_workbook(wb_name + '.xlsx') 17 | ws = wb.active 18 | num = 1 19 | 20 | value_list = [] 21 | 22 | ID = input("Enter your name:") 23 | for cells in ws['A']: 24 | value_list.append(cells.value) 25 | num = num + 1 26 | if ID not in value_list: 27 | cell = ws.cell(row=num, column=1, value=ID) 28 | 29 | camera = picamera.PiCamera() 30 | camera.resolution = (320, 240) 31 | output = np.empty((240, 320, 3), dtype=np.uint8) 32 | 33 | while(ID): 34 | print("Capturing image.") 35 | # Grab a single frame of video from the RPi camera as a numpy array 36 | camera.capture(output, format="rgb") 37 | face_locations = face_recognition.face_locations(output, number_of_times_to_upsample=0, model="cnn") 38 | 39 | 40 | for face_location in face_locations: 41 | 42 | # Print the location of each face in this image 43 | top, right, bottom, left = face_location 44 | 45 | 46 | # You can access the actual face itself like this: 47 | face_image = image[top:bottom, left:right] 48 | pil_image = Image.fromarray(face_image) 49 | g_pil_image = pil_image.convert('L') 50 | with open('./images' + ID + '.png', 'wb') as f: 51 | f.write(g_pil_image) 52 | print('Finsh!!!') 53 | ID = False 54 | 55 | -------------------------------------------------------------------------------- /facetest/Window/rstp_test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #-*-coding:utf-8 -*- 3 | import socket 4 | import cv2 5 | import numpy 6 | 7 | # 接受图片大小的信息 8 | def recv_size(sock, count): 9 | buf = b'' 10 | while count: 11 | newbuf = sock.recv(count) 12 | if not newbuf: return None 13 | buf += newbuf 14 | count -= len(newbuf) 15 | return buf 16 | 17 | # 接收图片 18 | def recv_all(sock, count): 19 | buf = '' 20 | while count: 21 | # 这里每次只接收一个字节的原因是增强python与C++的兼容性 22 | # python可以发送任意的字符串,包括乱码,但C++发送的字符中不能包含'\0',也就是字符串结束标志位 23 | newbuf = sock.recv(1) 24 | if not newbuf: return None 25 | buf += newbuf 26 | count -= len(newbuf) 27 | return buf 28 | 29 | # socket.AF_INET用于服务器与服务器之间的网络通信 30 | # socket.SOCK_STREAM代表基于TCP的流式socket通信 31 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 32 | s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 33 | 34 | # 设置地址与端口,如果是接收任意ip对本服务器的连接,地址栏可空,但端口必须设置 35 | address = ('', 8080) 36 | s.bind(address) # 将Socket(套接字)绑定到地址 37 | s.listen(True) # 开始监听TCP传入连接 38 | print ('Waiting for images...') 39 | # 接受TCP链接并返回(conn, addr),其中conn是新的套接字对象,可以用来接收和发送数据,addr是链接客户端的地址。 40 | conn, addr = s.accept() 41 | 42 | while 1: 43 | length = recv_size(conn,16) #首先接收来自客户端发送的大小信息 44 | if isinstance (length,str): #若成功接收到大小信息,进一步再接收整张图片 45 | stringData = recv_all(conn, int(length)) 46 | data = numpy.fromstring(stringData, dtype='uint8') 47 | decimg=cv2.imdecode(data,1) #解码处理,返回mat图片 48 | cv2.imshow('SERVER',decimg) 49 | if cv2.waitKey(10) == 27: 50 | break 51 | print('Image recieved successfully!') 52 | conn.send("Server has recieved messages!") 53 | if cv2.waitKey(10) == 27: 54 | break 55 | 56 | s.close() 57 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /facetest/Window/exe_now_before.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QDialog, QLabel 3 | import pexpect,os 4 | from PyQt5.QtCore import QTimer 5 | from PyQt5.QtGui import QPixmap 6 | 7 | 8 | 9 | class exe_dialog(QDialog): 10 | 11 | def __init__(self): 12 | super().__init__() 13 | self.resize(320,240) 14 | self.child = None 15 | self.setWindowTitle("正在运行") 16 | self.tip = QLabel("程序正在进行...请不要关闭此窗口") 17 | vbox = QVBoxLayout() 18 | self.image = QLabel() 19 | self.button = QPushButton("退出") 20 | self.image.resize(240,360) 21 | self.timer = QTimer() 22 | self.timer2 = QTimer() 23 | self.timer.start(1000) 24 | self.timer2.start(1) 25 | #self.timer.timeout.connect(self.shutdown) 26 | vbox.addWidget(self.tip) 27 | vbox.addWidget(self.image) 28 | vbox.addWidget(self.button) 29 | self.setLayout(vbox) 30 | self.conn = None 31 | self.show() 32 | #self.exe() 33 | #self.getimage() 34 | self.timer2.timeout.connect(self.getimage) 35 | self.button.clicked.connect(self.shutdown) 36 | 37 | 38 | def getimage(self): 39 | if os.path.isfile('frame2.jpg'): 40 | self.image.setPixmap(QPixmap("frame2.jpg")) 41 | with open("process.txt","r") as f: 42 | b = f.read() 43 | if "F" in b: 44 | with open("proceed.txt","w") as f: 45 | f.write("False") 46 | self.close() 47 | 48 | def shutdown(self): 49 | with open("proceed.txt", "w") as f: 50 | f.write("False") 51 | with open("process.txt", "w") as f: 52 | f.write("False") 53 | self.close() 54 | 55 | app = QApplication(sys.argv) 56 | dialog3 = exe_dialog() 57 | sys.exit(app.exec_()) 58 | 59 | -------------------------------------------------------------------------------- /树莓派/data_create.py: -------------------------------------------------------------------------------- 1 | from PIL import Image 2 | import face_recognition 3 | import picamera 4 | import numpy as np 5 | import openpyxl 6 | from time import sleep 7 | 8 | 9 | with open('/home/pi/Project/data.txt', 'r', encoding="utf-8") as f: 10 | data_list = f.readline().split(' ') 11 | ID = data_list[0] 12 | Name = data_list[1] 13 | 14 | 15 | wb_name = 'Face-ID' 16 | wb = openpyxl.load_workbook('/home/pi/Project/FACEID/' + wb_name + '.xlsx') 17 | ws = wb.active 18 | num = 1 19 | 20 | value_list = [] 21 | for cells in ws['A']: 22 | value_list.append(cells.value) 23 | num = num + 1 24 | if ID not in value_list: 25 | cell = ws.cell(row=num, column=1, value=ID) 26 | cell = ws.cell(row=num, column=2, value=Name) 27 | 28 | camera = picamera.PiCamera() 29 | camera.resolution = (320, 240) 30 | output = np.empty((240, 320, 3), dtype=np.uint8) 31 | 32 | while(ID): 33 | with open('/home/pi/Project/log.txt', 'w') as File: 34 | File.write("Capturing image...") 35 | # Grab a single frame of video from the RPi camera as a numpy array 36 | camera.capture(output, format="rgb") 37 | face_locations = face_recognition.face_locations(output) 38 | 39 | for face_location in face_locations: 40 | 41 | # Print the location of each face in this image 42 | top, right, bottom, left = face_location 43 | 44 | 45 | # You can access the actual face itself like this: 46 | face_image = output[top-20:bottom+20, left-20:right+20] 47 | pil_image = Image.fromarray(face_image) 48 | g_pil_image = pil_image.convert('L') 49 | g_pil_image.save('/home/pi/Project/images/' + ID + '.png') 50 | with open('/home/pi/Project/log.txt', 'w') as File: 51 | File.write("Image Get!!!") 52 | sleep(2) 53 | ID = False 54 | wb.save('/home/pi/Project/FACEID/'+ wb_name + '.xlsx') 55 | with open('/home/pi/Project/log.txt','w') as File: 56 | File.write("Finish!!!") 57 | -------------------------------------------------------------------------------- /facetest/Window/timer.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtWidgets import QWidget, QLabel, QPushButton, QGridLayout, QApplication 2 | from PyQt5.QtCore import QTime, QTimer 3 | import sys 4 | 5 | 6 | class ShowTime(QWidget): 7 | def __init__(self): 8 | super().__init__() 9 | 10 | self.isTimeStart = False # 标记时间是否开始计时 11 | 12 | self.setWindowTitle("QLable 显示计时时间") 13 | self.lable_time = QLabel('运行时间:', self) 14 | self.lable_time_val = QLabel('00:00:00', self) 15 | 16 | self.btn_start = QPushButton('开始显示') 17 | self.btn_stop = QPushButton('停止计时') 18 | 19 | # 布局 20 | self.mainLayout = QGridLayout(self) 21 | self.mainLayout.addWidget(self.lable_time, 0, 0, 1, 1) 22 | self.mainLayout.addWidget(self.lable_time_val, 0, 1, 1, 2) 23 | 24 | self.mainLayout.addWidget(self.btn_start, 1, 1, 1, 1) 25 | self.mainLayout.addWidget(self.btn_stop, 1, 2, 1, 1) 26 | 27 | # 创建定时器对象和时间对象 28 | self.timer = QTimer() # 29 | self.timeClock = QTime() 30 | 31 | # 信号与槽 32 | self.btn_start.clicked.connect(self.timestart) 33 | self.timer.timeout.connect(self.addtime) 34 | self.btn_stop.clicked.connect(self.timestop) 35 | 36 | def timestart(self): # 启动计时 37 | if not self.isTimeStart: 38 | self.timeClock.setHMS(0, 0, 0) # 初始时设置时间为 00:00:00 39 | self.timer.start(1000) # 启动定时器,定时器对象每隔一秒发射一个timeout信号 40 | self.isTimeStart = True 41 | 42 | def addtime(self): # 计时时间增一秒,并显示在QLable上 43 | self.timeClock = self.timeClock.addMSecs(1000) # 时间增加一秒 44 | self.lable_time_val.setText(self.timeClock.toString("hh:mm:ss")) # 标签显示时间 45 | 46 | def timestop(self): # 停止计时 47 | if self.isTimeStart: 48 | self.timer.stop() 49 | self.isTimeStart = False 50 | 51 | 52 | if __name__ == "__main__": 53 | app = QApplication(sys.argv) 54 | demo = ShowTime() 55 | demo.show() 56 | sys.exit(app.exec()) 57 | 58 | -------------------------------------------------------------------------------- /facetest/Window/SSHConnection.py: -------------------------------------------------------------------------------- 1 | import paramiko 2 | 3 | class SSHConnection(object): 4 | def __init__(self, username, hostname, password): 5 | super().__init__() 6 | 7 | self._host = hostname 8 | self._port = 22 9 | self._username = username 10 | self._password = password 11 | self._sftp = None 12 | self._client = None 13 | self.chan = None 14 | self._connect() 15 | 16 | def _connect(self): 17 | transport = paramiko.Transport((self._host, self._port)) 18 | transport.connect(username=self._username, password=self._password) 19 | self._transport = transport 20 | 21 | 22 | def download(self, remotepath, localpath): 23 | if self._sftp is None: 24 | self._sftp = paramiko.SFTPClient.from_transport(self._transport) 25 | self._sftp.get(remotepath, localpath) 26 | 27 | def put(self, localpath, remotepath): 28 | if self._sftp is None: 29 | self._sftp = paramiko.SFTPClient.from_transport(self._transport) 30 | self._sftp.put(localpath, remotepath) 31 | 32 | def exec_command(self, command): 33 | if self._client is None: 34 | self._client = paramiko.SSHClient() 35 | self._client._transport = self._transport 36 | 37 | stdin, stdout, stderr = self._client.exec_command(command) 38 | data = stdout.read().decode() 39 | if len(data) > 0: 40 | return data 41 | err = stderr.read() 42 | if len(err) > 0: 43 | print(err.strip()) 44 | return err 45 | 46 | def send_command(self,char): 47 | if self._client is None: 48 | self._client = paramiko.SSHClient() 49 | self._client._transport = self._transport 50 | self.chan = self._client.invoke_shell() 51 | self.chan.send(char) 52 | 53 | 54 | 55 | def close(self): 56 | if self._transport: 57 | self._transport.close() 58 | if self._client: 59 | self._client.close() 60 | 61 | if __name__ == "__main__": 62 | conn = SSHConnection('pi','192.168.1.4','1') 63 | conn.exec_command('python3 /home/pi/1.py') 64 | #conn.exec_command('exit') 65 | #conn.exec_command('python3 -m /home/pi/Project/__pycache__/data_create.cpython-35.pyc') 66 | #conn.exec_command('python3 /home/pi/Project/__pycache__/data_create.cpython-35.pyc') -------------------------------------------------------------------------------- /facetest/Window/SSH.py: -------------------------------------------------------------------------------- 1 | import pexpect 2 | # SSH连接成功时的命令行交互窗口中前面的提示字符的集合 3 | PROMPT = ['# ', '>>> ', '> ', '\$ '] 4 | def send_command(child, cmd): 5 | # 发送一条命令 6 | child.sendline(cmd) 7 | child.sendline('yes') 8 | # 期望有命令行提示字符出现 9 | child.expect(PROMPT) 10 | 11 | # 将之前的内容都输出 12 | print(child.before) 13 | 14 | def connect(user, host, password): 15 | # 表示主机已使用一个新的公钥的消息 16 | ssh_newkey = 'Are you sure you want to continue connecting' 17 | connStr = 'ssh ' + user + '@' + host 18 | 19 | ''''' 20 | pexpect.spawn()和pexpect.run()依赖于Python标准库中的pty模块,而pty模块只在POSIX系统中存在,所以Windows系统上的功能有限。 21 | pexpect.spawn类继承自SpawnBase类,用法如:child = pexpect.spawn('/usr/bin/ssh user@example.com') 22 | process = pexpect.spawn('ftp sw-tftp')中的字符串就是要执行的程序,这里我们打开一个到 sw-tftp 服务器的 ftp 连接。 23 | spawn() 中的第一个元素就是要执行的命令,除此之外还可以指定一些其他参数,比如: pexpect.spawn('ftp sw-tftp', timeout=60) 就指定了超时时间 24 | process 就是 spawn() 的程序操作句柄了,之后对这个程序的所有操作都是基于这个句柄的,所以它可以说是最重要的部分。 25 | ''' 26 | # 为ssh命令生成一个spawn类的对象 27 | child = pexpect.spawn(connStr) 28 | 29 | ''''' 30 | process.expect(pattern_list, timeout=-1, searchwindowsize=None) 31 | # pattern_list 正则表达式列表,表示要匹配这些内容 32 | # timeout 不设置或者设置为-1的话,超时时间就采用self.timeout的值,默认是30秒。也可以自己设置。 33 | # searchwindowsize 功能和 spawn 上的一样 34 | 35 | expect()方法是最常用的方法之一,等待子应用返回指定的字符串。 36 | 如果没有任何字符模式被匹配,将抛出超时异常,默认超时时间为30s 37 | process.expect('[Nn]ame') 38 | 上面的代码表示:匹配 process 这个句柄(代表 spawn 方法的例子中我们启动的 ftp 连接)中的 name 关键字,其中 n 不分大小写。 39 | 40 | ''' 41 | 42 | # 期望有ssh_newkey字符、提示输入密码的字符出现,否则超时 43 | ret = child.expect([pexpect.TIMEOUT, ssh_newkey, '[P|p]assword: ']) 44 | 45 | # 匹配到超时TIMEOUT 46 | if ret == 0: 47 | print 48 | '[-] Error Connecting' 49 | return 50 | 51 | # 匹配到ssh_newkey 52 | if ret == 1: 53 | # 发送yes回应ssh_newkey并期望提示输入密码的字符出现 54 | child.sendline('yes') 55 | ret = child.expect([pexpect.TIMEOUT, '[P|p]assword: ']) 56 | 57 | # 匹配到超时TIMEOUT 58 | if ret == 0: 59 | print 60 | '[-] Error Connecting' 61 | return 62 | 63 | # 发送密码 64 | child.sendline(password) 65 | child.expect(PROMPT) 66 | return child 67 | 68 | 69 | def main(): 70 | host = '192.168.1.4' 71 | user = 'pi' 72 | password = '1' 73 | child = connect(user, host, password) 74 | send_command(child, 'python3 1.py') 75 | 76 | 77 | if __name__ == '__main__': 78 | main() -------------------------------------------------------------------------------- /facetest/Window/test.py: -------------------------------------------------------------------------------- 1 | import socket, time, struct, os, threading 2 | #import sqlite3 3 | 4 | host = '' 5 | port = 5555 6 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 定义socket类型 7 | s.bind((host, port)) # 绑定需要监听的Ip和端口号,tuple格式 8 | s.listen(1) 9 | 10 | 11 | def conn_thread(connection, address): 12 | #con = sqlite3.connect('test.db') 13 | location = '' 14 | i = 0 15 | while True: 16 | try: 17 | connection.settimeout(600) 18 | fileinfo_size = struct.calcsize('128sl') 19 | buf = connection.recv(fileinfo_size) 20 | #print(buf) 21 | if buf: # 如果不加这个if,第一个文件传输完成后会自动走到下一句 22 | filename, filesize = struct.unpack('128sl', buf) 23 | print("照片大小:"+str(filesize)) 24 | if filesize< 0 or filesize > 2432075: 25 | # da = connection.recv() 26 | continue 27 | filename = filename.decode().strip('\00') 28 | # print(filename) 29 | #filename = os.path.join('e:\\', ('new_' + filename)) 30 | print('file new name is %s, filesize is %s' % (filename, filesize)) 31 | 32 | # 获取当前时间 33 | localtime = time.time() 34 | # 获取地址 35 | # if(address == ''): 36 | # location = 'netlab_530' 37 | location = 'netlab_530' 38 | # 构造文件路径 39 | filepath = '1'+'.jpg' 40 | # 将文件名加入链表 41 | #cur = con.cursor() 42 | #for t in [(location,localtime)]: 43 | #cur.execute("INSERT INTO image (location,localtime) \ VALUES (?,?)",t) 44 | #con.commit() 45 | file = open(filepath,'wb') 46 | # file = open('./face/'+filename, 'wb') 47 | print('stat receiving...filesize:' + str(filesize)) 48 | recvd_size = 0 # 定义接收了的文件大小 49 | while recvd_size != filesize: 50 | if filesize - recvd_size >= 1024: 51 | rdata = connection.recv(1024) 52 | recvd_size += len(rdata) 53 | elif filesize - recvd_size <1024 and filesize - recvd_size > 0: 54 | print(filesize - recvd_size) 55 | rdata = connection.recv(filesize - recvd_size) 56 | recvd_size += len(rdata) 57 | file.write(rdata) 58 | file.close() 59 | print('receive done') 60 | # connection.close() 61 | i += 1 62 | except socket.timeout: 63 | connection.close() 64 | #con.close() 65 | 66 | 67 | 68 | def main(): 69 | while True: 70 | print("开始接收图片") 71 | connection, address = s.accept() 72 | print('Connected by ', address) 73 | thread = threading.Thread(target=conn_thread, args=(connection, address)) # 使用threading也可以 74 | thread.start() 75 | # threading.start_new_thread(conn_thread, (connection, address)) 76 | 77 | s.close() 78 | 79 | 80 | if __name__ == '__main__': 81 | main() 82 | -------------------------------------------------------------------------------- /facetest/Window/interactive.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2003-2007 Robey Pointer 2 | # 3 | # This file is part of paramiko. 4 | # 5 | # Paramiko is free software; you can redistribute it and/or modify it under the 6 | # terms of the GNU Lesser General Public License as published by the Free 7 | # Software Foundation; either version 2.1 of the License, or (at your option) 8 | # any later version. 9 | # 10 | # Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY 11 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 12 | # A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13 | # details. 14 | # 15 | # You should have received a copy of the GNU Lesser General Public License 16 | # along with Paramiko; if not, write to the Free Software Foundation, Inc., 17 | # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 18 | 19 | 20 | import socket 21 | import sys 22 | from paramiko.py3compat import u 23 | 24 | # windows does not have termios... 25 | try: 26 | import termios 27 | import tty 28 | 29 | has_termios = True 30 | except ImportError: 31 | has_termios = False 32 | 33 | 34 | def interactive_shell(chan): 35 | if has_termios: 36 | posix_shell(chan) 37 | else: 38 | windows_shell(chan) 39 | 40 | 41 | def posix_shell(chan): 42 | import select 43 | 44 | oldtty = termios.tcgetattr(sys.stdin) 45 | try: 46 | tty.setraw(sys.stdin.fileno()) 47 | tty.setcbreak(sys.stdin.fileno()) 48 | chan.settimeout(0.0) 49 | 50 | while True: 51 | r, w, e = select.select([chan, sys.stdin], [], []) 52 | if chan in r: 53 | try: 54 | x = u(chan.recv(1024)) 55 | if len(x) == 0: 56 | sys.stdout.write("\r\n*** EOF\r\n") 57 | break 58 | sys.stdout.write(x) 59 | sys.stdout.flush() 60 | except socket.timeout: 61 | pass 62 | if sys.stdin in r: 63 | x = sys.stdin.read(1) 64 | if len(x) == 0: 65 | break 66 | chan.send(x) 67 | 68 | finally: 69 | termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) 70 | 71 | 72 | # thanks to Mike Looijmans for this code 73 | def windows_shell(chan): 74 | import threading 75 | 76 | sys.stdout.write( 77 | "Line-buffered terminal emulation. Press F6 or ^Z to send EOF.\r\n\r\n" 78 | ) 79 | 80 | def writeall(sock): 81 | while True: 82 | data = sock.recv(256) 83 | if not data: 84 | sys.stdout.write("\r\n*** EOF ***\r\n\r\n") 85 | sys.stdout.flush() 86 | break 87 | sys.stdout.write(data) 88 | sys.stdout.flush() 89 | 90 | writer = threading.Thread(target=writeall, args=(chan,)) 91 | writer.start() 92 | 93 | try: 94 | while True: 95 | d = sys.stdin.read(1) 96 | if not d: 97 | break 98 | chan.send(d) 99 | except EOFError: 100 | # user hit ^Z or F6 101 | pass 102 | -------------------------------------------------------------------------------- /face_distinguish.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | import cv2 3 | import openpyxl 4 | import datetime 5 | 6 | now = datetime.datetime.now() 7 | 8 | wb_name = input('请输入要导入的签到表的名称:') 9 | wb = openpyxl.load_workbook('./workbooks/' + wb_name + '.xlsx') 10 | ws = wb.active 11 | known_face_encodings = [] 12 | known_face_names = [] 13 | for cells in ws['A']: 14 | p_name = cells.value 15 | if p_name == None: 16 | break 17 | known_face_names.append(p_name) 18 | sb_image = face_recognition.load_image_file('./images/' + p_name + '.png') 19 | known_face_encodings.append(face_recognition.face_encodings(sb_image)[0]) 20 | video_capture = cv2.VideoCapture(0) 21 | 22 | 23 | # Initialize some variables 24 | face_locations = [] 25 | face_encodings = [] 26 | face_names = [] 27 | process_this_frame = True 28 | 29 | while True: 30 | # Grab a single frame of video 31 | ret, frame = video_capture.read() 32 | 33 | # Resize frame of video to 1/4 size for faster face recognition processing 34 | small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) 35 | 36 | # Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses) 37 | rgb_small_frame = small_frame[:, :, ::-1] 38 | 39 | # Only process every other frame of video to save time 40 | if process_this_frame: 41 | # Find all the faces and face encodings in the current frame of video 42 | face_locations = face_recognition.face_locations(rgb_small_frame) 43 | face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations) 44 | 45 | face_names = [] 46 | for face_encoding in face_encodings: 47 | # See if the face is a match for the known face(s) 48 | matches = face_recognition.compare_faces(known_face_encodings, face_encoding) 49 | name = "Unknown" 50 | 51 | # If a match was found in known_face_encodings, just use the first one. 52 | if True in matches: 53 | first_match_index = matches.index(True) 54 | name = known_face_names[first_match_index] 55 | ws['B' + str(first_match_index + 1)] = 1 56 | ws['C' + str(first_match_index + 1)] = now 57 | print(name + '已签到!' + ' ' + now.strftime('%Y-%m-%d %H:%M:%S')) 58 | 59 | face_names.append(name) 60 | 61 | process_this_frame = not process_this_frame 62 | 63 | 64 | # Display the results 65 | # for (top, right, bottom, left), name in zip(face_locations, face_names): 66 | # # Scale back up face locations since the frame we detected in was scaled to 1/4 size 67 | # top *= 4 68 | # right *= 4 69 | # bottom *= 4 70 | # left *= 4 71 | 72 | # # Draw a box around the face 73 | # cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) 74 | 75 | # # Draw a label with a name below the face 76 | # cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED) 77 | # font = cv2.FONT_HERSHEY_DUPLEX 78 | # cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1) 79 | 80 | # # Display the resulting image 81 | cv2.imshow('Video', frame) 82 | 83 | # Hit 'q' on the keyboard to quit! 84 | if cv2.waitKey(1) & 0xFF == ord('q'): 85 | wb.save('./workbooks/' + wb_name + '.xlsx') 86 | break 87 | 88 | # Release handle to the webcam 89 | video_capture.release() 90 | cv2.destroyAllWindows() 91 | -------------------------------------------------------------------------------- /facetest/Window/exe_now.py: -------------------------------------------------------------------------------- 1 | import sys , os, pexpect 2 | import socket, struct, threading 3 | from subprocess import Popen, PIPE 4 | 5 | host = '' 6 | port = 5555 7 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 定义socket类型 8 | s.bind((host, port)) # 绑定需要监听的Ip和端口号,tuple格式 9 | s.listen(5) 10 | 11 | def conn_thread(connection, address,child): 12 | #con = sqlite3.connect('test.db') 13 | location = '' 14 | i = 0 15 | while True: 16 | try: 17 | connection.settimeout(600) 18 | fileinfo_size = struct.calcsize('128sl') 19 | buf = connection.recv(fileinfo_size) 20 | #print(buf) 21 | if buf: # 如果不加这个if,第一个文件传输完成后会自动走到下一句 22 | filename, filesize = struct.unpack('128sl', buf) 23 | print("照片大小:"+str(filesize)) 24 | if filesize< 0 or filesize > 2432075: 25 | # da = connection.recv() 26 | continue 27 | filename = filename.decode().strip('\00') 28 | # print(filename) 29 | #filename = os.path.join('e:\\', ('new_' + filename)) 30 | print('file new name is %s, filesize is %s' % (filename, filesize)) 31 | 32 | # 构造文件路径 33 | filepath = 'frame'+'.jpg' 34 | file = open(filepath,'wb') 35 | # file = open('./face/'+filename, 'wb') 36 | print('stat receiving...filesize:' + str(filesize)) 37 | recvd_size = 0 # 定义接收了的文件大小 38 | while recvd_size != filesize: 39 | if filesize - recvd_size >= 1024: 40 | rdata = connection.recv(1024) 41 | recvd_size += len(rdata) 42 | elif filesize - recvd_size <1024 and filesize - recvd_size > 0: 43 | print(filesize - recvd_size) 44 | rdata = connection.recv(filesize - recvd_size) 45 | recvd_size += len(rdata) 46 | file.write(rdata) 47 | file.close() 48 | print('receive done') 49 | i += 1 50 | with open("proceed.txt", "r") as f: 51 | b = f.read() 52 | if "F" in b: 53 | child.sendcontrol("c") 54 | s.close() 55 | break 56 | except socket.timeout: 57 | connection.close() 58 | #con.close() 59 | 60 | 61 | 62 | def main(): 63 | child = pexpect.spawn('/usr/bin/ssh pi@192.168.1.4', encoding="utf-8") 64 | child.expect("password") 65 | child.sendline("1") 66 | child.sendline("python3 /home/pi/Project/face_distinguish.py") 67 | while True: 68 | print("开始接收图片") 69 | connection, address = s.accept() 70 | print('Connected by ', address) 71 | with open("proceed.txt","w") as f: 72 | f.write("True") 73 | thread = threading.Thread(target=conn_thread, args=(connection, address,child)) # 使用threading也可以 74 | thread.start() 75 | p1 = Popen("/home/xzt/facetest/exe_now_before.sh", stdout=PIPE, close_fds=True) 76 | p = Popen("/home/xzt/facetest/image.sh", stdout=PIPE, close_fds=True) 77 | # threading.start_new_thread(conn_thread, (connection, address)) 78 | with open("proceed.txt", "r") as f: 79 | b = f.read() 80 | if "F" in b: 81 | break 82 | thread.join() 83 | 84 | if __name__ == '__main__': 85 | main() 86 | -------------------------------------------------------------------------------- /facetest/Window/Dialog.py: -------------------------------------------------------------------------------- 1 | from PyQt5 import QtGui 2 | from PyQt5.QtWidgets import QApplication,QDialog, QGridLayout, QLineEdit, QPushButton, QLabel 3 | import sys 4 | from SSHConnection import SSHConnection 5 | 6 | 7 | class Dialog(QDialog): 8 | def __init__(self): 9 | super().__init__() 10 | self.resize(240,200) 11 | self.setWindowTitle('连接到树莓派') 12 | self.CANCEL = False 13 | gridLayout = QGridLayout() 14 | 15 | gridLayout.addWidget(QLabel('用户名:',self),0,0) 16 | self.U_Line_Edit = QLineEdit(self) 17 | gridLayout.addWidget(self.U_Line_Edit,0,1) 18 | 19 | 20 | gridLayout.addWidget(QLabel('主机名(IP):', self), 1, 0) 21 | self.H_Line_Edit = QLineEdit(self) 22 | gridLayout.addWidget(self.H_Line_Edit, 1, 1) 23 | 24 | 25 | gridLayout.addWidget(QLabel('密码:', self), 2, 0) 26 | self.P_Line_Edit = QLineEdit(self) 27 | self.P_Line_Edit.setEchoMode(QLineEdit.Password) 28 | gridLayout.addWidget(self.P_Line_Edit, 2, 1) 29 | 30 | btn2 = QPushButton('确定', self) 31 | btn1 = QPushButton('取消',self) 32 | btn2.setShortcut('Enter') 33 | gridLayout.addWidget(btn1,3,0) 34 | gridLayout.addWidget(btn2,3,1) 35 | btn1.clicked.connect(self.cancel) 36 | btn2.clicked.connect(self.btn2_function) 37 | 38 | self.setLayout(gridLayout) 39 | self.show() 40 | 41 | def cancel(self): 42 | self.CANCEL = True 43 | self.close() 44 | 45 | def btn2_function(self): 46 | self.U_Line_Edit.text() 47 | self.H_Line_Edit.text() 48 | self.P_Line_Edit.text() 49 | self.close() 50 | 51 | def getUsername(self): 52 | return self.U_Line_Edit.text().strip() 53 | 54 | def getHostname(self): 55 | return self.H_Line_Edit.text().strip() 56 | 57 | def getPassword(self): 58 | return self.P_Line_Edit.text().strip() 59 | 60 | class OneLineDialog(QDialog): 61 | def __init__(self,title,message): 62 | super().__init__() 63 | self.resize(300,150) 64 | self.setWindowTitle(title) 65 | self.text = "" 66 | self.CANCEL = False 67 | gridLayout = QGridLayout() 68 | self.line = QLineEdit(self) 69 | gridLayout.addWidget(QLabel(message,self),0,0) 70 | gridLayout.addWidget(self.line,0,1) 71 | btn2 = QPushButton('确定', self) 72 | btn1 = QPushButton('取消', self) 73 | gridLayout.addWidget(btn1, 1, 0) 74 | gridLayout.addWidget(btn2, 1, 1) 75 | btn1.clicked.connect(self.cancel) 76 | btn2.clicked.connect(self.get_text) 77 | self.setLayout(gridLayout) 78 | self.show() 79 | 80 | def cancel(self): 81 | self.CANCEL = True 82 | self.close() 83 | 84 | def get_text(self): 85 | self.text = self.line.text().strip() 86 | self.close() 87 | 88 | class exe_dialog(QDialog): 89 | 90 | def __init__(self,username,hostname,password): 91 | super().__init__() 92 | self.resize(280,40) 93 | self.setWindowTitle("正在运行") 94 | self.tip = QLabel("程序正在进行...请不要关闭此窗口",self) 95 | self.show() 96 | self.exe(username,hostname,password) 97 | 98 | 99 | def exe(self,username, hostname, password): 100 | self.conn = SSHConnection(username, hostname, password) 101 | self.conn.exec_command('python3 /home/pi/Project/data_create.py') 102 | 103 | if __name__ == "__main__": 104 | app = QApplication(sys.argv) 105 | dialog3 = exe_dialog('pi','192.168.1.4','1') 106 | sys.exit(app.exec_()) 107 | 108 | -------------------------------------------------------------------------------- /树莓派/face_distinguish.py: -------------------------------------------------------------------------------- 1 | import face_recognition 2 | import openpyxl 3 | import datetime 4 | import numpy as np 5 | #from io import BytesIO 6 | import picamera 7 | import cv2 8 | from time import sleep 9 | from PIL import Image 10 | import socket 11 | import os,struct 12 | import pickle 13 | from sklearn import neighbors 14 | 15 | def predict(img, knn_clf=None, model_path=None, distance_threshold=0.6): 16 | """ 17 | Recognizes faces in given image using a trained KNN classifier 18 | 19 | :param X_img_path: path to image to be recognized 20 | :param knn_clf: (optional) a knn classifier object. if not specified, model_save_path must be specified. 21 | :param model_path: (optional) path to a pickled knn classifier. if not specified, model_save_path must be knn_clf. 22 | :param distance_threshold: (optional) distance threshold for face classification. the larger it is, the more chance 23 | of mis-classifying an unknown person as a known one. 24 | :return: a list of names and face locations for the recognized faces in the image: [(name, bounding box), ...]. 25 | For faces of unrecognized persons, the name 'unknown' will be returned. 26 | """ 27 | with open(model_path, 'rb') as f: 28 | knn_clf = pickle.load(f) 29 | 30 | # Load image file and find face locations 31 | #X_img = face_recognition.load_image_file(img) 32 | X_face_locations = face_recognition.face_locations(img) 33 | 34 | # If no faces are found in the image, return an empty result. 35 | if len(X_face_locations) == 0: 36 | return [] 37 | 38 | # Find encodings for faces in the test iamge 39 | faces_encodings = face_recognition.face_encodings(img, known_face_locations=X_face_locations) 40 | 41 | # Use the KNN model to find the best matches for the test face 42 | try: 43 | closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1) 44 | except: 45 | return [] 46 | are_matches = [closest_distances[0][i][0] <= distance_threshold for i in range(len(X_face_locations))] 47 | #print(are_matches) 48 | return knn_clf.predict(faces_encodings) 49 | 50 | host = '192.168.1.100' 51 | port = 5555 52 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 53 | address = (host,port) 54 | # 连接服务端 55 | #address_server = ('192.168.1.100',8010) 56 | sock.connect(address) 57 | 58 | camera = picamera.PiCamera() 59 | camera.resolution = (320, 240) 60 | frame = np.empty((240, 320, 3), dtype=np.uint8) 61 | 62 | now = datetime.datetime.now() 63 | 64 | with open("/home/pi/Project/now_task_name.txt",'r',encoding='gbk') as f: 65 | wb_name = f.read() 66 | wb = openpyxl.load_workbook(u'/home/pi/Project/workbooks/' + wb_name + '.xlsx') 67 | ws = wb.active 68 | known_face_encodings = [] 69 | known_face_id_num = [] 70 | for cells in ws['A']: 71 | p_id = cells.value 72 | if p_id == None: 73 | break 74 | if p_id == '学号': 75 | continue 76 | known_face_id_num.append(p_id) 77 | #sb_image = face_recognition.load_image_file('/home/pi/Project/images/' + p_id + '.png') 78 | #print(p_name,sb_image) 79 | #known_face_encodings.append(face_recognition.face_encodings(sb_image)[0]) 80 | #bug = face_recognition.face_encodings(sb_image) 81 | #print(bug) 82 | # Initialize some variables 83 | #frame = BytesIO() 84 | face_locations = [] 85 | face_encodings = [] 86 | #face_ids = [] 87 | print(known_face_id_num) 88 | process_this_frame = True 89 | with open("/home/pi/Project/now_log.txt",'w') as f: 90 | f.write("Capturing Image....") 91 | while True: 92 | #print("Capturing image ....") 93 | #camera.capture(frame, format="rgb") 94 | camera.capture('/home/pi/Project/frame.jpg') 95 | filepath = '/home/pi/Project/frame.jpg' 96 | frame = cv2.imread(filepath) 97 | if os.path.isfile(filepath): 98 | fileinfo_size = struct.calcsize('128sl') 99 | fhead = struct.pack(b'128sq', bytes(os.path.basename(filepath),encoding='utf-8'), os.stat(filepath).st_size) 100 | #将xxx.jpg以128sq的格式打包 101 | sock.send(fhead) 102 | print('client filepath: ', os.path.basename(filepath),os.stat(filepath).st_size) 103 | fo = open(filepath,'rb') 104 | while True: 105 | filedata = fo.read(1024) 106 | if not filedata: 107 | break 108 | sock.send(filedata) 109 | 110 | # fo.close() 111 | # print('send over') 112 | #pil_image = Image.fromarray(frame) 113 | 114 | #pil_image.save("/home/pi/Project/frame.jpg") 115 | #small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) 116 | 117 | #rgb_small_frame = small_frame[:, :, ::-1] 118 | 119 | # Only process every other frame of video to save time 120 | if process_this_frame: 121 | # Find all the faces and face encodings in the current frame of video 122 | face_locations = face_recognition.face_locations(frame) 123 | #face_encodings = face_recognition.face_encodings(frame, face_locations) 124 | result = predict(frame,model_path='/home/pi/Project/trained_knn_model.clf') 125 | print(result) 126 | #face_ids = [] 127 | #for face_encoding in face_encodings: 128 | #for (top,right,bottom,left),face_encoding in zip(face_locations,face_encodings): 129 | # See if the face is a match for the known face(s) 130 | #matches = face_recognition.compare_faces(known_face_encodings, face_encoding) 131 | #name = "Unknown" 132 | 133 | #matches = [i for i,v in enumerate(matches) if v==True] 134 | # If a match was found in known_face_encodings, just use the first one. 135 | #for i in matches: 136 | #first_match_index = i 137 | if result: 138 | for name in result: 139 | if name in known_face_id_num: 140 | index = known_face_id_num.index(name) 141 | real_name = ws['B' + str(index + 2)].value 142 | #name = known_face_id_num[first_match_index] 143 | ws['C' + str(index + 2)] = 1 144 | ws['D' + str(index + 2)] = now 145 | ws.merge_cells('D'+str(index+2)+':F'+str(index+2)) 146 | with open("/home/pi/Project/now_log.txt",'w') as f: 147 | f.writelines( real_name + ' 已签到!!!' + ' ' + now.strftime('%Y-%m-%d %H:%M:%S')) 148 | wb.save(u'/home/pi/Project/workbooks/' + wb_name + '.xlsx') 149 | 150 | #face_names.append(name) 151 | #cv2.rectangle(frame,(left,top),(right,bottom),(0,0,255),2) 152 | 153 | #cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0,255), cv2.FILLED) 154 | #pil_image = Image.fromarray(frame) 155 | #pil_image.save("/home/pi/Project/frame.jpg") 156 | else: 157 | pass 158 | with open(filepath,"wb") as img: 159 | img.write(frame) 160 | 161 | process_this_frame = not process_this_frame 162 | 163 | #cv2.imshow('Video', frame) 164 | 165 | # Hit 'q' on the keyboard to quit! 166 | #if cv2.waitKey(1) & 0xFF == ord('q'): 167 | # wb.save('./workbooks/' + wb_name + '.xlsx') 168 | # break 169 | 170 | # Release handle to the webcam 171 | #video_capture.release() 172 | #cv2.destroyAllWindows() 173 | -------------------------------------------------------------------------------- /facetest/Window/Table.py: -------------------------------------------------------------------------------- 1 | from PyQt5.QtWidgets import QWidget,QHBoxLayout,QTableWidget,QPushButton,QApplication,QVBoxLayout,QTableWidgetItem,QCheckBox,QAbstractItemView,QHeaderView,QLabel,QFrame,QMessageBox,QDialog 2 | from PyQt5 import QtWidgets 3 | from PyQt5.QtCore import Qt 4 | from PyQt5.QtGui import QFont,QColor 5 | import openpyxl 6 | import random 7 | import sys 8 | from Dialog import OneLineDialog 9 | 10 | 11 | class Table(QDialog): 12 | def __init__(self): 13 | super().__init__() 14 | self.ck_list = [] 15 | self.name_list = [] 16 | self.id_list = [] 17 | self.des_sort = True 18 | self.final_name_list = [] 19 | self.final_id_list = [] 20 | self.isload = False 21 | 22 | self.initUI() 23 | 24 | def initUI(self): 25 | self.setWindowTitle('创建任务') 26 | self.resize(600,480) 27 | self.table = QTableWidget(self) 28 | self.btn_create = QPushButton('创建这个任务') 29 | self.btn_load = QPushButton('载入face-ID') 30 | self.btn_exit = QPushButton('退出') 31 | self.spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 32 | self.vbox = QVBoxLayout() 33 | self.vbox.addWidget(self.btn_create) 34 | self.vbox.addWidget(self.btn_load) 35 | self.vbox.addWidget(self.btn_exit) 36 | self.vbox.addSpacerItem(self.spacerItem) 37 | self.txt = QLabel() 38 | self.txt.setMinimumHeight(50) 39 | self.vbox2 = QVBoxLayout() 40 | self.vbox2.addWidget(self.table) 41 | self.vbox2.addWidget(self.txt) 42 | self.hbox = QHBoxLayout() 43 | self.hbox.addLayout(self.vbox2) 44 | self.hbox.addLayout(self.vbox) 45 | self.setLayout(self.hbox) 46 | self.table.setColumnCount(3) 47 | self.headers = ['选择','学号','姓名'] 48 | self.table.setHorizontalHeaderLabels(self.headers) 49 | self.table.setColumnWidth(0, 50) 50 | self.table.setColumnWidth(1,200) 51 | self.table.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch) 52 | self.table.horizontalHeader().setStyleSheet('QHeaderView::section{background:lightblue}') 53 | self.table.horizontalHeader().setFixedHeight(50) 54 | self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) 55 | #self.table.setColumnHidden(0, True) 56 | self.table.setStyleSheet('color:green;') 57 | #self.load_face_id() 58 | self.btn_load.clicked.connect(self.load_face_id) 59 | self.btn_create.clicked.connect(self.create_task) 60 | self.btn_exit.clicked.connect(self.close) 61 | self.show() 62 | 63 | def load_face_id(self): 64 | if not self.isload: 65 | wb = openpyxl.load_workbook("/home/xzt/facetest/FACEID/Face-ID.xlsx") 66 | ws = wb.active 67 | count = 0 68 | for cell in ws['A']: 69 | value = cell.value 70 | count += 1 71 | if value is None: 72 | break 73 | if value == '学号': 74 | continue 75 | self.id_list.append(value) 76 | self.name_list.append(ws['B' + str(count)].value) 77 | self.table.setRowCount(count - 1) 78 | for i in range(count - 1): 79 | ck = QCheckBox() 80 | self.table.setItem(i,1,QTableWidgetItem(self.id_list[i])) 81 | self.table.setItem(i,2,QTableWidgetItem(self.name_list[i])) 82 | self.table.setCellWidget(i,0,ck) 83 | self.ck_list.append(ck) 84 | self.isload = True 85 | else: 86 | QMessageBox.about(self,"错误","过多的操作!") 87 | 88 | def create_task(self): 89 | count = 0 90 | for ck in self.ck_list: 91 | if ck.isChecked(): 92 | count += 1 93 | index = self.ck_list.index(ck) 94 | self.final_id_list.append(self.id_list[index]) 95 | self.final_name_list.append(self.name_list[index]) 96 | if count == 0: 97 | QMessageBox.about(self,"错误","没有选择的任务") 98 | else: 99 | wb = openpyxl.Workbook() 100 | ws = wb.active 101 | ws['A1'] = "学号" 102 | ws['B1'] = "姓名" 103 | ws["C1"] = "是否签到" 104 | ws["D1"] = "签到时间" 105 | ws.merge_cells("D1:F1") 106 | for i in range(count): 107 | ws['A' + str(i + 2)] = self.final_id_list[i] 108 | ws["B" + str(i + 2)] = self.final_name_list[i] 109 | dialog = OneLineDialog("请输入新建任务名", "任务名") 110 | dialog.exec_() 111 | task_name = dialog.text 112 | cancel = dialog.CANCEL 113 | if not cancel: 114 | with open('task_name.txt', 'a') as f: 115 | f.write(task_name + '\n') 116 | wb.save("/home/xzt/facetest/workbooks/" + task_name + '.xlsx') 117 | QMessageBox.about(self,"成功","成功创建任务:" + "\n" + task_name) 118 | 119 | class TaskTable(QDialog): 120 | def __init__(self): 121 | super().__init__() 122 | self.task_name_list = [] 123 | self.ck_list = [] 124 | self.task_name = "" 125 | self.isload = False 126 | self.final_task_name = [] 127 | self.initUI() 128 | 129 | def initUI(self): 130 | self.setWindowTitle('加载任务') 131 | self.resize(460, 480) 132 | self.table = QTableWidget(self) 133 | self.btn_load_task = QPushButton('加载已存在的任务') 134 | self.btn_load = QPushButton('加载这个任务') 135 | self.btn_exit = QPushButton('退出') 136 | self.spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) 137 | self.vbox = QVBoxLayout() 138 | self.vbox.addWidget(self.btn_load_task) 139 | self.vbox.addWidget(self.btn_load) 140 | self.vbox.addWidget(self.btn_exit) 141 | self.vbox.addSpacerItem(self.spacerItem) 142 | self.txt = QLabel() 143 | self.txt.setMinimumHeight(50) 144 | self.vbox2 = QVBoxLayout() 145 | self.vbox2.addWidget(self.table) 146 | self.vbox2.addWidget(self.txt) 147 | self.hbox = QHBoxLayout() 148 | self.hbox.addLayout(self.vbox2) 149 | self.hbox.addLayout(self.vbox) 150 | self.setLayout(self.hbox) 151 | self.table.setColumnCount(2) 152 | self.headers = ['选择', '任务'] 153 | self.table.setHorizontalHeaderLabels(self.headers) 154 | self.table.setColumnWidth(0, 50) 155 | self.table.setColumnWidth(1, 200) 156 | self.table.horizontalHeader().setStyleSheet('QHeaderView::section{background:lightblue}') 157 | self.table.horizontalHeader().setFixedHeight(50) 158 | self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) 159 | 160 | # self.table.setColumnHidden(0, True) 161 | self.table.setStyleSheet('color:green;') 162 | # self.load_face_id() 163 | self.btn_load.clicked.connect(self.load_task) 164 | self.btn_exit.clicked.connect(self.close) 165 | self.btn_load_task.clicked.connect(self.load_task_name) 166 | self.show() 167 | 168 | def load_task_name(self): 169 | if not self.isload: 170 | with open('/home/xzt/facetest/Window/task_name.txt','r') as f: 171 | for line in f.readlines(): 172 | line = line.rstrip() 173 | if line: 174 | self.task_name_list.append(line) 175 | count = len(self.task_name_list) 176 | #print(self.task_name_list) 177 | self.table.setRowCount(count) 178 | for i in range(count): 179 | ck = QCheckBox() 180 | self.table.setItem(i,1,QTableWidgetItem(self.task_name_list[i])) 181 | self.table.setCellWidget(i,0,ck) 182 | self.ck_list.append(ck) 183 | self.isload = True 184 | else: 185 | QMessageBox.about(self,"错误","过多的操作!") 186 | 187 | def load_task(self): 188 | count = 0 189 | for ck in self.ck_list: 190 | if ck.isChecked(): 191 | count += 1 192 | index = self.ck_list.index(ck) 193 | self.final_task_name.append(self.task_name_list[index]) 194 | if count > 1: 195 | QMessageBox.about(self,"错误","选择了过多的任务") 196 | if count == 1: 197 | self.task_name = self.final_task_name[0] 198 | QMessageBox.about(self,"成功","成功地载入了任务:" + "\n" + self.task_name) 199 | if count == 0: 200 | QMessageBox.about(self, "错误", "没有选择的任务") 201 | 202 | 203 | if __name__ == "__main__": 204 | app = QApplication(sys.argv) 205 | #table = Table() 206 | table2 = TaskTable() 207 | sys.exit(app.exec_()) 208 | -------------------------------------------------------------------------------- /facetest/Window/pi@192.168.1.4: -------------------------------------------------------------------------------- 1 | """ 2 | This is an example of using the k-nearest-neighbors (KNN) algorithm for face recognition. 3 | 4 | When should I use this example? 5 | This example is useful when you wish to recognize a large set of known people, 6 | and make a prediction for an unknown person in a feasible computation time. 7 | 8 | Algorithm Description: 9 | The knn classifier is first trained on a set of labeled (known) faces and can then predict the person 10 | in an unknown image by finding the k most similar faces (images with closet face-features under eucledian distance) 11 | in its training set, and performing a majority vote (possibly weighted) on their label. 12 | 13 | For example, if k=3, and the three closest face images to the given image in the training set are one image of Biden 14 | and two images of Obama, The result would be 'Obama'. 15 | 16 | * This implementation uses a weighted vote, such that the votes of closer-neighbors are weighted more heavily. 17 | 18 | Usage: 19 | 20 | 1. Prepare a set of images of the known people you want to recognize. Organize the images in a single directory 21 | with a sub-directory for each known person. 22 | 23 | 2. Then, call the 'train' function with the appropriate parameters. Make sure to pass in the 'model_save_path' if you 24 | want to save the model to disk so you can re-use the model without having to re-train it. 25 | 26 | 3. Call 'predict' and pass in your trained model to recognize the people in an unknown image. 27 | 28 | NOTE: This example requires scikit-learn to be installed! You can install it with pip: 29 | 30 | $ pip3 install scikit-learn 31 | 32 | """ 33 | 34 | import math 35 | from sklearn import neighbors 36 | import os 37 | import os.path 38 | import pickle 39 | from PIL import Image, ImageDraw 40 | import face_recognition 41 | from face_recognition.face_recognition_cli import image_files_in_folder 42 | 43 | ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'} 44 | 45 | 46 | def train(train_dir, model_save_path=None, n_neighbors=None, knn_algo='ball_tree', verbose=False): 47 | """ 48 | Trains a k-nearest neighbors classifier for face recognition. 49 | 50 | :param train_dir: directory that contains a sub-directory for each known person, with its name. 51 | 52 | (View in source code to see train_dir example tree structure) 53 | 54 | Structure: 55 | / 56 | ├── / 57 | │ ├── .jpeg 58 | │ ├── .jpeg 59 | │ ├── ... 60 | ├── / 61 | │ ├── .jpeg 62 | │ └── .jpeg 63 | └── ... 64 | 65 | :param model_save_path: (optional) path to save model on disk 66 | :param n_neighbors: (optional) number of neighbors to weigh in classification. Chosen automatically if not specified 67 | :param knn_algo: (optional) underlying data structure to support knn.default is ball_tree 68 | :param verbose: verbosity of training 69 | :return: returns knn classifier that was trained on the given data. 70 | """ 71 | X = [] 72 | y = [] 73 | 74 | # Loop through each person in the training set 75 | for class_dir in os.listdir(train_dir): 76 | if not os.path.isdir(os.path.join(train_dir, class_dir)): 77 | continue 78 | 79 | # Loop through each training image for the current person 80 | for img_path in image_files_in_folder(os.path.join(train_dir, class_dir)): 81 | image = face_recognition.load_image_file(img_path) 82 | face_bounding_boxes = face_recognition.face_locations(image) 83 | 84 | if len(face_bounding_boxes) != 1: 85 | # If there are no people (or too many people) in a training image, skip the image. 86 | if verbose: 87 | print("Image {} not suitable for training: {}".format(img_path, "Didn't find a face" if len(face_bounding_boxes) < 1 else "Found more than one face")) 88 | else: 89 | # Add face encoding for current image to the training set 90 | X.append(face_recognition.face_encodings(image, known_face_locations=face_bounding_boxes)[0]) 91 | y.append(class_dir) 92 | 93 | # Determine how many neighbors to use for weighting in the KNN classifier 94 | if n_neighbors is None: 95 | n_neighbors = int(round(math.sqrt(len(X)))) 96 | if verbose: 97 | print("Chose n_neighbors automatically:", n_neighbors) 98 | 99 | # Create and train the KNN classifier 100 | knn_clf = neighbors.KNeighborsClassifier(n_neighbors=n_neighbors, algorithm=knn_algo, weights='distance') 101 | knn_clf.fit(X, y) 102 | 103 | # Save the trained KNN classifier 104 | if model_save_path is not None: 105 | with open(model_save_path, 'wb') as f: 106 | pickle.dump(knn_clf, f) 107 | 108 | return knn_clf 109 | 110 | 111 | def predict(X_img_path, knn_clf=None, model_path=None, distance_threshold=0.6): 112 | """ 113 | Recognizes faces in given image using a trained KNN classifier 114 | 115 | :param X_img_path: path to image to be recognized 116 | :param knn_clf: (optional) a knn classifier object. if not specified, model_save_path must be specified. 117 | :param model_path: (optional) path to a pickled knn classifier. if not specified, model_save_path must be knn_clf. 118 | :param distance_threshold: (optional) distance threshold for face classification. the larger it is, the more chance 119 | of mis-classifying an unknown person as a known one. 120 | :return: a list of names and face locations for the recognized faces in the image: [(name, bounding box), ...]. 121 | For faces of unrecognized persons, the name 'unknown' will be returned. 122 | """ 123 | 124 | if knn_clf is None and model_path is None: 125 | raise Exception("Must supply knn classifier either thourgh knn_clf or model_path") 126 | 127 | # Load a trained KNN model (if one was passed in) 128 | if knn_clf is None: 129 | with open(model_path, 'rb') as f: 130 | knn_clf = pickle.load(f) 131 | 132 | # Load image file and find face locations 133 | X_img = face_recognition.load_image_file(X_img_path) 134 | X_face_locations = face_recognition.face_locations(X_img) 135 | 136 | # If no faces are found in the image, return an empty result. 137 | if len(X_face_locations) == 0: 138 | return [] 139 | 140 | # Find encodings for faces in the test iamge 141 | faces_encodings = face_recognition.face_encodings(X_img, known_face_locations=X_face_locations) 142 | 143 | # Use the KNN model to find the best matches for the test face 144 | closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1) 145 | are_matches = [closest_distances[0][i][0] <= distance_threshold for i in range(len(X_face_locations))] 146 | print(are_matches) 147 | print(knn_clf.predict(faces_encodings)) 148 | # Predict classes and remove classifications that aren't within the threshold 149 | return [(pred, loc) if rec else ("unknown", loc) for pred, loc, rec in zip(knn_clf.predict(faces_encodings), X_face_locations, are_matches)] 150 | 151 | 152 | def show_prediction_labels_on_image(img_path, predictions): 153 | """ 154 | Shows the face recognition results visually. 155 | 156 | :param img_path: path to image to be recognized 157 | :param predictions: results of the predict function 158 | :return: 159 | """ 160 | pil_image = Image.open(img_path).convert("RGB") 161 | draw = ImageDraw.Draw(pil_image) 162 | 163 | for name, (top, right, bottom, left) in predictions: 164 | # Draw a box around the face using the Pillow module 165 | draw.rectangle(((left, top), (right, bottom)), outline=(0, 0, 255)) 166 | 167 | # There's a bug in Pillow where it blows up with non-UTF-8 text 168 | # when using the default bitmap font 169 | name = name.encode("UTF-8") 170 | 171 | # Draw a label with a name below the face 172 | text_width, text_height = draw.textsize(name) 173 | draw.rectangle(((left, bottom - text_height - 10), (right, bottom)), fill=(0, 0, 255), outline=(0, 0, 255)) 174 | draw.text((left + 6, bottom - text_height - 5), name, fill=(255, 255, 255, 255)) 175 | 176 | # Remove the drawing library from memory as per the Pillow docs 177 | del draw 178 | 179 | # Display the resulting image 180 | pil_image.show() 181 | 182 | class Train: 183 | def run(self): 184 | classifier = train("train/dataSet", model_save_path="train/trained_knn_model.clf", n_neighbors=2) 185 | 186 | if __name__ == "__main__": 187 | # STEP 1: Train the KNN classifier and save it to disk 188 | # Once the model is trained and saved, you can skip this step next time. 189 | #print("Training KNN classifier...") 190 | classifier = train("train/dataSet", model_save_path="train/trained_knn_model.clf", n_neighbors=2) 191 | 192 | 193 | # STEP 2: Using the trained classifier, make predictions for unknown images 194 | #for image_file in os.listdir("train/test"): 195 | #full_file_path = os.path.join("train/test", image_file) 196 | 197 | #print("Looking for faces in {}".format(image_file)) 198 | 199 | # Find all people in the image using a trained classifier model 200 | # Note: You can pass in either a classifier file name or a classifier model instance 201 | #predictions = predict(full_file_path, model_path="train/trained_knn_model.clf") 202 | 203 | # Print results on the console 204 | #for name, (top, right, bottom, left) in predictions: 205 | #print("- Found {} at ({}, {})".format(name, left, top)) 206 | 207 | # Display results overlaid on an image 208 | #show_prediction_labels_on_image(os.path.join("train/test", image_file), predictions) 209 | -------------------------------------------------------------------------------- /树莓派/train.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is an example of using the k-nearest-neighbors (KNN) algorithm for face recognition. 3 | 4 | When should I use this example? 5 | This example is useful when you wish to recognize a large set of known people, 6 | and make a prediction for an unknown person in a feasible computation time. 7 | 8 | Algorithm Description: 9 | The knn classifier is first trained on a set of labeled (known) faces and can then predict the person 10 | in an unknown image by finding the k most similar faces (images with closet face-features under eucledian distance) 11 | in its training set, and performing a majority vote (possibly weighted) on their label. 12 | 13 | For example, if k=3, and the three closest face images to the given image in the training set are one image of Biden 14 | and two images of Obama, The result would be 'Obama'. 15 | 16 | * This implementation uses a weighted vote, such that the votes of closer-neighbors are weighted more heavily. 17 | 18 | Usage: 19 | 20 | 1. Prepare a set of images of the known people you want to recognize. Organize the images in a single directory 21 | with a sub-directory for each known person. 22 | 23 | 2. Then, call the 'train' function with the appropriate parameters. Make sure to pass in the 'model_save_path' if you 24 | want to save the model to disk so you can re-use the model without having to re-train it. 25 | 26 | 3. Call 'predict' and pass in your trained model to recognize the people in an unknown image. 27 | 28 | NOTE: This example requires scikit-learn to be installed! You can install it with pip: 29 | 30 | $ pip3 install scikit-learn 31 | 32 | """ 33 | 34 | import math 35 | from sklearn import neighbors 36 | import os 37 | import os.path 38 | import pickle 39 | from PIL import Image, ImageDraw 40 | import face_recognition 41 | from face_recognition.face_recognition_cli import image_files_in_folder 42 | 43 | ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'} 44 | 45 | 46 | def train(train_dir, model_save_path=None, n_neighbors=None, knn_algo='ball_tree', verbose=False): 47 | """ 48 | Trains a k-nearest neighbors classifier for face recognition. 49 | 50 | :param train_dir: directory that contains a sub-directory for each known person, with its name. 51 | 52 | (View in source code to see train_dir example tree structure) 53 | 54 | Structure: 55 | / 56 | ├── / 57 | │ ├── .jpeg 58 | │ ├── .jpeg 59 | │ ├── ... 60 | ├── / 61 | │ ├── .jpeg 62 | │ └── .jpeg 63 | └── ... 64 | 65 | :param model_save_path: (optional) path to save model on disk 66 | :param n_neighbors: (optional) number of neighbors to weigh in classification. Chosen automatically if not specified 67 | :param knn_algo: (optional) underlying data structure to support knn.default is ball_tree 68 | :param verbose: verbosity of training 69 | :return: returns knn classifier that was trained on the given data. 70 | """ 71 | X = [] 72 | y = [] 73 | 74 | # Loop through each person in the training set 75 | for class_dir in os.listdir(train_dir): 76 | if not os.path.isdir(os.path.join(train_dir, class_dir)): 77 | continue 78 | 79 | # Loop through each training image for the current person 80 | for img_path in image_files_in_folder(os.path.join(train_dir, class_dir)): 81 | image = face_recognition.load_image_file(img_path) 82 | face_bounding_boxes = face_recognition.face_locations(image) 83 | 84 | if len(face_bounding_boxes) != 1: 85 | # If there are no people (or too many people) in a training image, skip the image. 86 | if verbose: 87 | print("Image {} not suitable for training: {}".format(img_path, "Didn't find a face" if len(face_bounding_boxes) < 1 else "Found more than one face")) 88 | else: 89 | # Add face encoding for current image to the training set 90 | X.append(face_recognition.face_encodings(image, known_face_locations=face_bounding_boxes)[0]) 91 | y.append(class_dir) 92 | 93 | # Determine how many neighbors to use for weighting in the KNN classifier 94 | if n_neighbors is None: 95 | n_neighbors = int(round(math.sqrt(len(X)))) 96 | if verbose: 97 | print("Chose n_neighbors automatically:", n_neighbors) 98 | 99 | # Create and train the KNN classifier 100 | knn_clf = neighbors.KNeighborsClassifier(n_neighbors=n_neighbors, algorithm=knn_algo, weights='distance') 101 | knn_clf.fit(X, y) 102 | 103 | # Save the trained KNN classifier 104 | if model_save_path is not None: 105 | with open(model_save_path, 'wb') as f: 106 | pickle.dump(knn_clf, f) 107 | 108 | return knn_clf 109 | 110 | 111 | def predict(X_img_path, knn_clf=None, model_path=None, distance_threshold=0.6): 112 | """ 113 | Recognizes faces in given image using a trained KNN classifier 114 | 115 | :param X_img_path: path to image to be recognized 116 | :param knn_clf: (optional) a knn classifier object. if not specified, model_save_path must be specified. 117 | :param model_path: (optional) path to a pickled knn classifier. if not specified, model_save_path must be knn_clf. 118 | :param distance_threshold: (optional) distance threshold for face classification. the larger it is, the more chance 119 | of mis-classifying an unknown person as a known one. 120 | :return: a list of names and face locations for the recognized faces in the image: [(name, bounding box), ...]. 121 | For faces of unrecognized persons, the name 'unknown' will be returned. 122 | """ 123 | 124 | if knn_clf is None and model_path is None: 125 | raise Exception("Must supply knn classifier either thourgh knn_clf or model_path") 126 | 127 | # Load a trained KNN model (if one was passed in) 128 | if knn_clf is None: 129 | with open(model_path, 'rb') as f: 130 | knn_clf = pickle.load(f) 131 | 132 | # Load image file and find face locations 133 | X_img = face_recognition.load_image_file(X_img_path) 134 | X_face_locations = face_recognition.face_locations(X_img) 135 | 136 | # If no faces are found in the image, return an empty result. 137 | if len(X_face_locations) == 0: 138 | return [] 139 | 140 | # Find encodings for faces in the test iamge 141 | faces_encodings = face_recognition.face_encodings(X_img, known_face_locations=X_face_locations) 142 | 143 | # Use the KNN model to find the best matches for the test face 144 | closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1) 145 | are_matches = [closest_distances[0][i][0] <= distance_threshold for i in range(len(X_face_locations))] 146 | print(are_matches) 147 | print(knn_clf.predict(faces_encodings)) 148 | # Predict classes and remove classifications that aren't within the threshold 149 | return [(pred, loc) if rec else ("unknown", loc) for pred, loc, rec in zip(knn_clf.predict(faces_encodings), X_face_locations, are_matches)] 150 | 151 | 152 | def show_prediction_labels_on_image(img_path, predictions): 153 | """ 154 | Shows the face recognition results visually. 155 | 156 | :param img_path: path to image to be recognized 157 | :param predictions: results of the predict function 158 | :return: 159 | """ 160 | pil_image = Image.open(img_path).convert("RGB") 161 | draw = ImageDraw.Draw(pil_image) 162 | 163 | for name, (top, right, bottom, left) in predictions: 164 | # Draw a box around the face using the Pillow module 165 | draw.rectangle(((left, top), (right, bottom)), outline=(0, 0, 255)) 166 | 167 | # There's a bug in Pillow where it blows up with non-UTF-8 text 168 | # when using the default bitmap font 169 | name = name.encode("UTF-8") 170 | 171 | # Draw a label with a name below the face 172 | text_width, text_height = draw.textsize(name) 173 | draw.rectangle(((left, bottom - text_height - 10), (right, bottom)), fill=(0, 0, 255), outline=(0, 0, 255)) 174 | draw.text((left + 6, bottom - text_height - 5), name, fill=(255, 255, 255, 255)) 175 | 176 | # Remove the drawing library from memory as per the Pillow docs 177 | del draw 178 | 179 | # Display the resulting image 180 | pil_image.show() 181 | 182 | class Train: 183 | def run(self): 184 | classifier = train("train/dataSet", model_save_path="train/trained_knn_model.clf", n_neighbors=2) 185 | 186 | if __name__ == "__main__": 187 | # STEP 1: Train the KNN classifier and save it to disk 188 | # Once the model is trained and saved, you can skip this step next time. 189 | print("Training KNN classifier...") 190 | classifier = train("/home/pi/Project/train/dataSet", model_save_path="/home/pi/Project/trained_knn_model.clf", n_neighbors=2) 191 | print("Ok") 192 | 193 | # STEP 2: Using the trained classifier, make predictions for unknown images 194 | #for image_file in os.listdir("train/test"): 195 | #full_file_path = os.path.join("train/test", image_file) 196 | 197 | #print("Looking for faces in {}".format(image_file)) 198 | 199 | # Find all people in the image using a trained classifier model 200 | # Note: You can pass in either a classifier file name or a classifier model instance 201 | #predictions = predict(full_file_path, model_path="train/trained_knn_model.clf") 202 | 203 | # Print results on the console 204 | #for name, (top, right, bottom, left) in predictions: 205 | #print("- Found {} at ({}, {})".format(name, left, top)) 206 | 207 | # Display results overlaid on an image 208 | #show_prediction_labels_on_image(os.path.join("train/test", image_file), predictions) 209 | -------------------------------------------------------------------------------- /facetest/Window/window.py: -------------------------------------------------------------------------------- 1 | from PyQt5 import QtGui 2 | import sys 3 | from subprocess import Popen, PIPE 4 | from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout,\ 5 | QGroupBox, QPushButton, QTextBrowser, QLabel, QGridLayout, QMenuBar,QAction,QInputDialog,\ 6 | QMessageBox, QProgressBar, QFileDialog 7 | import SSHConnection 8 | from Dialog import Dialog, OneLineDialog 9 | from PyQt5.QtCore import QTime, QTimer, QDateTime, Qt, QBasicTimer, QUrl 10 | from PyQt5.QtGui import QDesktopServices 11 | import os 12 | from Table import Table, TaskTable 13 | import openpyxl 14 | 15 | 16 | class Window(QDialog): 17 | def __init__(self): 18 | super().__init__() 19 | # 创建定时器对象和时间对象 20 | self.isTime = False 21 | self.timer = QTimer() 22 | self.timer2 = QBasicTimer() 23 | self.timeStep = 0 24 | self.step = 0 25 | self.timeClock = QTime() 26 | self.time_label = QLabel('剩余:') 27 | self.label_time_val = QLabel(self) 28 | self.date = QLabel('日期:') 29 | self.date_time = QDateTime.currentDateTime() 30 | self.date_val = QLabel(self.date_time.toString()) 31 | self.timer.start(1000) # 启动定时器,定时器对象每隔一秒发射一个timeout信号 32 | self.num = 0 33 | self.processbar = QProgressBar(self) 34 | self.textbrowser = QTextBrowser() 35 | self.ISCONNECTED = False 36 | self.CANCEL = False 37 | self.excel_file_name = "" 38 | # Start button 39 | self.btn4 = QPushButton('开始签到') 40 | self.conn = None 41 | self.username = "" 42 | self.hostname = "" 43 | self.password = "" 44 | self.PRINT_LOG = True 45 | self.task_name = "" 46 | self.now_log = "" 47 | 48 | 49 | self.title = "人脸识别签到系统" 50 | self.top = 400 51 | self.left = 200 52 | self.width = 1024 53 | self.height = 720 54 | self.log = "" 55 | self.a = False 56 | self.b = False 57 | self.p1 = None 58 | self.p2 = None 59 | self.p3 = None 60 | self.Qfile = None 61 | self.id_list = [] 62 | self.name_list = [] 63 | self.temp = "" 64 | 65 | self.InitWindow() 66 | 67 | 68 | def InitWindow(self): 69 | self.setWindowTitle(self.title) 70 | self.setWindowIcon(QtGui.QIcon("icon.png")) 71 | self.setGeometry(self.top, self.left, self.width, self.height) 72 | 73 | 74 | # 全局布局 75 | v1 = QVBoxLayout() 76 | grid = QGridLayout() 77 | group_box = QGroupBox() 78 | 79 | menu = QMenuBar(self) 80 | new_menu = menu.addMenu('新的任务') 81 | create_menu = menu.addMenu('创建faceID') 82 | connect_menu = menu.addMenu('连接到...') 83 | result_menu = menu.addMenu('查看') 84 | 85 | # Action 86 | load_button = QAction("从名单载入签到任务",self); 87 | new_menu.addAction(load_button) 88 | new_button = QAction('手动创建一个新的签到任务',self) 89 | new_menu.addAction(new_button) 90 | view_button = QAction('载入已存在的签到任务',self) 91 | new_menu.addAction(view_button) 92 | create_button = QAction('创建faceID', self) 93 | create_menu.addAction(create_button) 94 | connect_button = QAction('连接到...', self) 95 | connect_menu.addAction(connect_button) 96 | result_button_now = QAction('查看当前签到结果',self) 97 | result_menu.addAction(result_button_now) 98 | result_button_before = QAction('查看历史签到结果',self) 99 | result_menu.addAction(result_button_before) 100 | 101 | # connect function 102 | #connect_button.triggered.connect(self.Isconnected) delete 103 | connect_button.triggered.connect(self.connect_function) 104 | 105 | # 新建签到任务 106 | new_button.triggered.connect(self.new_button_function) 107 | 108 | # 载入签到任务 109 | load_button.triggered.connect(self.load_task) 110 | 111 | # 查看已有的签到任务 112 | view_button.triggered.connect(self.view_button_function) 113 | 114 | # 创建faceID 115 | create_button.triggered.connect(self.create_button_function) 116 | 117 | # 查看结果 118 | result_button_now.triggered.connect(self.result_button_now_function) 119 | result_button_before.triggered.connect(self.result_button_before_function) 120 | 121 | exit_button = QPushButton('退出') 122 | exit_button.clicked.connect(self.close) 123 | grid.addWidget(self.time_label,1,0) 124 | grid.addWidget(self.label_time_val,1,1) 125 | grid.addWidget(self.date,0,0) 126 | grid.addWidget(self.date_val,0,1) 127 | group_box.setLayout(grid) 128 | 129 | # start button function 130 | self.btn4.clicked.connect(self.settime) 131 | 132 | 133 | self.timer.timeout.connect(self.showdate) 134 | 135 | v1.addWidget(menu) 136 | v1.addWidget(self.btn4) 137 | 138 | v1.addWidget(group_box) 139 | v1.addWidget(self.processbar) 140 | v1.addWidget(self.textbrowser) 141 | v1.addWidget(exit_button) 142 | 143 | self.process = True # 来控制识别窗口的进行 144 | with open("process.txt", 'w') as f: 145 | f.write(str(self.process)) 146 | 147 | with open("proceed.txt", 'w') as f: 148 | f.write("False") 149 | self.setLayout(v1) 150 | 151 | self.show() 152 | 153 | def addtime(self): # 计时时间增一秒,并显示在QLable上 154 | if self.num > 0: 155 | self.label_time_val.setText(str(self.num // 60) + ' 分钟' + str(self.num % 60) + ' 秒') # 标签显示时间 156 | self.num -= 1 157 | 158 | if self.num == 0 and self.isTime: 159 | self.label_time_val.setText('0 分钟') 160 | self.endMessage() 161 | self.textbrowser.append("签到结束!!!") 162 | self.process = not self.process 163 | with open("process.txt", 'w') as f: 164 | f.write(str(self.process)) 165 | os.system("ps a | grep exe_now.py > /home/xzt/facetest/Window/kill.txt") 166 | os.system("ps a | grep exe_now.sh > /home/xzt/facetest/Window/kill2.txt") 167 | with open("/home/xzt/facetest/Window/kill.txt", "r") as f: 168 | r1 = f.read(5) 169 | with open("/home/xzt/facetest/Window/kill2.txt", "r") as f: 170 | r2 = f.read(5) 171 | os.system("kill " + r2) 172 | os.system("kill "+r1) 173 | self.btn4.setEnabled(True) 174 | os.remove("/home/xzt/facetest/Window/now_log.txt") 175 | self.conn.download("/home/pi/Project/workbooks/" + self.task_name + '.xlsx', "/home/xzt/facetest/result/" + self.task_name + '.xlsx') 176 | 177 | def showdate(self): 178 | datetime = QDateTime.currentDateTime() 179 | text = datetime.toString() 180 | self.date_val.setText(text) 181 | 182 | def settime(self): 183 | if self.task_name: 184 | text, self.isTime = QInputDialog.getInt(self, '设置签到时间', '请输入签到时间(分钟):', min=1) 185 | if self.isTime: 186 | if self.timeStep != 0: 187 | self.timeStep = 0 188 | if self.num != 0: 189 | self.num = 0 190 | self.num = int(text) * 60 191 | self.timeStep = self.num * 10 192 | #self.onStart() 193 | self.p1 = Popen("/home/xzt/facetest/exe_now.sh", stdout=PIPE, close_fds=True) 194 | #self.p2 = Popen("/home/xzt/facetest/exe_now_before.sh", stdout=PIPE, close_fds=True) 195 | #self.p3 = Popen("/home/xzt/facetest/refresh.py", stdout=PIPE, close_fds=True) 196 | self.textbrowser.append("准备开始签到...") 197 | self.textbrowser.append("程序启动需要时间,请稍等...") 198 | self.btn4.setEnabled(False) 199 | if self.num > 0: 200 | #self.timer.timeout.connect(self.addtime) 201 | self.timer.timeout.connect(self.get_now_log) 202 | 203 | 204 | else: 205 | QMessageBox.about(self,"错误","没有检测到任务,请先载入任务") 206 | 207 | def endMessage(self): 208 | QMessageBox.about(self, "签到结束", "签到已经结束,您现在可以查看签到结果") 209 | 210 | self.isTime = False 211 | 212 | def connect_function(self): 213 | dialog = Dialog() 214 | dialog.exec_() 215 | self.username = dialog.getUsername() 216 | self.hostname = dialog.getHostname() 217 | self.password = dialog.getPassword() 218 | self.CANCEL = dialog.CANCEL 219 | if not self.CANCEL: 220 | self.ssh(self.username,self.hostname,self.password) 221 | self.conn.download('/home/pi/Project/FACEID/Face-ID.xlsx','/home/xzt/facetest/FACEID/Face-ID.xlsx') 222 | #self.conn.put('/home/xzt/facetest/Window/train/trained_knn_model.clf',"/home/pi/Project/trained_knn_model.clf") 223 | 224 | def Isconnected(self): 225 | self.ISCONNECTED = True 226 | 227 | #def set_excel_file_name(self): 228 | #file_dialog = OneLineDialog("请输入签到任务名","任务名:") 229 | #file_dialog.exec_() 230 | #self.excel_file_name = file_dialog.text 231 | 232 | def ssh(self, username, hostname, password): 233 | self.conn = SSHConnection.SSHConnection(username, hostname, password) 234 | self.Isconnected() 235 | info = self.conn.exec_command('ls -al') 236 | if len(info) > 0: 237 | self.textbrowser.append("Successful Connection!!!") 238 | 239 | def timerEvent(self, event): 240 | if self.step >= 100: 241 | self.timer2.stop() 242 | self.step = 0 243 | return 244 | self.step = self.step + 1 245 | self.processbar.setValue(self.step) 246 | 247 | def onStart(self): 248 | if self.timer2.isActive(): 249 | self.timer2.stop() 250 | else: 251 | self.timer2.start(self.timeStep,self) 252 | 253 | # 新建任务 && 创建一个新的签到任务 254 | def new_button_function(self): 255 | table = Table() 256 | table.exec_() 257 | 258 | # 载入一个签到任务 259 | def load_task(self): 260 | if self.ISCONNECTED: 261 | self.Qfile = QFileDialog() 262 | fname = self.Qfile.getOpenFileName(self, '选择文件', '/home/xzt/')[0] 263 | print(fname) 264 | if 'xlsx' not in fname: 265 | QMessageBox.about("错误","不支持的文件格式") 266 | else: 267 | wb = openpyxl.load_workbook(fname) 268 | ws = wb.active 269 | count = 0 270 | for cell in ws['A']: 271 | value = cell.value 272 | count += 1 273 | if value is None: 274 | break 275 | if value == '学号': 276 | continue 277 | self.id_list.append(value) 278 | self.name_list.append(ws['B' + str(count)].value) 279 | wb = openpyxl.Workbook() 280 | ws = wb.active 281 | ws['A1'] = "学号" 282 | ws['B1'] = "姓名" 283 | ws["C1"] = "是否签到" 284 | ws["D1"] = "签到时间" 285 | ws.merge_cells("D1:F1") 286 | for i in range(count-2): 287 | ws['A' + str(i + 2)] = self.id_list[i] 288 | ws["B" + str(i + 2)] = self.name_list[i] 289 | dialog = OneLineDialog("请输入新建任务名", "任务名") 290 | dialog.exec_() 291 | task_name = dialog.text 292 | cancel = dialog.CANCEL 293 | if not cancel: 294 | wb.save("/home/xzt/facetest/workbooks/" + task_name + '.xlsx') 295 | self.task_name = task_name 296 | QMessageBox.about(self,"成功","成功创建任务:" + "\n" + task_name) 297 | with open('task_name.txt', 'a') as f: 298 | f.write(task_name + '\n') 299 | self.conn.put("/home/xzt/facetest/workbooks/" + self.task_name + ".xlsx", 300 | "/home/pi/Project/workbooks/" + self.task_name + ".xlsx") 301 | with open("now_task_name.txt", 'w', encoding="gbk") as f: 302 | f.write(self.task_name) 303 | self.conn.put("/home/xzt/facetest/Window/now_task_name.txt", "/home/pi/Project/now_task_name.txt") 304 | print(self.task_name) 305 | else: 306 | QMessageBox.about(self, "错误", "请先连接到树莓派!") 307 | 308 | # 查看 && 载入已有的签到任务 309 | def view_button_function(self): 310 | if self.ISCONNECTED: 311 | table = TaskTable() 312 | table.exec_() 313 | self.task_name = table.task_name 314 | self.conn.put("/home/xzt/facetest/workbooks/" + self.task_name + ".xlsx", "/home/pi/Project/workbooks/" + self.task_name + ".xlsx") 315 | with open("now_task_name.txt", 'w', encoding="gbk") as f: 316 | f.write(self.task_name) 317 | self.conn.put("/home/xzt/facetest/Window/now_task_name.txt", "/home/pi/Project/now_task_name.txt") 318 | print(self.task_name) 319 | else: 320 | QMessageBox.about(self,"错误","请先连接到树莓派!") 321 | 322 | # 创建faceID 323 | def create_button_function(self): 324 | if self.ISCONNECTED: 325 | id_dialog = OneLineDialog("请输入学号","学号:") 326 | id_dialog.exec_() 327 | id_num = id_dialog.text 328 | #with open('data.txt', 'w') as file: 329 | #file.writelines(id_num + ' ') 330 | i_ISCANCEL = id_dialog.CANCEL 331 | if not i_ISCANCEL: 332 | name_dialog = OneLineDialog("请输入姓名","姓名:") 333 | name_dialog.exec_() 334 | name = name_dialog.text 335 | #with open('data.txt', 'a') as file: 336 | #file.writelines(name) 337 | n_ISCANCEL = name_dialog.CANCEL 338 | if not n_ISCANCEL: 339 | os.system('mkdir /train/'+ id_num) 340 | # *********************************************************************** # 341 | self.textbrowser.append("Beginning to run the face-ID generator....") 342 | #self.conn.put('data.txt','/home/pi/Project/data.txt') 343 | Popen("/home/xzt/facetest/exe.sh", stdout=PIPE, close_fds=True) 344 | self.timer.timeout.connect(self.print_log) 345 | #info = self.conn.exec_command('python3 /home/pi/Project/data_create.py') 346 | 347 | 348 | else: 349 | QMessageBox.about(self,"没有连接","请先连接到树莓派") 350 | 351 | # 查看结果 352 | def result_button_now_function(self): 353 | if self.task_name: 354 | os.system('et /home/xzt/facetest/result/' + self.task_name + '.xlsx') 355 | else: 356 | QMessageBox.about(self,"错误", "没有检测到当前任务") 357 | 358 | def result_button_before_function(self): 359 | QDesktopServices.openUrl(QUrl('file://' + '/home/xzt/facetest/result/')) 360 | 361 | def print_log(self): 362 | if self.PRINT_LOG: 363 | self.conn.download("/home/pi/Project/log.txt", "log.txt") 364 | with open('log.txt', 'r') as f: 365 | self.log = f.readline() 366 | if "Finish" not in self.log: 367 | self.textbrowser.append(self.log) 368 | if "Get" in self.log: 369 | self.PRINT_LOG = False 370 | self.textbrowser.append("Finish!!! You Can Close the Window Now!!!") 371 | else: 372 | pass 373 | else: 374 | pass 375 | 376 | def get_now_log(self): 377 | 378 | with open("proceed.txt","r") as f: 379 | c = f.read() 380 | if self.isTime and eval(c): 381 | try: 382 | self.conn.download("/home/pi/Project/now_log.txt", "/home/xzt/facetest/Window/now_log.txt") 383 | with open("now_log.txt", 'r') as f: 384 | self.now_log = f.readline() 385 | if "Capturing" in self.now_log or self.temp: 386 | if self.temp != self.now_log: 387 | self.textbrowser.append(self.now_log) 388 | self.temp = self.now_log 389 | self.addtime() 390 | if not self.b: 391 | self.onStart() 392 | self.b = True 393 | except: 394 | pass 395 | else: 396 | pass 397 | 398 | 399 | if __name__ == "__main__": 400 | App = QApplication(sys.argv) 401 | window = Window() 402 | sys.exit(App.exec()) 403 | -------------------------------------------------------------------------------- /facetest/Window/trainner.yml: -------------------------------------------------------------------------------- 1 | %YAML:1.0 2 | radius: 1 3 | neighbors: 8 4 | grid_x: 8 5 | grid_y: 8 6 | histograms: 7 | - !!opencv-matrix 8 | rows: 1 9 | cols: 16384 10 | dt: f 11 | data: [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 12 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 13 | 0., 1.45833328e-001, 0., 1.94444448e-001, 0., 0., 0., 0., 0., 14 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15 | 0., 0., 0., 0., 0., 0., 0., 0., 3.19444448e-001, 16 | 6.94444450e-003, 1.94444448e-001, 0., 0., 0., 0., 0., 0., 0., 17 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 18 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 19 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20 | 0., 0., 2.08333340e-002, 0., 0., 0., 6.94444478e-002, 0., 21 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 22 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 23 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 24 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 25 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 26 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 27 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 28 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 29 | 1.38888890e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 30 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 31 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 32 | 1.38888890e-002, 0., 0., 0., 6.25000000e-002, 0., 33 | 1.11111112e-001, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 34 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 35 | 0., 2.08333340e-002, 0., 0., 0., 6.94444478e-002, 0., 36 | 8.33333358e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 37 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 38 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 39 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 40 | 0., 0., 4.16666679e-002, 0., 0., 0., 6.25000000e-002, 0., 41 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 42 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 43 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 44 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 45 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 46 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 47 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 48 | 1.73611119e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 49 | 0., 0., 0., 4.86111119e-002, 1.18055560e-001, 0., 0., 0., 0., 50 | 0., 0., 4.86111119e-002, 1.38888890e-002, 0., 0., 51 | 2.77777780e-002, 1.38888890e-002, 6.94444450e-003, 52 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 53 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 54 | 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 55 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 56 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 57 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 58 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 59 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 60 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 61 | 6.94444450e-003, 0., 2.77777780e-002, 0., 0., 0., 0., 0., 0., 62 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 63 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 64 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 65 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 66 | 7.63888881e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 67 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 68 | 0., 0., 0., 0., 0., 0., 0., 6.94444478e-001, 0., 69 | 4.86111119e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 70 | 6.94444450e-003, 0., 2.77777780e-002, 0., 0., 6.94444450e-003, 71 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 2.77777780e-002, 72 | 6.94444450e-003, 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 73 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 74 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 75 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 76 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 77 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 78 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 79 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 80 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 81 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 82 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 83 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 84 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 85 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 86 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 87 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 88 | 6.94444450e-003, 4.16666679e-002, 0., 1.38888890e-002, 0., 0., 89 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 90 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 91 | 1.38888890e-002, 7.22222209e-001, 0., 3.47222239e-002, 0., 0., 92 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 93 | 4.16666679e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 94 | 0., 0., 0., 2.77777780e-002, 1.38888890e-002, 0., 0., 95 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 96 | 6.94444450e-003, 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 97 | 0., 0., 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 98 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 2.08333340e-002, 99 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 100 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 101 | 0., 1.38888890e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 102 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 103 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 104 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 105 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.86111119e-002, 106 | 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 0., 0., 0., 107 | 2.08333340e-002, 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 108 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 109 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 110 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 111 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 112 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 113 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 114 | 0., 0., 0., 5.55555560e-002, 2.84722239e-001, 0., 115 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 116 | 0., 1.25000000e-001, 1.59722224e-001, 0., 0., 0., 0., 0., 117 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 118 | 6.94444450e-003, 1.38888890e-002, 1.38888890e-002, 119 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 120 | 0., 0., 6.94444450e-003, 6.94444478e-002, 0., 0., 0., 0., 0., 121 | 0., 0., 2.08333340e-002, 6.94444450e-003, 0., 0., 122 | 2.77777780e-002, 0., 2.77777780e-002, 0., 6.94444450e-003, 0., 123 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 124 | 2.77777780e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 125 | 3.47222239e-002, 1.38888890e-002, 0., 0., 6.25000000e-002, 0., 126 | 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 127 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 128 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 129 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 130 | 0., 0., 0., 0., 6.94444478e-002, 0., 0., 0., 0., 0., 0., 0., 131 | 2.77777780e-002, 0., 0., 0., 5.55555560e-002, 0., 132 | 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 133 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 134 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 135 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 136 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 137 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 138 | 0., 0., 0., 0., 0., 0., 0., 6.94444478e-002, 0., 0., 0., 0., 139 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.11111112e-001, 140 | 1.38888896e-001, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 141 | 6.94444450e-003, 0., 0., 4.16666679e-002, 0., 3.47222239e-002, 142 | 2.77777780e-002, 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 143 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 144 | 6.25000000e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 145 | 4.16666679e-002, 0., 0., 0., 9.02777761e-002, 0., 146 | 3.47222239e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 147 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 148 | 0., 3.47222239e-002, 0., 0., 0., 1.31944448e-001, 149 | 6.94444450e-003, 4.86111119e-002, 6.94444450e-003, 0., 0., 0., 150 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 151 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 152 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 153 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1.04166664e-001, 154 | 0., 0., 0., 0., 0., 0., 0., 4.86111119e-002, 0., 0., 0., 155 | 9.02777761e-002, 6.94444450e-003, 7.63888881e-002, 156 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 157 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 158 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 159 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 160 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 161 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 162 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 163 | 0., 0., 0., 0., 0., 6.94444450e-003, 3.47222239e-002, 0., 0., 164 | 0., 0., 0., 0., 2.77777780e-002, 6.94444450e-003, 0., 0., 165 | 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 166 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 167 | 0., 2.77777780e-002, 0., 1.38888890e-002, 1.38888890e-002, 168 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 169 | 2.08333340e-002, 0., 0., 0., 1.52777776e-001, 0., 170 | 8.33333358e-002, 9.02777761e-002, 0., 0., 0., 0., 0., 0., 0., 171 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 172 | 0., 0., 0., 0., 0., 1.25000000e-001, 6.94444450e-003, 173 | 7.63888881e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 174 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 175 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 176 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 177 | 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 178 | 6.94444450e-003, 0., 0., 0., 3.47222239e-002, 6.94444450e-003, 179 | 2.08333340e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 180 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 181 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 182 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 183 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 184 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 185 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 186 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 187 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 188 | 0., 0., 0., 2.77777780e-002, 2.08333340e-002, 0., 0., 0., 0., 189 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 190 | 0., 0., 2.77777780e-002, 7.63888881e-002, 2.08333340e-002, 191 | 1.38888890e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 192 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 3.47222239e-002, 193 | 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 194 | 2.77777780e-002, 0., 0., 0., 5.55555560e-002, 0., 195 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 196 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.55555560e-002, 0., 0., 197 | 0., 0., 0., 0., 0., 2.77777780e-002, 0., 0., 0., 198 | 4.86111119e-002, 0., 2.77777780e-002, 6.94444450e-003, 0., 0., 199 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 200 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 201 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 202 | 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 203 | 0., 0., 0., 0., 0., 9.72222239e-002, 0., 0., 0., 204 | 1.18055560e-001, 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 205 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 206 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 207 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 208 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 209 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 210 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 211 | 0., 0., 0., 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 0., 212 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 213 | 7.63888881e-002, 0., 0., 0., 0., 0., 0., 6.25000000e-002, 214 | 1.38888890e-002, 0., 0., 2.77777780e-002, 0., 2.77777780e-002, 215 | 9.02777761e-002, 6.94444450e-003, 3.47222239e-002, 216 | 6.94444450e-003, 2.08333340e-002, 0., 0., 6.94444450e-003, 217 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 218 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 219 | 0., 0., 0., 1.38888890e-002, 0., 6.94444450e-003, 220 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 221 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 222 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 223 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 224 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 225 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 226 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 227 | 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 228 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 229 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 230 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 231 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 232 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 233 | 1.04166664e-001, 0., 6.94444478e-002, 0., 0., 0., 234 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 235 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 236 | 6.94444450e-003, 0., 1.80555552e-001, 0., 7.63888881e-002, 0., 237 | 0., 0., 4.16666679e-002, 0., 0., 0., 0., 0., 0., 0., 238 | 1.38888890e-002, 1.18055560e-001, 6.25000000e-002, 0., 239 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 240 | 6.94444450e-003, 0., 0., 2.08333340e-002, 6.94444450e-003, 241 | 5.55555560e-002, 6.94444450e-003, 3.47222239e-002, 0., 0., 0., 242 | 4.86111119e-002, 0., 0., 0., 0., 0., 0., 2.77777780e-002, 243 | 4.86111119e-002, 6.94444450e-003, 6.94444450e-003, 0., 0., 244 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 245 | 0., 4.86111119e-002, 6.25000000e-002, 0., 0., 0., 0., 0., 0., 246 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 247 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 248 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 249 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 250 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 251 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 252 | 0., 0., 0., 4.16666679e-002, 0., 2.08333340e-002, 0., 0., 0., 253 | 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 254 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 255 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 256 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 257 | 0., 1.18055560e-001, 0., 4.16666679e-002, 0., 0., 0., 258 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 259 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 260 | 6.94444450e-003, 0., 6.94444450e-003, 1.11111112e-001, 0., 261 | 7.63888881e-002, 0., 0., 0., 3.47222239e-002, 0., 0., 0., 0., 262 | 0., 0., 0., 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 263 | 0., 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 264 | 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 2.77777780e-002, 265 | 2.08333340e-002, 0., 6.94444450e-003, 6.94444450e-003, 0., 266 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 267 | 1.38888890e-002, 0., 2.77777780e-002, 3.47222239e-002, 268 | 2.08333340e-002, 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 269 | 0., 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 270 | 3.47222239e-002, 6.94444450e-003, 2.70833343e-001, 271 | 1.04166664e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 272 | 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 273 | 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 274 | 6.94444450e-003, 0., 4.16666679e-002, 1.38888890e-002, 0., 0., 275 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 276 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 277 | 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 278 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 279 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 280 | 1.38888890e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 281 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 282 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 283 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 284 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 285 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 286 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 287 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 288 | 2.77777780e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 289 | 0., 0., 1.38888890e-002, 0., 0., 6.94444450e-003, 290 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 291 | 0., 0., 0., 0., 0., 1.38888890e-002, 6.94444478e-002, 292 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 293 | 0., 0., 0., 0., 1.38888890e-002, 2.77777780e-002, 294 | 1.38888890e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 295 | 2.77777780e-002, 6.94444450e-003, 0., 0., 1.11111112e-001, 0., 296 | 4.16666657e-001, 1.11111112e-001, 0., 0., 0., 0., 0., 0., 0., 297 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 298 | 0., 0., 0., 0., 0., 2.77777780e-002, 0., 9.72222239e-002, 0., 299 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 300 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 301 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 302 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 303 | 1.38888890e-002, 0., 4.16666679e-002, 1.38888890e-002, 0., 0., 304 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 305 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 306 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 307 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 308 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 309 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 310 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 311 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 312 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 313 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 314 | 0., 6.94444450e-003, 0., 6.94444450e-003, 3.47222239e-002, 0., 315 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 6.94444450e-003, 316 | 0., 0., 1.52777776e-001, 6.94444450e-003, 5.06944478e-001, 317 | 1.11111112e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 318 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 319 | 0., 6.94444450e-003, 0., 9.72222239e-002, 1.38888890e-002, 0., 320 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 321 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 322 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 323 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 324 | 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 325 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 326 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 327 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 328 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 329 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 330 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 331 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 332 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 333 | 1.38888890e-002, 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 334 | 0., 0., 0., 6.94444450e-003, 0., 1.38888890e-002, 335 | 5.55555560e-002, 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 336 | 0., 0., 0., 2.08333340e-002, 0., 0., 0., 4.86111119e-002, 337 | 6.94444450e-003, 2.29166672e-001, 1.11111112e-001, 0., 0., 0., 338 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 339 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.47222239e-002, 0., 340 | 2.77777780e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 341 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 342 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 343 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 344 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 345 | 0., 0., 6.94444450e-003, 0., 1.38888890e-002, 1.38888890e-002, 346 | 0., 6.94444450e-003, 0., 2.77777780e-002, 0., 0., 0., 347 | 2.08333340e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 348 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 349 | 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 350 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 351 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 352 | 2.77777780e-002, 0., 0., 0., 7.63888881e-002, 0., 0., 0., 0., 353 | 0., 0., 0., 2.08333340e-002, 0., 6.94444450e-003, 0., 354 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 355 | 1.38888890e-002, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 356 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 357 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 358 | 2.08333340e-002, 2.08333340e-002, 2.77777780e-002, 0., 0., 0., 359 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 360 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 361 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 362 | 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 363 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 364 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 365 | 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 366 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 367 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 368 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 369 | 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 370 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 371 | 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 0., 372 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 373 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 374 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 375 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 376 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 377 | 6.94444450e-003, 6.94444450e-003, 1.04166664e-001, 0., 378 | 1.38888890e-002, 0., 6.94444450e-003, 0., 1.38888890e-002, 0., 379 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 380 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 381 | 0., 2.08333340e-002, 1.87500000e-001, 0., 2.77777780e-002, 0., 382 | 0., 0., 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 383 | 2.77777780e-002, 4.16666679e-002, 8.33333358e-002, 0., 384 | 2.77777780e-002, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 385 | 0., 0., 0., 0., 6.94444450e-003, 2.08333340e-002, 386 | 4.86111119e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 387 | 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 388 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 4.16666679e-002, 389 | 0., 3.47222239e-001, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 390 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 391 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 4.86111119e-002, 392 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 393 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 394 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 395 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 396 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 397 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 398 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 399 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 400 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 401 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 402 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 403 | 0., 0., 0., 0., 0., 6.94444450e-003, 2.56944448e-001, 0., 404 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 405 | 6.94444450e-003, 0., 6.94444450e-003, 2.08333340e-002, 406 | 6.94444450e-003, 9.72222239e-002, 0., 0., 0., 6.94444450e-003, 407 | 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 408 | 6.94444450e-003, 6.94444450e-003, 1.38888890e-002, 409 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 410 | 0., 0., 0., 0., 0., 3.47222239e-002, 4.16666679e-002, 411 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 412 | 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 413 | 1.45833328e-001, 9.72222239e-002, 0., 0., 0., 0., 0., 0., 0., 414 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 415 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 416 | 0., 0., 0., 2.77777780e-002, 0., 1.38888890e-002, 0., 0., 417 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 418 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 419 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 420 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 421 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 422 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 0., 423 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 424 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 425 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 426 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 427 | 0., 0., 2.08333340e-002, 0., 2.08333340e-002, 0., 0., 0., 0., 428 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 429 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 430 | 2.77777780e-002, 2.15277776e-001, 0., 1.38888890e-002, 0., 431 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 432 | 6.94444450e-003, 0., 0., 2.08333340e-002, 3.47222239e-002, 0., 433 | 0., 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 434 | 6.94444450e-003, 0., 1.38888890e-002, 3.47222239e-002, 435 | 6.94444450e-003, 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 436 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 437 | 6.94444450e-003, 0., 5.55555560e-002, 2.08333340e-002, 0., 438 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 439 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 440 | 1.04166664e-001, 5.55555560e-002, 0., 0., 0., 0., 0., 0., 0., 441 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 442 | 0., 0., 0., 0., 0., 2.77777780e-002, 0., 0., 6.94444450e-003, 443 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 444 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 445 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 446 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 447 | 5.55555560e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 448 | 6.94444450e-003, 1.11111112e-001, 0., 0., 0., 4.16666679e-002, 449 | 0., 1.38888890e-002, 0., 1.38888890e-002, 6.94444450e-003, 0., 450 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 451 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 452 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 453 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 454 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 455 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 456 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 457 | 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 6.94444450e-003, 458 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 459 | 6.94444450e-003, 2.08333340e-002, 3.47222239e-002, 460 | 1.38888890e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 461 | 4.16666679e-002, 6.94444450e-003, 0., 3.47222239e-002, 0., 462 | 1.38888890e-002, 2.08333340e-002, 4.16666679e-002, 463 | 2.77777780e-002, 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 464 | 0., 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 465 | 5.55555560e-002, 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 466 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 467 | 9.72222239e-002, 4.16666679e-002, 6.94444450e-003, 0., 0., 0., 468 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 469 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 470 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 471 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 472 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 473 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 474 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 475 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 476 | 0., 0., 0., 6.94444450e-003, 0., 1.38888890e-002, 477 | 1.38888890e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 478 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 479 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 480 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 481 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 482 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 483 | 0., 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 484 | 4.16666679e-002, 0., 8.33333358e-002, 0., 0., 0., 485 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 486 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 487 | 4.16666679e-002, 2.77777780e-002, 0., 1.38888890e-002, 488 | 6.94444450e-003, 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 489 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 2.77777780e-002, 0., 490 | 2.08333340e-002, 0., 6.94444450e-003, 6.94444450e-003, 491 | 6.94444450e-003, 0., 6.94444450e-003, 0., 1.38888890e-002, 492 | 6.94444450e-003, 0., 2.77777780e-002, 7.63888881e-002, 0., 0., 493 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 494 | 4.16666679e-002, 6.25000000e-002, 0., 0., 0., 0., 0., 0., 0., 495 | 0., 0., 0., 0., 0., 0., 0., 6.94444478e-002, 3.47222239e-002, 496 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 497 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 498 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 499 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 500 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 501 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 502 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 503 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 504 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 505 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 506 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 507 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 508 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 509 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 510 | 3.47222239e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 511 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 4.51388896e-001, 512 | 7.63888881e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 513 | 4.16666679e-002, 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 514 | 2.08333340e-002, 5.55555560e-002, 6.94444450e-003, 0., 0., 0., 515 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 516 | 7.63888881e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 517 | 0., 0., 0., 5.55555560e-002, 1.11111112e-001, 0., 0., 0., 0., 518 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 519 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 520 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 521 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 522 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 523 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 524 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 525 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 526 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 527 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 528 | 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 529 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 530 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.16666679e-002, 531 | 2.08333328e-001, 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 532 | 0., 0., 0., 0., 0., 6.94444450e-003, 1.94444448e-001, 533 | 1.38888896e-001, 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 534 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 535 | 6.94444450e-003, 4.16666679e-002, 0., 2.08333340e-002, 0., 0., 536 | 0., 0., 0., 3.47222239e-002, 0., 0., 0., 0., 0., 0., 537 | 6.94444450e-003, 3.12500000e-001, 0., 0., 0., 0., 0., 0., 0., 538 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 4.16666679e-002, 539 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 540 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 541 | 1.38888890e-002, 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 542 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 543 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 544 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 545 | 0., 0., 0., 0., 0., 0., 0., 0., 3.47222239e-002, 0., 0., 0., 546 | 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 547 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 548 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 549 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 550 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 551 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 552 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 553 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 554 | 0., 0., 0., 5.55555560e-002, 2.77777780e-002, 0., 0., 555 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 556 | 0., 0., 2.77777780e-002, 1.66666672e-001, 4.86111119e-002, 0., 557 | 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 558 | 6.94444450e-003, 0., 0., 0., 0., 2.77777780e-002, 559 | 3.47222239e-002, 3.47222239e-002, 0., 0., 1.38888890e-002, 560 | 6.94444450e-003, 0., 1.38888890e-002, 6.25000000e-002, 0., 0., 561 | 0., 0., 2.77777780e-002, 0., 3.47222239e-002, 1.31944448e-001, 562 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1.38888890e-002, 563 | 0., 0., 0., 4.16666679e-002, 0., 2.08333340e-002, 564 | 5.55555560e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 565 | 0., 0., 0., 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 566 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 6.94444450e-003, 567 | 8.33333358e-002, 0., 3.47222239e-002, 2.08333340e-002, 568 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 569 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 570 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 571 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 572 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 573 | 0., 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 574 | 0., 4.86111119e-002, 0., 0., 0., 0., 0., 0., 0., 575 | 5.55555560e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 576 | 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 577 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 578 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 579 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 0., 580 | 1.38888890e-002, 0., 0., 0., 2.77777780e-002, 0., 0., 0., 0., 581 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 582 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 583 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 584 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 585 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 2.08333340e-002, 586 | 2.08333340e-002, 1.38888890e-002, 4.16666679e-002, 587 | 6.94444450e-003, 1.38888890e-002, 6.94444450e-003, 588 | 6.94444450e-003, 6.94444450e-003, 3.47222239e-002, 0., 0., 0., 589 | 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 590 | 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 591 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 592 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 593 | 0., 0., 6.94444450e-003, 0., 0., 6.94444450e-003, 594 | 2.77777780e-002, 6.94444450e-003, 2.77777780e-002, 595 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 596 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 597 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 598 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 599 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 600 | 0., 0., 2.77777780e-002, 6.94444450e-003, 4.16666679e-002, 0., 601 | 6.94444450e-003, 0., 4.16666679e-002, 0., 0., 0., 0., 0., 0., 602 | 0., 2.77777780e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 603 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 604 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 605 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 606 | 1.38888890e-002, 0., 4.86111119e-002, 0., 2.77777780e-002, 0., 607 | 0., 6.94444450e-003, 9.72222239e-002, 0., 0., 0., 0., 0., 0., 608 | 6.94444450e-003, 6.94444478e-002, 0., 6.94444450e-003, 0., 0., 609 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 610 | 6.94444450e-003, 6.94444450e-003, 4.86111119e-002, 0., 611 | 1.38888890e-002, 0., 0., 0., 3.47222239e-002, 0., 0., 0., 0., 612 | 0., 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 0., 613 | 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 0., 614 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 615 | 4.86111119e-002, 4.16666679e-002, 6.94444450e-003, 0., 616 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 617 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 618 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.86111119e-002, 0., 619 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 620 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 621 | 0., 0., 4.86111119e-002, 0., 3.47222239e-002, 0., 0., 0., 0., 622 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 623 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 624 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 625 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 626 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 627 | 2.08333340e-002, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 628 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 629 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 630 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 631 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 632 | 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 633 | 1.11111112e-001, 0., 8.33333358e-002, 0., 0., 0., 634 | 2.08333340e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 635 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 636 | 0., 0., 0., 0., 0., 0., 1.25000000e-001, 0., 6.94444478e-002, 637 | 0., 6.94444450e-003, 0., 5.55555560e-002, 0., 0., 0., 0., 638 | 6.94444450e-003, 0., 0., 6.94444450e-003, 6.94444450e-003, 639 | 2.08333340e-002, 0., 2.77777780e-002, 0., 0., 0., 640 | 6.94444450e-003, 1.38888890e-002, 2.08333340e-002, 0., 0., 641 | 1.38888890e-002, 6.94444450e-003, 6.94444450e-003, 642 | 2.77777780e-002, 2.08333340e-002, 6.94444450e-003, 0., 0., 643 | 2.08333340e-002, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 644 | 2.08333340e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 645 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 646 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 647 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 648 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 649 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 650 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 651 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 652 | 0., 0., 0., 4.16666679e-002, 0., 0., 0., 0., 0., 0., 0., 653 | 5.55555560e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 654 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 655 | 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 656 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 657 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 658 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 659 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 2.08333340e-002, 0., 660 | 0., 0., 2.77777780e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 661 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 662 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 663 | 2.77777780e-002, 6.94444450e-003, 2.77777780e-002, 0., 664 | 6.94444450e-003, 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 665 | 0., 0., 0., 0., 0., 2.08333328e-001, 1.04166664e-001, 0., 666 | 1.38888890e-002, 6.94444450e-003, 0., 6.94444450e-003, 667 | 6.94444450e-003, 3.47222239e-002, 0., 0., 0., 4.16666679e-002, 668 | 2.08333340e-002, 6.94444450e-003, 4.86111119e-002, 669 | 6.94444450e-003, 1.38888890e-002, 0., 0., 6.94444450e-003, 0., 670 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 671 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 672 | 0., 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 673 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 674 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 675 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 676 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 677 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 678 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 679 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 680 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 681 | 1.38888890e-002, 0., 1.38888890e-002, 0., 0., 0., 682 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 683 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 684 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 685 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 686 | 6.94444450e-003, 4.86111119e-002, 0., 5.55555560e-002, 0., 0., 687 | 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 688 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 689 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 690 | 2.08333340e-002, 3.12500000e-001, 0., 4.16666679e-002, 0., 0., 691 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 692 | 1.38888890e-002, 5.55555560e-002, 1.25000000e-001, 0., 693 | 2.08333340e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 694 | 0., 6.94444450e-003, 1.38888890e-002, 4.86111119e-002, 695 | 4.16666679e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 696 | 0., 0., 0., 0., 0., 0., 0., 6.94444478e-002, 6.94444450e-003, 697 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 698 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 699 | 0., 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 700 | 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 701 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 702 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 703 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 704 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 705 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 706 | 7.63888881e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 707 | 1.38888890e-002, 0., 0., 1.38888890e-002, 0., 0., 708 | 6.94444450e-003, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 709 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 710 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 711 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 712 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 713 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.16666679e-002, 0., 714 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 715 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 716 | 0., 0., 0., 0., 1.38888890e-002, 6.25000000e-002, 0., 717 | 2.77777780e-002, 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 718 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 7.63888881e-002, 719 | 4.86111119e-002, 0., 0., 0., 0., 0., 0., 3.47222239e-002, 720 | 2.77777780e-002, 0., 0., 5.55555560e-002, 2.77777780e-002, 721 | 9.02777761e-002, 4.86111119e-002, 0., 6.94444450e-003, 0., 0., 722 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 723 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 724 | 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 725 | 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 726 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 727 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 6.94444450e-003, 728 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 729 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 730 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 731 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.25000000e-002, 732 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 3.47222239e-002, 733 | 6.94444450e-003, 0., 0., 2.08333340e-002, 6.94444450e-003, 734 | 6.94444450e-003, 0., 6.94444450e-003, 2.08333340e-002, 0., 735 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 736 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 737 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 738 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 739 | 0., 0., 0., 0., 0., 2.08333340e-002, 0., 6.94444450e-003, 0., 740 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 741 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 742 | 0., 0., 0., 2.77777780e-002, 1.11111112e-001, 0., 743 | 2.77777780e-002, 0., 6.94444450e-003, 0., 2.08333340e-002, 0., 744 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 9.72222239e-002, 745 | 1.59722224e-001, 0., 2.08333340e-002, 0., 0., 0., 746 | 6.94444450e-003, 6.94444450e-003, 6.94444450e-003, 0., 0., 747 | 2.77777780e-002, 2.77777780e-002, 6.94444450e-003, 748 | 6.25000000e-002, 6.94444478e-002, 2.08333340e-002, 0., 0., 749 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 750 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 751 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 752 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1.38888890e-002, 0., 753 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 5.55555560e-002, 0., 754 | 0., 0., 6.94444478e-002, 0., 0., 6.94444450e-003, 755 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 756 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 757 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 758 | 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 0., 0., 0., 0., 759 | 0., 0., 0., 5.55555560e-002, 0., 0., 0., 1.38888890e-002, 0., 760 | 6.94444450e-003, 0., 0., 0., 0., 2.77777780e-002, 0., 761 | 6.94444450e-003, 0., 2.77777780e-002, 0., 0., 0., 0., 0., 0., 762 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 763 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 764 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 765 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 2.08333340e-002, 0., 766 | 4.16666679e-002, 0., 0., 0., 2.77777780e-002, 0., 0., 0., 0., 767 | 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 768 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 769 | 2.77777780e-002, 0., 3.47222239e-002, 6.94444450e-003, 0., 0., 770 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 771 | 2.08333340e-002, 2.77777780e-002, 7.63888881e-002, 0., 772 | 3.47222239e-002, 0., 0., 0., 1.38888890e-002, 0., 773 | 6.94444450e-003, 0., 2.08333340e-002, 6.94444450e-003, 774 | 6.94444450e-003, 0., 6.94444478e-002, 3.47222239e-002, 775 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 776 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 777 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 778 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 779 | 0., 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 780 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 781 | 0., 0., 2.08333340e-002, 0., 0., 6.94444450e-003, 0., 0., 0., 782 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 783 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 784 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 785 | 0., 3.47222239e-002, 0., 0., 1.38888890e-002, 0., 0., 0., 786 | 3.47222239e-002, 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 787 | 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 788 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 789 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 790 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 791 | 6.94444450e-003, 6.94444450e-003, 0., 1.38888890e-002, 792 | 6.94444450e-003, 1.04166664e-001, 0., 1.11111112e-001, 793 | 1.38888890e-002, 0., 0., 4.16666679e-002, 0., 0., 0., 0., 0., 794 | 0., 0., 1.38888890e-002, 0., 6.94444450e-003, 0., 795 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 796 | 0., 0., 1.11111112e-001, 0., 8.33333358e-002, 6.94444450e-003, 797 | 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 798 | 2.08333340e-002, 0., 1.38888890e-002, 0., 2.77777780e-002, 0., 799 | 0., 0., 6.94444450e-003, 1.38888890e-002, 2.08333340e-002, 0., 800 | 1.38888890e-002, 6.94444450e-003, 0., 6.94444450e-003, 801 | 5.55555560e-002, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 802 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 803 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 804 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 805 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 806 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 807 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 808 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 809 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 810 | 2.77777780e-002, 0., 6.94444478e-002, 0., 0., 0., 811 | 1.11111112e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 812 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 813 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 814 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 815 | 0., 0., 0., 0., 0., 6.94444450e-003, 1.80555552e-001, 0., 816 | 1.38888896e-001, 0., 0., 0., 1.04166664e-001, 0., 0., 0., 0., 817 | 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 818 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 819 | 0., 6.94444450e-003, 7.63888881e-002, 0., 2.08333340e-002, 0., 820 | 6.94444450e-003, 0., 6.25000000e-002, 0., 0., 0., 0., 0., 0., 821 | 0., 6.94444450e-003, 0., 5.55555560e-002, 0., 2.08333340e-002, 822 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 823 | 2.77777780e-002, 0., 2.77777780e-002, 0., 3.47222239e-002, 0., 824 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 825 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 826 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 827 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 828 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 829 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 830 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 831 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 832 | 0., 0., 0., 0., 6.25000000e-002, 0., 5.55555560e-002, 0., 0., 833 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 834 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 835 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 836 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 837 | 0., 0., 0., 0., 0., 6.94444450e-003, 1.38888896e-001, 0., 838 | 1.38888896e-001, 0., 0., 0., 1.11111112e-001, 0., 0., 0., 0., 839 | 0., 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 0., 0., 0., 840 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 841 | 6.25000000e-002, 0., 1.04166664e-001, 0., 0., 0., 842 | 9.02777761e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 843 | 3.47222239e-002, 6.94444450e-003, 1.38888890e-002, 0., 844 | 6.94444450e-003, 0., 0., 0., 3.47222239e-002, 0., 0., 0., 0., 845 | 0., 0., 0., 6.94444450e-003, 4.86111119e-002, 3.47222239e-002, 846 | 0., 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 847 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1.38888890e-002, 848 | 2.08333340e-002, 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 849 | 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 850 | 2.08333340e-002, 0., 1.38888890e-002, 1.38888890e-002, 0., 0., 851 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 852 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 853 | 2.77777780e-002, 0., 6.94444450e-003, 0., 6.94444450e-003, 854 | 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 855 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 856 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 857 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 858 | 0., 0., 4.86111119e-002, 0., 0., 0., 0., 0., 0., 0., 859 | 1.38888890e-002, 0., 0., 0., 5.55555560e-002, 0., 860 | 1.38888890e-002, 6.94444450e-003, 0., 1.38888890e-002, 0., 861 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 862 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 863 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 864 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 865 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 866 | 4.16666679e-002, 0., 2.08333340e-002, 0., 0., 0., 867 | 4.86111119e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 868 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 869 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 2.08333340e-002, 870 | 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 0., 871 | 4.16666679e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 872 | 2.77777780e-002, 4.16666679e-002, 0., 1.38888890e-002, 0., 0., 873 | 0., 6.94444450e-003, 2.08333340e-002, 2.77777780e-002, 0., 0., 874 | 2.08333340e-002, 2.08333340e-002, 0., 8.33333358e-002, 875 | 4.16666679e-002, 2.77777780e-002, 0., 6.94444450e-003, 876 | 1.38888890e-002, 0., 0., 2.77777780e-002, 0., 0., 0., 0., 0., 877 | 0., 2.08333340e-002, 2.77777780e-002, 2.08333340e-002, 878 | 1.38888890e-002, 0., 1.38888890e-002, 0., 0., 0., 879 | 1.38888890e-002, 6.94444450e-003, 1.38888890e-002, 0., 0., 880 | 4.86111119e-002, 6.94444450e-003, 2.77777780e-002, 881 | 4.86111119e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 882 | 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 883 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 884 | 2.77777780e-002, 1.38888890e-002, 0., 0., 0., 0., 885 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 886 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 887 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 888 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 889 | 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 890 | 1.38888890e-002, 6.94444450e-003, 0., 0., 2.77777780e-002, 0., 891 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 892 | 0., 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 893 | 0., 0., 2.77777780e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 894 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 895 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 896 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 897 | 6.94444450e-003, 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 898 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 899 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 900 | 6.94444450e-003, 0., 2.08333340e-002, 0., 6.94444450e-003, 0., 901 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 902 | 2.08333340e-002, 2.08333340e-002, 2.08333340e-002, 0., 903 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 904 | 6.94444450e-003, 0., 0., 6.94444450e-003, 6.94444450e-003, 905 | 4.16666679e-002, 9.72222239e-002, 2.77777780e-002, 906 | 1.38888890e-002, 0., 6.94444450e-003, 6.94444450e-003, 0., 907 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 908 | 1.38888890e-002, 0., 6.94444450e-003, 0., 4.86111119e-002, 909 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 910 | 0., 2.77777780e-002, 6.94444450e-003, 0., 0., 4.86111119e-002, 911 | 2.08333340e-002, 0., 2.77777780e-002, 6.94444450e-003, 0., 0., 912 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 913 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 914 | 2.77777780e-002, 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 915 | 6.94444450e-003, 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 916 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 917 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 918 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 919 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 9.02777761e-002, 920 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 921 | 4.16666679e-002, 6.94444450e-003, 1.38888890e-002, 922 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 923 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 924 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 925 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 926 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 927 | 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 928 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 929 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 930 | 1.38888890e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 931 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 6.94444450e-003, 932 | 1.38888890e-002, 4.16666679e-002, 0., 0., 0., 0., 0., 0., 933 | 6.94444450e-003, 2.77777780e-002, 0., 0., 2.77777780e-002, 934 | 6.94444450e-003, 2.77777780e-002, 1.18055560e-001, 935 | 2.77777780e-002, 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 936 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 937 | 1.38888890e-002, 5.55555560e-002, 1.38888890e-002, 0., 0., 938 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 939 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 940 | 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 941 | 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 942 | 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 943 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 944 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 945 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 946 | 0., 0., 0., 9.02777761e-002, 1.38888890e-002, 0., 0., 0., 0., 947 | 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 0., 948 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 949 | 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 950 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 951 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 952 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 953 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 954 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 955 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1.38888890e-002, 956 | 3.47222239e-002, 0., 2.08333340e-002, 0., 1.38888890e-002, 0., 957 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 958 | 8.33333358e-002, 8.33333358e-002, 0., 1.38888890e-002, 0., 0., 959 | 0., 6.94444450e-003, 1.38888890e-002, 1.38888890e-002, 0., 960 | 1.38888890e-002, 4.86111119e-002, 2.08333340e-002, 961 | 2.08333340e-002, 1.18055560e-001, 6.25000000e-002, 0., 0., 962 | 6.94444450e-003, 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 963 | 0., 0., 6.94444450e-003, 0., 2.08333340e-002, 0., 0., 0., 964 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 965 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 966 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 967 | 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 968 | 1.52777776e-001, 6.94444450e-003, 6.94444450e-003, 0., 969 | 4.16666679e-002, 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 970 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 971 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 972 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 973 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 974 | 6.94444450e-003, 0., 0., 0., 3.47222239e-002, 0., 0., 975 | 1.38888890e-002, 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 976 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 977 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 978 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 979 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 980 | 6.94444450e-003, 0., 2.77777780e-002, 1.38888890e-002, 981 | 1.38888890e-002, 0., 1.04166664e-001, 0., 0., 0., 982 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 983 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 984 | 0., 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 985 | 2.08333340e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 986 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 2.08333340e-002, 0., 987 | 0., 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 988 | 2.77777780e-002, 6.94444450e-003, 6.94444450e-003, 989 | 6.94444450e-003, 1.25000000e-001, 4.86111119e-002, 0., 0., 990 | 6.94444450e-003, 2.08333340e-002, 0., 0., 1.38888890e-002, 0., 991 | 0., 0., 0., 6.94444450e-003, 0., 2.08333340e-002, 992 | 6.94444450e-003, 2.77777780e-002, 0., 0., 0., 6.94444450e-003, 993 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 4.16666679e-002, 0., 994 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 995 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 996 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 997 | 6.94444450e-003, 0., 0., 3.47222239e-002, 0., 2.08333340e-002, 998 | 6.94444450e-003, 2.77777780e-002, 6.94444450e-003, 0., 0., 0., 999 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1000 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1001 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1002 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1003 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1004 | 0., 0., 0., 2.77777780e-002, 6.94444450e-003, 2.77777780e-002, 1005 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1006 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1007 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1008 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1009 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1010 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1011 | 6.94444450e-003, 6.94444450e-003, 3.47222239e-002, 0., 1012 | 1.38888896e-001, 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 1013 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1014 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1015 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 6.94444450e-003, 1016 | 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 1017 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1018 | 0., 1.38888890e-002, 1.38888890e-002, 0., 0., 1.04166664e-001, 1019 | 6.94444450e-003, 2.08333340e-002, 0., 2.08333340e-002, 0., 0., 1020 | 0., 7.63888881e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1021 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1022 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1023 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1024 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1025 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1026 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1027 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1028 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1029 | 1.38888890e-002, 6.94444450e-003, 9.02777761e-002, 0., 0., 0., 1030 | 2.36111119e-001, 0., 0., 0., 0., 0., 0., 0., 7.63888881e-002, 1031 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1032 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1033 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1034 | 6.94444450e-003, 0., 6.94444450e-003, 0., 9.02777761e-002, 0., 1035 | 0., 0., 2.08333328e-001, 0., 0., 0., 0., 0., 0., 0., 1036 | 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1037 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1038 | 2.77777780e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1039 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1040 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1041 | 2.77777780e-002, 2.77777780e-002, 6.94444450e-003, 1042 | 2.08333340e-002, 0., 0., 6.94444450e-003, 9.72222239e-002, 0., 1043 | 0., 0., 0., 6.94444450e-003, 0., 2.08333340e-002, 1044 | 1.11111112e-001, 6.94444450e-003, 0., 0., 0., 0., 0., 1045 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 1046 | 6.94444450e-003, 0., 6.94444450e-003, 4.16666679e-002, 0., 0., 1047 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1048 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1049 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1050 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1051 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1052 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1053 | 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1054 | 0., 0., 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 1055 | 4.16666679e-002, 0., 6.94444450e-003, 0., 4.16666679e-002, 0., 1056 | 0., 0., 0., 0., 0., 0., 4.16666679e-002, 0., 0., 0., 1057 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1058 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1059 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1060 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 9.72222239e-002, 1061 | 0., 0., 6.94444450e-003, 8.33333358e-002, 0., 6.94444450e-003, 1062 | 0., 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 1063 | 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1064 | 6.94444450e-003, 0., 2.08333340e-002, 0., 1.38888890e-002, 0., 1065 | 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1066 | 0., 0., 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 1067 | 0., 0., 0., 0., 0., 7.63888881e-002, 3.47222239e-002, 1068 | 2.77777780e-002, 6.94444450e-003, 6.94444450e-003, 1069 | 6.94444450e-003, 0., 0., 4.16666679e-002, 0., 0., 0., 0., 1070 | 1.38888890e-002, 0., 1.38888890e-002, 2.08333340e-002, 1071 | 2.08333340e-002, 2.08333340e-002, 0., 0., 0., 0., 1072 | 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 1073 | 4.16666679e-002, 2.77777780e-002, 6.25000000e-002, 1074 | 6.25000000e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1075 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1076 | 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 1077 | 6.94444450e-003, 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 1078 | 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1079 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1080 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1081 | 6.94444450e-003, 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 1082 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1083 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1084 | 0., 0., 0., 1.38888890e-002, 0., 6.94444450e-003, 1085 | 2.77777780e-002, 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1086 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 1087 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1088 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1089 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1090 | 0., 0., 0., 0., 1.38888890e-002, 0., 6.94444450e-003, 0., 1091 | 6.94444450e-003, 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1092 | 0., 0., 0., 6.94444450e-003, 0., 0., 2.08333340e-002, 0., 0., 1093 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1094 | 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1095 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1096 | 2.08333340e-002, 6.94444450e-003, 2.08333340e-002, 0., 1097 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1098 | 2.08333340e-002, 2.08333340e-002, 2.08333340e-002, 1099 | 9.72222239e-002, 2.08333340e-002, 2.08333340e-002, 0., 0., 1100 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1101 | 0., 6.94444450e-003, 1.38888890e-002, 4.86111119e-002, 1102 | 4.86111119e-002, 0., 0., 2.08333340e-002, 0., 6.94444450e-003, 1103 | 0., 3.47222239e-002, 1.38888890e-002, 0., 0., 4.16666679e-002, 1104 | 0., 2.08333340e-002, 4.16666679e-002, 0., 0., 0., 0., 0., 0., 1105 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1106 | 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 1107 | 4.16666679e-002, 1.38888890e-002, 1.38888890e-002, 1108 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1109 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1110 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1111 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1112 | 0., 0., 6.94444450e-003, 2.77777780e-002, 6.94444450e-003, 0., 1113 | 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1.38888890e-002, 1114 | 0., 0., 0., 2.77777780e-002, 0., 0., 6.94444450e-003, 0., 1115 | 6.94444450e-003, 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1116 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1117 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1118 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1119 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1120 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1121 | 6.94444450e-003, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 1122 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1123 | 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 1124 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1125 | 2.77777780e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1126 | 0., 1.38888890e-002, 0., 0., 3.47222239e-002, 1.38888890e-002, 1127 | 2.77777780e-002, 1.52777776e-001, 3.47222239e-002, 1128 | 2.08333340e-002, 0., 1.38888890e-002, 2.08333340e-002, 0., 0., 1129 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1130 | 6.94444450e-003, 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 1131 | 0., 0., 2.77777780e-002, 0., 0., 0., 0., 2.77777780e-002, 0., 1132 | 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1133 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1134 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1135 | 0., 6.94444450e-003, 2.08333340e-002, 1.38888890e-002, 0., 0., 1136 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1137 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1138 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1139 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1140 | 0., 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 1141 | 2.08333340e-002, 1.38888890e-002, 0., 6.94444450e-003, 0., 0., 1142 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1143 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1144 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1145 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1146 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1147 | 3.47222239e-002, 0., 1.38888890e-002, 0., 6.94444450e-003, 0., 1148 | 8.33333358e-002, 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 1149 | 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 1150 | 0., 0., 0., 2.77777780e-002, 0., 2.77777780e-002, 0., 1151 | 2.77777780e-002, 0., 0., 0., 2.77777780e-002, 0., 0., 0., 0., 1152 | 0., 6.94444450e-003, 0., 1.38888890e-002, 1.38888890e-002, 1153 | 2.08333340e-002, 0., 0., 0., 0., 0., 3.47222239e-002, 0., 1154 | 6.94444450e-003, 0., 6.94444450e-003, 1.38888890e-002, 1155 | 1.38888890e-002, 6.94444450e-003, 1.45833328e-001, 1156 | 7.63888881e-002, 3.47222239e-002, 0., 6.94444450e-003, 1157 | 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 1158 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1159 | 2.77777780e-002, 1.38888890e-002, 1.38888890e-002, 1160 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 1161 | 0., 0., 0., 0., 2.77777780e-002, 0., 6.94444450e-003, 1162 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1163 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1164 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 2.77777780e-002, 1165 | 0., 1.38888890e-002, 6.94444450e-003, 6.94444450e-003, 1166 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1167 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1168 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1169 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1170 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 1171 | 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 2.77777780e-002, 1172 | 1.38888890e-002, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1173 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1174 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1175 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1176 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1177 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 1178 | 1.38888890e-002, 2.08333340e-002, 0., 6.94444450e-003, 0., 1179 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1180 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1181 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 1182 | 0., 6.25000000e-002, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 1183 | 0., 0., 6.94444450e-003, 0., 0., 0., 2.77777780e-002, 1184 | 6.94444450e-003, 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 1185 | 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 1186 | 2.08333340e-002, 0., 1.38888890e-002, 9.72222239e-002, 1187 | 4.16666679e-002, 2.77777780e-002, 0., 6.94444450e-003, 1188 | 1.38888890e-002, 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 1189 | 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 6.94444450e-003, 1190 | 2.08333340e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1191 | 0., 0., 0., 4.16666679e-002, 0., 1.38888890e-002, 0., 0., 0., 1192 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1193 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 1194 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1195 | 1.45833328e-001, 0., 6.94444450e-003, 0., 2.77777780e-002, 1196 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1197 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1198 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1199 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1200 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1201 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1202 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1203 | 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1204 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1205 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1206 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 4.16666679e-002, 1207 | 0., 1.25000000e-001, 0., 0., 6.94444450e-003, 1.38888890e-002, 1208 | 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1209 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1210 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.47222239e-002, 0., 1211 | 3.47222239e-002, 0., 6.94444450e-003, 0., 1.38888890e-002, 0., 1212 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1213 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 1214 | 6.94444450e-003, 0., 4.16666679e-002, 2.77777780e-002, 1215 | 6.94444450e-003, 6.94444450e-003, 5.55555560e-002, 1216 | 7.63888881e-002, 3.47222239e-002, 0., 0., 1.38888890e-002, 0., 1217 | 2.77777780e-002, 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 1218 | 6.94444450e-003, 0., 1.38888890e-002, 6.94444450e-003, 1219 | 3.47222239e-002, 2.08333340e-002, 0., 6.94444450e-003, 0., 0., 1220 | 0., 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 1221 | 4.16666679e-002, 6.94444450e-003, 6.94444478e-002, 1222 | 5.55555560e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1223 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1224 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1225 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1226 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1227 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1228 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1229 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1230 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 2.08333340e-002, 1231 | 0., 2.77777780e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 1232 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1233 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 1234 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1235 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1236 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1237 | 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1238 | 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1239 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1240 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1241 | 6.94444450e-003, 0., 6.94444450e-003, 1.38888890e-002, 1242 | 1.38888890e-002, 1.38888890e-002, 0., 0., 0., 0., 1243 | 6.94444450e-003, 6.94444450e-003, 6.94444450e-003, 1244 | 1.38888890e-002, 0., 0., 1.38888890e-002, 0., 2.77777780e-002, 1245 | 1.80555552e-001, 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 1246 | 0., 0., 4.16666679e-002, 0., 0., 0., 0., 0., 0., 1247 | 6.94444450e-003, 9.02777761e-002, 2.08333340e-002, 0., 0., 1248 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1249 | 1.38888890e-002, 6.94444450e-003, 6.94444450e-003, 1250 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1251 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1252 | 1.38888890e-002, 0., 0., 0., 0., 0., 1.38888890e-002, 1253 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1254 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1255 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1256 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1257 | 6.25000000e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1258 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1259 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1260 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1261 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1262 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1263 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1264 | 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 1265 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1266 | 0., 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 1267 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1268 | 0., 2.77777780e-002, 2.50000000e-001, 1.25000000e-001, 0., 1269 | 6.94444450e-003, 0., 0., 0., 0., 3.47222239e-002, 1270 | 2.08333340e-002, 0., 0., 2.77777780e-002, 6.94444450e-003, 1271 | 6.94444450e-003, 6.25000000e-002, 6.94444450e-003, 0., 0., 1272 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1273 | 0., 0., 6.94444450e-003, 2.29166672e-001, 0., 0., 0., 0., 0., 1274 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.77777780e-002, 1275 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1276 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1277 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1278 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1279 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1280 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1281 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 1282 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1283 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1284 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1285 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1286 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 8.33333358e-002, 0., 1287 | 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1288 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1289 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 1290 | 2.15277776e-001, 0., 5.55555560e-002, 0., 0., 0., 1291 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 1292 | 6.94444450e-003, 2.77777780e-002, 3.47222239e-002, 1293 | 5.55555560e-002, 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1294 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1295 | 4.16666679e-002, 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 1296 | 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 6.94444450e-003, 1297 | 5.55555560e-002, 1.11111112e-001, 0., 0., 0., 0., 0., 0., 0., 1298 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 9.72222239e-002, 1299 | 1.18055560e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1300 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1301 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1302 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1303 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1304 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1305 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1306 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1307 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1308 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1309 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1310 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1311 | 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 1312 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1313 | 4.86111119e-002, 1.94444448e-001, 0., 0., 0., 0., 0., 1314 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 1315 | 7.63888881e-002, 1.25000000e-001, 0., 6.94444450e-003, 0., 0., 1316 | 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1.38888890e-002, 1317 | 2.08333340e-002, 6.94444450e-003, 2.08333340e-002, 0., 1318 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1319 | 6.94444450e-003, 0., 1.38888890e-002, 7.63888881e-002, 0., 0., 1320 | 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 1321 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 1322 | 7.63888881e-002, 6.94444478e-002, 6.94444450e-003, 0., 0., 0., 1323 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1324 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1325 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1326 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1327 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1328 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1329 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1330 | 6.94444450e-003, 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 1331 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1332 | 6.94444450e-003, 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 1333 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1334 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1335 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1336 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1337 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1338 | 0., 0., 0., 0., 6.94444450e-003, 1.94444448e-001, 0., 0., 0., 1339 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1340 | 1.38888890e-002, 5.55555560e-002, 1.25000000e-001, 1341 | 9.02777761e-002, 0., 6.94444450e-003, 0., 0., 0., 1342 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 2.08333340e-002, 1343 | 3.47222239e-002, 2.08333340e-002, 6.25000000e-002, 0., 0., 0., 1344 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1345 | 1.38888890e-002, 6.94444450e-003, 4.16666679e-002, 0., 1346 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1347 | 1.11111112e-001, 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 1348 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1349 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1350 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1351 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1352 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1353 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1354 | 0., 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1355 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 0., 0., 1356 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1357 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1358 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1359 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1360 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1361 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1362 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1363 | 0., 0., 0., 6.94444450e-003, 3.47222239e-002, 1.52777776e-001, 1364 | 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1365 | 0., 0., 0., 0., 3.47222239e-002, 7.63888881e-002, 1366 | 1.18055560e-001, 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 1367 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 6.94444450e-003, 1368 | 0., 3.47222239e-002, 6.25000000e-002, 4.86111119e-002, 1369 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1370 | 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 2.77777780e-002, 1371 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1372 | 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 0., 1373 | 8.33333358e-002, 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 1374 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1375 | 2.08333340e-002, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1376 | 0., 0., 0., 1.38888890e-002, 0., 1.38888890e-002, 1377 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1378 | 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1379 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1380 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1381 | 0., 0., 0., 0., 4.16666679e-002, 6.94444450e-003, 0., 0., 1382 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 1383 | 6.94444450e-003, 0., 1.38888890e-002, 1.38888890e-002, 0., 0., 1384 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1385 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1386 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1387 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1388 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1389 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1390 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1391 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1392 | 3.47222239e-002, 9.72222239e-002, 0., 0., 0., 0., 0., 1393 | 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 1394 | 6.94444450e-003, 1.38888890e-002, 4.16666679e-002, 1395 | 7.63888881e-002, 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1396 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 1397 | 2.08333340e-002, 4.86111119e-002, 6.94444478e-002, 1398 | 4.86111119e-002, 2.77777780e-002, 0., 0., 2.08333340e-002, 0., 1399 | 0., 1.38888890e-002, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1400 | 2.08333340e-002, 1.38888890e-002, 6.94444450e-003, 0., 0., 1401 | 6.94444450e-003, 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1402 | 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 6.94444450e-003, 1403 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1404 | 4.16666679e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1405 | 1.38888890e-002, 1.38888890e-002, 0., 6.94444450e-003, 1406 | 2.08333340e-002, 0., 1.38888890e-002, 6.94444450e-003, 1407 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1408 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1409 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1410 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1411 | 6.94444450e-003, 0., 0., 0., 0., 2.77777780e-002, 0., 0., 0., 1412 | 1.38888890e-002, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 1413 | 0., 0., 4.86111119e-002, 0., 6.94444450e-003, 6.94444450e-003, 1414 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1415 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1416 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1417 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1418 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1419 | 1.38888890e-002, 0., 3.47222239e-002, 0., 0., 0., 0., 0., 0., 1420 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1421 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1422 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 4.16666679e-002, 0., 1423 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1424 | 0., 0., 0., 2.08333340e-002, 3.47222239e-002, 2.08333340e-002, 1425 | 0., 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 1426 | 6.94444450e-003, 0., 0., 6.94444450e-003, 1.38888890e-002, 1427 | 2.77777780e-002, 3.47222239e-002, 1.38888896e-001, 1428 | 4.16666679e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 1429 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1430 | 2.77777780e-002, 3.47222239e-002, 0., 0., 1.38888890e-002, 1431 | 6.94444450e-003, 0., 0., 2.77777780e-002, 0., 0., 0., 1432 | 4.86111119e-002, 6.94444450e-003, 2.08333340e-002, 1433 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1434 | 0., 0., 0., 0., 0., 3.47222239e-002, 0., 0., 0., 1435 | 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 0., 1436 | 6.94444450e-003, 6.25000000e-002, 6.94444450e-003, 0., 1437 | 1.38888890e-002, 6.94444450e-003, 6.94444450e-003, 0., 0., 1438 | 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1439 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1440 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 1441 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1442 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1443 | 0., 6.94444450e-003, 0., 4.86111119e-002, 0., 0., 0., 1444 | 6.25000000e-002, 0., 1.38888890e-002, 2.77777780e-002, 0., 0., 1445 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1446 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1447 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1448 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1449 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1450 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1451 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1452 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1453 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 1454 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1455 | 6.94444450e-003, 0., 0., 0., 0., 1.38888890e-002, 1456 | 2.08333340e-002, 0., 0., 2.77777780e-002, 6.94444450e-003, 1457 | 4.16666679e-002, 1.11111112e-001, 2.08333340e-002, 1458 | 1.38888890e-002, 0., 1.38888890e-002, 0., 0., 0., 1459 | 3.47222239e-002, 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1460 | 2.08333340e-002, 2.08333340e-002, 1.38888890e-002, 0., 0., 1461 | 1.38888890e-002, 0., 6.94444450e-003, 6.94444450e-003, 0., 0., 1462 | 0., 0., 2.77777780e-002, 0., 6.25000000e-002, 5.55555560e-002, 1463 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1464 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1465 | 2.77777780e-002, 0., 4.16666679e-002, 2.77777780e-002, 0., 0., 1466 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1467 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1468 | 0., 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1469 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1470 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1471 | 0., 0., 2.08333340e-002, 6.94444450e-003, 0., 0., 1472 | 1.38888890e-002, 0., 2.77777780e-002, 0., 0., 1.38888890e-002, 1473 | 0., 6.94444450e-003, 0., 0., 0., 2.08333340e-002, 0., 0., 0., 1474 | 0., 0., 0., 0., 4.16666679e-002, 0., 6.94444450e-003, 0., 0., 1475 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1476 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1477 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1478 | 6.94444450e-003, 6.94444450e-003, 6.94444450e-003, 0., 1479 | 1.38888890e-002, 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1480 | 0., 0., 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 0., 1481 | 0., 0., 0., 0., 0., 0., 0., 3.47222239e-002, 6.94444450e-003, 1482 | 0., 0., 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 0., 0., 1483 | 0., 0., 0., 0., 0., 1.38888890e-002, 1.38888890e-002, 1484 | 2.08333340e-002, 0., 1.38888890e-002, 0., 0., 0., 1485 | 6.94444450e-003, 0., 6.94444450e-003, 0., 6.94444450e-003, 1486 | 6.94444450e-003, 1.38888890e-002, 1.38888890e-002, 1487 | 1.04166664e-001, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1488 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1489 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1490 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1491 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1492 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1493 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1494 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1495 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1496 | 6.25000000e-002, 0., 6.25000000e-002, 0., 0., 0., 1497 | 1.80555552e-001, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1498 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1499 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1500 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1501 | 6.94444478e-002, 0., 2.15277776e-001, 0., 0., 0., 1502 | 2.43055552e-001, 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 1503 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1504 | 6.94444450e-003, 2.08333340e-002, 0., 2.08333340e-002, 0., 0., 1505 | 0., 5.55555560e-002, 0., 0., 0., 0., 0., 0., 0., 1506 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1507 | 0., 0., 0., 0., 0., 2.77777780e-002, 3.47222239e-002, 1508 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 3.47222239e-002, 1509 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 1510 | 6.94444450e-003, 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 1511 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1512 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1513 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 1514 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1515 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1516 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1517 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1518 | 0., 0., 0., 0., 0., 3.47222239e-002, 0., 2.08333340e-002, 0., 1519 | 0., 0., 3.47222239e-002, 0., 0., 0., 0., 0., 0., 0., 1520 | 2.77777780e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1521 | 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 0., 1522 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1523 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1524 | 3.47222239e-002, 7.63888881e-002, 0., 2.08333340e-002, 0., 0., 1525 | 0., 8.33333358e-002, 0., 0., 0., 0., 0., 0., 0., 1526 | 2.77777780e-002, 6.94444450e-003, 2.08333340e-002, 0., 0., 0., 1527 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1528 | 1.38888890e-002, 1.38888890e-002, 7.63888881e-002, 0., 1529 | 4.86111119e-002, 6.94444450e-003, 0., 0., 2.08333340e-002, 0., 1530 | 0., 0., 0., 0., 0., 0., 1.38888890e-002, 4.16666679e-002, 1531 | 9.02777761e-002, 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 1532 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 1533 | 0., 0., 2.77777780e-002, 0., 2.08333340e-002, 0., 0., 1534 | 6.94444450e-003, 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 1535 | 0., 0., 6.94444450e-003, 3.47222239e-002, 2.08333340e-002, 0., 1536 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.08333340e-002, 1537 | 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 1538 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1539 | 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 1540 | 6.94444450e-003, 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 1541 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1542 | 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 0., 0., 0., 1543 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 1544 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1545 | 0., 0., 0., 0., 0., 0., 0., 7.63888881e-002, 1.38888890e-002, 1546 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1547 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1548 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1549 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1550 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1551 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1552 | 4.16666679e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1553 | 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1554 | 0., 6.94444450e-003, 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1555 | 6.94444450e-003, 2.77777780e-002, 8.33333358e-002, 0., 0., 0., 1556 | 0., 0., 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1557 | 1.38888890e-002, 9.72222239e-002, 1.25000000e-001, 0., 1558 | 6.94444450e-003, 0., 0., 0., 1.38888890e-002, 4.16666679e-002, 1559 | 3.47222239e-002, 0., 0., 2.08333340e-002, 2.77777780e-002, 1560 | 6.94444450e-003, 4.86111119e-002, 2.77777780e-002, 0., 0., 0., 1561 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1562 | 3.47222239e-002, 6.94444450e-003, 0., 6.94444450e-003, 1563 | 6.94444450e-003, 0., 0., 0., 2.77777780e-002, 0., 0., 0., 1564 | 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 6.94444450e-003, 1565 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1566 | 3.47222239e-002, 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1567 | 2.08333340e-002, 0., 0., 0., 3.47222239e-002, 0., 1568 | 6.94444450e-003, 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 1569 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1570 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1571 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1572 | 0., 0., 0., 6.94444450e-003, 0., 0., 0., 8.33333358e-002, 1573 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 1574 | 6.94444478e-002, 0., 0., 0., 5.55555560e-002, 6.94444450e-003, 1575 | 1.38888890e-002, 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 1576 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1577 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1578 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1579 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1580 | 0., 0., 0., 6.94444450e-003, 1.38888890e-002, 0., 0., 0., 0., 1581 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1582 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1583 | 6.94444450e-003, 0., 0., 0., 6.94444450e-003, 6.94444450e-003, 1584 | 0., 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1585 | 1.38888890e-002, 3.47222239e-002, 4.86111119e-002, 0., 1586 | 2.08333340e-002, 6.94444450e-003, 0., 0., 0., 3.47222239e-002, 1587 | 2.77777780e-002, 0., 0., 5.55555560e-002, 1.38888890e-002, 1588 | 2.08333340e-002, 8.33333358e-002, 2.77777780e-002, 1589 | 6.94444450e-003, 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 1590 | 6.94444450e-003, 0., 0., 0., 0., 1.38888890e-002, 0., 0., 0., 1591 | 6.94444478e-002, 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 1592 | 0., 0., 2.08333340e-002, 6.94444450e-003, 0., 0., 1593 | 4.16666679e-002, 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1594 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1595 | 3.47222239e-002, 0., 0., 0., 6.94444450e-003, 0., 1596 | 6.94444450e-003, 0., 1.38888890e-002, 0., 0., 0., 1597 | 5.55555560e-002, 6.94444450e-003, 2.08333340e-002, 1598 | 6.94444450e-003, 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 1599 | 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 1600 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1601 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1602 | 0., 0., 0., 0., 0., 0., 0., 4.16666679e-002, 1.38888890e-002, 1603 | 0., 0., 0., 0., 0., 6.94444450e-003, 5.55555560e-002, 0., 0., 1604 | 0., 8.33333358e-002, 0., 2.77777780e-002, 1.38888890e-002, 0., 1605 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1606 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1607 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1608 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1609 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1610 | 0., 0., 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 1611 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1612 | 0., 6.94444450e-003, 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1613 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 1614 | 5.55555560e-002, 6.94444450e-003, 0., 6.94444450e-003, 0., 0., 1615 | 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 6.94444450e-003, 1616 | 4.86111119e-002, 1.38888890e-002, 4.16666679e-002, 1617 | 8.33333358e-002, 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 1618 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 6.94444450e-003, 1619 | 2.77777780e-002, 0., 0., 0., 0., 0., 0., 0., 1.38888890e-002, 1620 | 6.94444450e-003, 0., 0., 1.11111112e-001, 0., 4.16666679e-002, 1621 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1622 | 0., 0., 6.94444450e-003, 0., 0., 4.86111119e-002, 0., 0., 0., 1623 | 0., 0., 0., 0., 3.47222239e-002, 0., 0., 0., 1.25000000e-001, 1624 | 0., 2.77777780e-002, 6.94444450e-003, 0., 6.94444450e-003, 0., 1625 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1626 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 1627 | 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 1628 | 0., 6.94444450e-003, 0., 0., 0., 3.47222239e-002, 1629 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 1630 | 6.94444478e-002, 0., 0., 0., 1.11111112e-001, 6.94444450e-003, 1631 | 3.47222239e-002, 2.08333340e-002, 0., 0., 0., 0., 0., 0., 0., 1632 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1633 | 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1634 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1635 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1636 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1637 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 1638 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1639 | 0., 6.94444450e-003, 1.38888890e-002, 0., 0., 1.38888890e-002, 1640 | 0., 0., 0., 4.16666679e-002, 0., 0., 0., 2.08333340e-002, 1641 | 2.08333340e-002, 6.94444450e-003, 5.55555560e-002, 1642 | 2.77777780e-002, 4.86111119e-002, 6.94444450e-003, 0., 1643 | 1.38888890e-002, 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 1644 | 0., 0., 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 1645 | 4.16666679e-002, 3.47222239e-002, 0., 6.94444450e-003, 1646 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 1647 | 4.86111119e-002, 0., 0., 0., 4.16666679e-002, 6.94444450e-003, 1648 | 1.38888890e-002, 4.16666679e-002, 6.94444450e-003, 0., 0., 0., 1649 | 0., 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 0., 1650 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 1651 | 1.38888890e-002, 0., 0., 5.55555560e-002, 6.94444450e-003, 1652 | 2.77777780e-002, 2.08333340e-002, 6.94444450e-003, 1653 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 0., 0., 1654 | 0., 0., 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 0., 0., 1655 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1656 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1657 | 0., 0., 0., 0., 0., 1.38888890e-002, 6.94444450e-003, 0., 0., 1658 | 2.77777780e-002, 0., 4.16666679e-002, 2.77777780e-002, 0., 0., 1659 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1660 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1661 | 0., 0., 0., 0., 0., 2.77777780e-002, 0., 0., 0., 0., 0., 0., 1662 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1663 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1664 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1665 | 1.38888890e-002, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1666 | 6.94444450e-003, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1667 | 0., 0., 0., 0., 6.94444450e-003, 0., 0., 0., 0., 1668 | 6.94444450e-003, 6.94444450e-003, 0., 6.94444450e-003, 1669 | 6.94444450e-003, 0., 0., 6.94444450e-003, 0., 6.94444450e-003, 1670 | 0., 2.08333340e-002, 6.94444450e-003, 6.94444450e-003, 1671 | 2.08333340e-002, 1.31944448e-001 ] 1672 | labels: !!opencv-matrix 1673 | rows: 1 1674 | cols: 1 1675 | dt: i 1676 | data: [ 1 ] 1677 | --------------------------------------------------------------------------------