├── .gitignore ├── .gitmodules ├── README.md ├── example ├── README.md ├── libffm-format │ ├── bigdata.te.txt │ ├── bigdata.tr.txt │ └── libffm-example.py └── pandas-format │ └── sklearn-example.py ├── ffm ├── __init__.py ├── ffm-wrapper.cpp ├── ffm-wrapper.h ├── ffm.py ├── pd2ffm.py └── utils.py └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | build/ 3 | .vscode 4 | .vscode-upload.json 5 | dist/ 6 | *.egg-info/ 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libffm"] 2 | path = libffm 3 | url = https://github.com/guestwalk/libffm 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Python wrapper for libffm 2 | 3 | This is a python wrapped for LibFFM library writen in C++, orignal implementation is made by [Yuchin Juan](https://github.com/guestwalk/libffm) and Python Wrapped by [JRCondeNast](https://github.com/JRCondeNast/libffm-python). 4 | 5 | ### Features 6 | 7 | - [√] Scikit-Learn Compatible API 8 | - [√] Early_Stopping Support 9 | - [√] Evaluation Metric Support 10 | - [√] Pandas Data Converter 11 | 12 | ### Installation 13 | 14 | Installing it(Tested in Ubuntu16.04, both Python2 and Python3): 15 | 16 | ``` shell 17 | git clone --recursive https://github.com/keyunluo/python-ffm 18 | python3 setup.py install 19 | ``` 20 | ### Usage 21 | 22 | ``` python 23 | 24 | import ffm 25 | 26 | # prepare the data 27 | # (field, index, value) format 28 | 29 | X = [[(1, 2, 1), (2, 3, 1), (3, 5, 1)], 30 | [(1, 0, 1), (2, 3, 1), (3, 7, 1)], 31 | [(1, 1, 1), (2, 3, 1), (3, 7, 1), (3, 9, 1)], 32 | [(1, 0, 1), (2, 3, 1), (3, 5, 1)], ] 33 | 34 | y = [1, 1, 0, 1] 35 | 36 | ffm_data = ffm.FFMData(X, y) 37 | ffm_data_test = ffm.FFMData(X,y) 38 | 39 | # train the model for 10 iterations 40 | model = ffm.FFM(eta=0.1, lam=0.0001, k=4) 41 | model.fit(ffm_data,num_iter=10, val_data=ffm_data_test, metric='auc', early_stopping=6, maximum=True) 42 | 43 | # pred proba 44 | print(model.predict_proba(ffm_data_test)) 45 | 46 | # save the model 47 | model.save_model('ololo.bin') 48 | 49 | # load it to reuse the model 50 | model = ffm.read_model('ololo.bin') 51 | 52 | # pred label 53 | print(model.predict(ffm_data_test)) 54 | ``` 55 | 56 | ### Warning 57 | 58 | **The package may cause elf library error for some versions of python , please delete the *libffm.py* file in the installation directory.** 59 | 60 | ### Info 61 | 62 | This is just a toy, it is recommented to use [xLearn](https://github.com/aksnzhy/xlearn) for better performance. 63 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | ## Examples 2 | 3 | Warning: Do not run in current dir, this may cause import error!! -------------------------------------------------------------------------------- /example/libffm-format/bigdata.te.txt: -------------------------------------------------------------------------------- 1 | 0 1:7759:0.3651 2:7921:0.3651 3:8661:0.3651 4:9619:0.3651 5:2757:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4961:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:8323:0.22361 17:2434:0.44721 16:7755:0.44721 16:2974:0.22361 2 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:6283:0.3651 8:9436:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 3 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:2646:0.3651 6:185:0.3651 7:5998:0.3651 8:5716:0.3651 9:4861:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 4 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5947:0.3651 6:185:0.3651 7:8937:0.3651 8:7183:0.3651 9:5616:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 5 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:114:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 6 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:642:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 7 | 1 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:9269:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:7141:0.3651 14:4147:0.3651 15:1112:0.3651 17:7026:0.50000 16:1418:0.50000 8 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:6858:0.3651 17:2434:0.50000 16:7755:0.50000 9 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9428:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:7229:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 10 | 0 1:7952:0.3651 2:2392:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:5998:0.3651 8:5716:0.3651 9:3899:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7571:0.50000 16:7433:0.50000 11 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2332:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 12 | 0 1:1007:0.3651 2:7455:0.3651 3:7086:0.3651 4:2183:0.3651 5:2800:0.3651 6:185:0.3651 7:8834:0.3651 8:1209:0.3651 9:9364:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5984:0.50000 16:7671:0.50000 13 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1176:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 14 | 0 1:8741:0.3651 2:5145:0.3651 3:8672:0.3651 4:2183:0.3651 5:5661:0.3651 6:5918:0.3651 7:4843:0.3651 8:26:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:422:0.3651 13:2738:0.3651 14:2935:0.3651 15:5007:0.3651 17:5398:0.11785 17:2434:0.47140 17:3909:0.11785 16:8255:0.11785 16:7755:0.47140 16:740:0.11785 15 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8153:0.3651 6:185:0.3651 7:611:0.3651 8:5166:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:208:0.3651 13:2738:0.3651 14:8813:0.3651 15:4540:0.3651 17:9916:0.03835 17:3723:0.49853 16:9406:0.03835 16:928:0.49853 16 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3780:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 17 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1288:0.3651 6:185:0.3651 7:4422:0.3651 8:4915:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 18 | 1 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:9269:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:7141:0.3651 14:4147:0.3651 15:1112:0.3651 17:7026:0.50000 16:1418:0.50000 19 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 20 | 0 1:449:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:9300:0.3651 6:185:0.3651 7:9887:0.3651 8:5339:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:8226:0.50000 21 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1441:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 22 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7064:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 23 | 0 1:2673:0.3651 2:8409:0.3651 3:9952:0.3651 4:2183:0.3651 5:4584:0.3651 6:185:0.3651 7:8979:0.3651 8:6178:0.3651 9:6633:0.3651 10:3216:0.3651 11:1520:0.3651 12:1825:0.3651 13:2738:0.3651 14:2935:0.3651 15:1213:0.3651 24 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:416:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 25 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9660:0.3651 6:185:0.3651 7:8937:0.3651 8:7183:0.3651 9:7229:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 26 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5642:0.3651 13:2738:0.3651 14:2935:0.3651 15:9933:0.3651 17:5398:0.06465 17:9083:0.00718 17:8169:0.00718 17:8047:0.00718 17:2434:0.49565 16:872:0.00720 16:4991:0.00720 16:8255:0.05756 16:7755:0.49647 16:1826:0.00720 16:6751:0.00720 27 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7222:0.3651 13:2738:0.3651 14:8813:0.3651 15:6858:0.3651 17:2434:0.50000 16:7755:0.50000 28 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 29 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7318:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:3971:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 30 | 0 1:449:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:8734:0.3651 6:185:0.3651 7:9623:0.3651 8:5339:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:8226:0.50000 31 | 0 1:5792:0.3651 2:276:0.3651 3:9952:0.3651 4:9619:0.3651 5:1473:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8844:0.50000 16:338:0.50000 32 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5947:0.3651 6:185:0.3651 7:8937:0.3651 8:7183:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 33 | 1 1:9945:0.3651 2:3412:0.3651 3:6764:0.3651 4:9619:0.3651 5:9255:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:9011:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:474:0.50000 16:8910:0.50000 34 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8706:0.3651 6:185:0.3651 7:7098:0.3651 8:5166:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:1943:0.3651 13:2738:0.3651 14:2935:0.3651 15:8716:0.3651 17:9916:0.02936 17:3723:0.49914 16:9406:0.02936 16:928:0.49914 35 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9366:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 36 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:7781:0.3651 6:185:0.3651 7:146:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 37 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1014:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:3723:0.50000 16:1568:0.50000 38 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9660:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 39 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 40 | 0 1:7952:0.3651 2:2392:0.3651 3:9952:0.3651 4:9619:0.3651 5:3169:0.3651 6:185:0.3651 7:5705:0.3651 8:5716:0.3651 9:3899:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7571:0.50000 16:7433:0.50000 41 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:1569:0.3651 8:6236:0.3651 9:3483:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 42 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 43 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3169:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:2822:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 44 | 0 1:3038:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:3890:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:3151:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:6944:0.50000 45 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8706:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 46 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:962:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:2434:0.44721 17:5004:0.22361 16:7755:0.44721 16:319:0.22361 47 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9948:0.3651 6:5918:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4490:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 48 | 0 1:1923:0.3651 2:4140:0.3651 3:1243:0.3651 4:9619:0.3651 5:3169:0.3651 6:185:0.3651 7:3699:0.3651 8:8598:0.3651 9:3899:0.3651 10:953:0.3651 11:1520:0.3651 12:1742:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:1967:0.28868 17:7571:0.28868 17:8028:0.28868 16:6022:0.28868 16:7433:0.28868 16:377:0.28868 49 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5947:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 50 | 0 1:8319:0.3651 2:8558:0.3651 3:9952:0.3651 4:9619:0.3651 5:9235:0.3651 6:185:0.3651 7:3510:0.3651 8:3030:0.3651 9:3899:0.3651 10:953:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8279:0.50000 16:1064:0.50000 51 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:725:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 52 | 0 1:393:0.3651 2:6291:0.3651 3:9952:0.3651 4:9619:0.3651 5:1501:0.3651 6:185:0.3651 7:9109:0.3651 8:2233:0.3651 9:2032:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3824:0.50000 16:1132:0.50000 53 | 0 1:8319:0.3651 2:8558:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:9109:0.3651 8:2233:0.3651 9:2032:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8279:0.50000 16:1064:0.50000 54 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:224:0.3651 6:185:0.3651 7:6061:0.3651 8:593:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:5338:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 55 | 0 1:2211:0.3651 2:5835:0.3651 3:9952:0.3651 4:2183:0.3651 5:9664:0.3651 6:185:0.3651 7:7785:0.3651 8:8045:0.3651 9:9893:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:1379:0.50000 16:2402:0.50000 56 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5046:0.3651 6:185:0.3651 7:4422:0.3651 8:4915:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 57 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1392:0.3651 6:5918:0.3651 7:9586:0.3651 8:9436:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 58 | 0 1:8429:0.3651 2:8844:0.3651 3:9474:0.3651 4:2183:0.3651 5:3035:0.3651 6:185:0.3651 7:532:0.3651 8:8598:0.3651 9:3899:0.3651 10:953:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:3344:0.50000 16:7984:0.50000 59 | 0 1:6046:0.3651 2:298:0.3651 3:9474:0.3651 4:2183:0.3651 5:3795:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:6629:0.50000 16:8811:0.50000 60 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6168:0.3651 6:185:0.3651 7:4671:0.3651 8:932:0.3651 9:5995:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 61 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:353:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 62 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8222:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:6229:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 63 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8369:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:6435:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 64 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1902:0.3651 6:185:0.3651 7:2959:0.3651 8:9436:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 65 | 0 1:355:0.3651 2:6547:0.3651 3:9952:0.3651 4:9619:0.3651 5:6394:0.3651 6:185:0.3651 7:2548:0.3651 8:7352:0.3651 9:3483:0.3651 10:6908:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:8169:0.35355 17:8844:0.35355 16:338:0.35355 16:6751:0.35355 66 | 0 1:393:0.3651 2:6291:0.3651 3:9952:0.3651 4:9619:0.3651 5:7315:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3824:0.50000 16:1132:0.50000 67 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 68 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5613:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:4806:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 69 | 0 1:1245:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:8660:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:1265:0.3651 14:4591:0.3651 15:5783:0.3651 70 | 0 1:1695:0.3651 2:1924:0.3651 3:9474:0.3651 4:2183:0.3651 5:3035:0.3651 6:185:0.3651 7:3472:0.3651 8:2108:0.3651 9:4487:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:2921:0.50000 16:849:0.50000 71 | 1 1:2121:0.3651 2:2179:0.3651 3:1243:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:3503:0.3651 8:2432:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4277:0.50000 16:3014:0.50000 72 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6999:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 73 | 0 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:9269:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:7141:0.3651 14:4147:0.3651 15:1112:0.3651 17:7026:0.50000 16:1418:0.50000 74 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:405:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:4249:0.35355 17:2434:0.35355 16:7755:0.35355 16:930:0.35355 75 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9395:0.3651 13:2738:0.3651 14:2935:0.3651 15:7279:0.3651 17:5398:0.14482 17:9083:0.00852 17:8047:0.03407 17:2434:0.47705 17:557:0.00852 17:400:0.00852 17:8574:0.00852 16:4991:0.00856 16:8016:0.00856 16:872:0.00856 16:2754:0.00856 16:8255:0.13694 16:7755:0.47928 16:1826:0.03423 16:6848:0.00856 76 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:3058:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 77 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1392:0.3651 6:5918:0.3651 7:4671:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 78 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1182:0.3651 6:185:0.3651 7:8937:0.3651 8:7183:0.3651 9:5616:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 79 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6394:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 80 | 0 1:9551:0.3651 2:610:0.3651 3:9952:0.3651 4:9619:0.3651 5:8029:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:7042:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8926:0.50000 16:4511:0.50000 81 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1659:0.3651 13:2738:0.3651 14:2935:0.3651 15:8506:0.3651 82 | 0 1:8819:0.3651 2:7097:0.3651 3:1243:0.3651 4:9619:0.3651 5:5350:0.3651 6:185:0.3651 7:7547:0.3651 8:4515:0.3651 9:7873:0.3651 10:4465:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:1189:0.35355 17:1915:0.35355 16:6536:0.35355 16:7232:0.35355 83 | 0 1:355:0.3651 2:6547:0.3651 3:9952:0.3651 4:9619:0.3651 5:2498:0.3651 6:185:0.3651 7:5998:0.3651 8:5716:0.3651 9:3899:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8169:0.50000 16:6751:0.50000 84 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:2867:0.22361 17:2434:0.44721 16:1725:0.22361 16:7755:0.44721 85 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:1584:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:5483:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 86 | 0 1:2370:0.3651 2:599:0.3651 3:9474:0.3651 4:2183:0.3651 5:6580:0.3651 6:185:0.3651 7:4187:0.3651 8:7739:0.3651 9:3483:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:4239:0.50000 16:7527:0.50000 87 | 0 1:5075:0.3651 2:8451:0.3651 3:9952:0.3651 4:2183:0.3651 5:9799:0.3651 6:5918:0.3651 7:9956:0.3651 8:1579:0.3651 9:9364:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:4593:0.50000 88 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5709:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 89 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:4909:0.3651 6:185:0.3651 7:531:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 90 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5046:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 91 | 0 1:8117:0.3651 2:3798:0.3651 3:9952:0.3651 4:2183:0.3651 5:3688:0.3651 6:185:0.3651 7:2957:0.3651 8:6787:0.3651 9:6056:0.3651 10:3339:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6169:0.50000 16:5069:0.50000 92 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:3310:0.3651 6:185:0.3651 7:4671:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 93 | 1 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:5788:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 94 | 1 1:6076:0.3651 2:1921:0.3651 3:8672:0.3651 4:2183:0.3651 5:1102:0.3651 6:185:0.3651 7:7785:0.3651 8:8045:0.3651 9:9867:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2004:0.50000 16:2803:0.50000 95 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:2565:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 96 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6963:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 97 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8153:0.3651 6:185:0.3651 7:611:0.3651 8:5166:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:208:0.3651 13:2738:0.3651 14:8813:0.3651 15:4540:0.3651 17:9916:0.03835 17:3723:0.49853 16:9406:0.03835 16:928:0.49853 98 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1501:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:5727:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 99 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:4089:0.3651 6:185:0.3651 7:611:0.3651 8:5166:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 100 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1501:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:2328:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 101 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:3707:0.3651 13:2738:0.3651 14:2935:0.3651 15:5007:0.3651 17:5398:0.26726 17:8047:0.13363 17:2434:0.40089 16:8255:0.26726 16:7755:0.40089 16:1826:0.13363 102 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9660:0.3651 6:185:0.3651 7:6283:0.3651 8:9436:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 103 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2654:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 104 | 0 1:292:0.3651 2:5901:0.3651 3:1243:0.3651 4:9619:0.3651 5:8222:0.3651 6:185:0.3651 7:2830:0.3651 8:6267:0.3651 9:381:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8616:0.50000 16:1762:0.50000 105 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7222:0.3651 13:2738:0.3651 14:8813:0.3651 15:6858:0.3651 17:2434:0.50000 16:7755:0.50000 106 | 0 1:7347:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:5073:0.3651 6:185:0.3651 7:8067:0.3651 8:2108:0.3651 9:3483:0.3651 10:7408:0.3651 11:1520:0.3651 12:405:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:851:0.50000 107 | 0 1:9551:0.3651 2:610:0.3651 3:9952:0.3651 4:9619:0.3651 5:7394:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8926:0.50000 16:4511:0.50000 108 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1902:0.3651 6:185:0.3651 7:531:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 109 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:7230:0.3651 8:653:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 110 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2646:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:405:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 111 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:3780:0.3651 6:185:0.3651 7:4603:0.3651 8:4331:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 112 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2594:0.3651 6:185:0.3651 7:339:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 113 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:1014:0.3651 6:185:0.3651 7:4671:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 114 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9015:0.3651 6:185:0.3651 7:2907:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 115 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5306:0.3651 6:185:0.3651 7:531:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 116 | 0 1:5722:0.3651 2:1246:0.3651 3:9474:0.3651 4:2183:0.3651 5:5229:0.3651 6:185:0.3651 7:7384:0.3651 8:5489:0.3651 9:3483:0.3651 10:6790:0.3651 11:1520:0.3651 12:1232:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:1708:0.50000 16:5249:0.50000 117 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:766:0.3651 13:2738:0.3651 14:2935:0.3651 15:717:0.3651 17:5398:0.06919 17:557:0.00865 17:8047:0.04325 17:2434:0.49299 17:5004:0.00865 17:8549:0.00865 17:3723:0.00865 16:319:0.00868 16:928:0.00868 16:8255:0.06074 16:4991:0.00868 16:7755:0.49462 16:59:0.00868 16:8016:0.00868 16:9926:0.00868 16:1826:0.03471 118 | 0 1:580:0.3651 2:7022:0.3651 3:1243:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:9109:0.3651 8:2233:0.3651 9:3483:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6987:0.50000 16:7219:0.50000 119 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2646:0.3651 6:185:0.3651 7:9623:0.3651 8:5339:0.3651 9:475:0.3651 10:5620:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:9083:0.50000 16:872:0.50000 120 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4490:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:557:0.22361 17:2434:0.44721 16:7755:0.44721 16:8016:0.22361 121 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:5384:0.3651 8:593:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 122 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:1288:0.3651 6:185:0.3651 7:7785:0.3651 8:8045:0.3651 9:9364:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 123 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:4365:0.3651 6:185:0.3651 7:2907:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 124 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 125 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:5613:0.3651 6:185:0.3651 7:6206:0.3651 8:5777:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 126 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2694:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:582:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:5398:0.35355 17:2434:0.35355 16:8255:0.35355 16:7755:0.35355 127 | 0 1:1245:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:8660:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:1265:0.3651 14:4591:0.3651 15:5783:0.3651 128 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2646:0.3651 6:185:0.3651 7:9623:0.3651 8:5339:0.3651 9:475:0.3651 10:5620:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:9083:0.50000 16:872:0.50000 129 | 0 1:2673:0.3651 2:8409:0.3651 3:9952:0.3651 4:2183:0.3651 5:1194:0.3651 6:185:0.3651 7:1555:0.3651 8:8045:0.3651 9:9364:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4275:0.50000 16:3888:0.50000 130 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:512:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:3723:0.50000 16:928:0.50000 131 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3561:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 132 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9311:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:267:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 133 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2300:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 134 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5892:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 135 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 136 | 1 1:205:0.3651 2:9171:0.3651 3:9952:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8581:0.50000 16:5877:0.50000 137 | 0 1:1914:0.3651 2:6058:0.3651 3:1243:0.3651 4:2183:0.3651 5:5649:0.3651 6:185:0.3651 7:532:0.3651 8:8598:0.3651 9:3899:0.3651 10:953:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9094:0.50000 16:4115:0.50000 138 | 0 1:7966:0.3651 2:174:0.3651 3:2062:0.3651 4:2183:0.3651 5:8782:0.3651 6:185:0.3651 7:9778:0.3651 8:2860:0.3651 9:9364:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8733:0.50000 16:4788:0.50000 139 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5383:0.3651 6:185:0.3651 7:4422:0.3651 8:4915:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:3033:0.3651 13:2738:0.3651 14:8813:0.3651 15:5344:0.3651 17:3723:0.50000 16:928:0.50000 140 | 0 1:5473:0.3651 2:1490:0.3651 3:9474:0.3651 4:2183:0.3651 5:166:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:4361:0.50000 16:7937:0.50000 141 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2594:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 142 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:3951:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 143 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8222:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:6229:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:5398:0.35355 17:2434:0.35355 16:8255:0.35355 16:7755:0.35355 144 | 1 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:9269:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:7141:0.3651 14:4147:0.3651 15:1112:0.3651 17:7026:0.50000 16:1418:0.50000 145 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6795:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 146 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:4671:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 147 | 1 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5197:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 148 | 1 1:7933:0.3651 2:4174:0.3651 3:9952:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9916:0.50000 16:9406:0.50000 149 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4961:0.3651 13:2738:0.3651 14:2935:0.3651 15:1053:0.3651 17:5398:0.18834 17:3723:0.00856 17:9916:0.00856 17:2434:0.46230 17:9163:0.00856 17:8323:0.00856 17:7571:0.00856 17:6346:0.00856 17:894:0.00856 17:2641:0.01712 16:5318:0.00856 16:2974:0.00856 16:9716:0.00856 16:58:0.00856 16:7433:0.00856 16:928:0.00856 16:8255:0.18840 16:7755:0.46243 16:9406:0.00856 16:9357:0.00856 16:8846:0.00856 150 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:4923:0.3651 6:185:0.3651 7:3577:0.3651 8:6178:0.3651 9:5820:0.3651 10:3216:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 151 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8944:0.3651 6:5918:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8397:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 152 | 0 1:1379:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:138:0.3651 6:185:0.3651 7:1878:0.3651 8:5872:0.3651 9:4532:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:9111:0.50000 153 | 0 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:3077:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:6160:0.3651 10:5620:0.3651 11:1520:0.3651 12:6592:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:5398:0.50000 16:8255:0.50000 154 | 0 1:5367:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8804:0.3651 6:185:0.3651 7:235:0.3651 8:7581:0.3651 9:6633:0.3651 10:3339:0.3651 11:1520:0.3651 12:3201:0.3651 13:2738:0.3651 14:8813:0.3651 15:9161:0.3651 17:6573:0.01908 17:513:0.01908 17:9916:0.03815 17:7871:0.01908 17:4275:0.01908 17:4342:0.01908 17:663:0.01908 17:9990:0.01908 17:3723:0.49598 16:1334:0.02134 16:3586:0.02134 16:3352:0.02134 16:1021:0.06402 16:9286:0.49081 16:2894:0.02134 16:4335:0.02134 16:2035:0.02134 16:9406:0.04268 16:3888:0.02134 155 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8222:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 156 | 1 1:9716:0.3651 2:1125:0.3651 3:9474:0.3651 4:2183:0.3651 5:1145:0.3651 6:185:0.3651 7:6576:0.3651 8:2108:0.3651 9:3899:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7135:0.50000 16:7062:0.50000 157 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:3580:0.3651 6:185:0.3651 7:6061:0.3651 8:593:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 158 | 0 1:7933:0.3651 2:4174:0.3651 3:9952:0.3651 4:2183:0.3651 5:7460:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:9916:0.50000 16:9406:0.50000 159 | 0 1:7966:0.3651 2:174:0.3651 3:2062:0.3651 4:2183:0.3651 5:9664:0.3651 6:185:0.3651 7:3781:0.3651 8:2860:0.3651 9:9893:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8733:0.50000 16:4788:0.50000 160 | 0 1:5064:0.3651 2:3225:0.3651 3:9474:0.3651 4:2183:0.3651 5:3890:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:4142:0.50000 16:4662:0.50000 161 | 1 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:9887:0.3651 8:5339:0.3651 9:2529:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 162 | 0 1:7933:0.3651 2:4174:0.3651 3:9952:0.3651 4:2183:0.3651 5:3340:0.3651 6:5918:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9916:0.50000 16:9406:0.50000 163 | 1 1:7989:0.3651 2:7808:0.3651 3:9952:0.3651 4:9619:0.3651 5:1765:0.3651 6:185:0.3651 7:532:0.3651 8:8598:0.3651 9:4487:0.3651 10:953:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2595:0.50000 16:9450:0.50000 164 | 0 1:4965:0.3651 2:4091:0.3651 3:8672:0.3651 4:2183:0.3651 5:1857:0.3651 6:5918:0.3651 7:3765:0.3651 8:5872:0.3651 9:9269:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5395:0.50000 16:1224:0.50000 165 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:3517:0.3651 13:2738:0.3651 14:2935:0.3651 15:6858:0.3651 17:3723:0.50000 16:928:0.50000 166 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3456:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 167 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 168 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5841:0.3651 6:185:0.3651 7:2907:0.3651 8:932:0.3651 9:5995:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 169 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:3169:0.3651 6:185:0.3651 7:5998:0.3651 8:5716:0.3651 9:4861:0.3651 10:7408:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 170 | 0 1:4563:0.3651 2:7420:0.3651 3:1243:0.3651 4:9619:0.3651 5:3169:0.3651 6:185:0.3651 7:6206:0.3651 8:5777:0.3651 9:4861:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8028:0.50000 16:6022:0.50000 171 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:8734:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 172 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9385:0.3651 6:185:0.3651 7:8128:0.3651 8:7573:0.3651 9:1489:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 173 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6795:0.3651 6:185:0.3651 7:531:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:512:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:3723:0.50000 16:928:0.50000 174 | 1 1:449:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2332:0.3651 6:185:0.3651 7:7640:0.3651 8:691:0.3651 9:3483:0.3651 10:4465:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:8226:0.50000 175 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2594:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:3899:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 176 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:4215:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:5338:0.3651 13:2738:0.3651 14:2935:0.3651 15:2757:0.3651 17:3723:0.50000 16:928:0.50000 177 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 178 | 0 1:7933:0.3651 2:4174:0.3651 3:9952:0.3651 4:2183:0.3651 5:3417:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:334:0.3651 10:4465:0.3651 11:1520:0.3651 12:1089:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9916:0.50000 16:9406:0.50000 179 | 0 1:7966:0.3651 2:174:0.3651 3:2062:0.3651 4:2183:0.3651 5:3570:0.3651 6:185:0.3651 7:6441:0.3651 8:2860:0.3651 9:9867:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8733:0.50000 16:4788:0.50000 180 | 0 1:6076:0.3651 2:1921:0.3651 3:8672:0.3651 4:2183:0.3651 5:3884:0.3651 6:185:0.3651 7:1555:0.3651 8:8045:0.3651 9:9893:0.3651 10:4465:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2004:0.50000 16:2803:0.50000 181 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5947:0.3651 6:185:0.3651 7:2907:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 182 | 0 1:7347:0.3651 2:6835:0.3651 3:9474:0.3651 4:2183:0.3651 5:9355:0.3651 6:185:0.3651 7:3472:0.3651 8:2108:0.3651 9:2032:0.3651 10:7408:0.3651 11:1520:0.3651 12:9100:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7463:0.50000 16:851:0.50000 183 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7805:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5727:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 184 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 185 | 0 1:7347:0.3651 2:3395:0.3651 3:9474:0.3651 4:2183:0.3651 5:3419:0.3651 6:185:0.3651 7:5092:0.3651 8:2108:0.3651 9:2032:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:851:0.50000 186 | 0 1:4631:0.3651 2:6987:0.3651 3:1243:0.3651 4:2183:0.3651 5:3688:0.3651 6:185:0.3651 7:3503:0.3651 8:2432:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:1821:0.50000 16:6900:0.50000 187 | 0 1:2211:0.3651 2:5835:0.3651 3:9952:0.3651 4:2183:0.3651 5:673:0.3651 6:185:0.3651 7:8101:0.3651 8:8045:0.3651 9:9867:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:1379:0.50000 16:2402:0.50000 188 | 0 1:3836:0.3651 2:6136:0.3651 3:8672:0.3651 4:2183:0.3651 5:8171:0.3651 6:185:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3804:0.50000 16:1146:0.50000 189 | 0 1:4971:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9660:0.3651 6:185:0.3651 7:182:0.3651 8:932:0.3651 9:5616:0.3651 10:7685:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:1568:0.50000 190 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2925:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 191 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 192 | 0 1:7933:0.3651 2:4174:0.3651 3:9952:0.3651 4:2183:0.3651 5:7460:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:9916:0.50000 16:9406:0.50000 193 | 0 1:1245:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4922:0.3651 6:185:0.3651 7:8359:0.3651 8:4940:0.3651 9:8660:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:1265:0.3651 14:4591:0.3651 15:5783:0.3651 194 | 0 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:488:0.3651 6:185:0.3651 7:7230:0.3651 8:653:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 195 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 196 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:7705:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:1089:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:3596:0.35355 17:2434:0.35355 16:7755:0.35355 16:7518:0.35355 197 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:4599:0.3651 8:3315:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 198 | 1 1:9295:0.3651 2:7650:0.3651 3:9474:0.3651 4:2183:0.3651 5:6004:0.3651 6:185:0.3651 7:6576:0.3651 8:2108:0.3651 9:2032:0.3651 10:7408:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:9844:0.50000 16:6574:0.50000 199 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:4603:0.3651 8:4331:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:8072:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:9083:0.50000 16:872:0.50000 200 | 0 1:8858:0.3651 2:6709:0.3651 3:9952:0.3651 4:2183:0.3651 5:9660:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1175:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:195:0.50000 16:3274:0.50000 201 | -------------------------------------------------------------------------------- /example/libffm-format/bigdata.tr.txt: -------------------------------------------------------------------------------- 1 | 1 0:0:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2332:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 2 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:2847:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 3 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:7873:0.3651 10:5989:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 4 | 1 1:7593:0.3651 2:9126:0.3651 3:9952:0.3651 4:2183:0.3651 5:5525:0.3651 6:5918:0.3651 7:1969:0.3651 8:3240:0.3651 9:3899:0.3651 10:3387:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8692:0.50000 16:1861:0.50000 5 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3780:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:2565:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 6 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:114:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6123:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 7 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:9235:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:3031:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 8 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5947:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 9 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:5398:0.28868 17:2434:0.28868 17:3723:0.28868 16:8255:0.28868 16:7755:0.28868 16:928:0.28868 10 | 0 1:2138:0.3651 2:4404:0.3651 3:8672:0.3651 4:2183:0.3651 5:6545:0.3651 6:185:0.3651 7:7547:0.3651 8:4515:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:3033:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6573:0.50000 16:3586:0.50000 11 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:642:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:3252:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:9083:0.35355 17:2434:0.35355 16:7755:0.35355 16:872:0.35355 12 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2947:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8144:0.3651 13:2738:0.3651 14:8813:0.3651 15:1929:0.3651 17:2434:0.50000 16:7755:0.50000 13 | 0 1:393:0.3651 2:6291:0.3651 3:9952:0.3651 4:9619:0.3651 5:5029:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3824:0.50000 16:1132:0.50000 14 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8369:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:7064:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 15 | 0 1:8200:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:5596:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4797:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:8007:0.50000 16 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 17 | 0 1:7759:0.3651 2:7921:0.3651 3:8661:0.3651 4:9619:0.3651 5:6795:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8323:0.50000 16:2974:0.50000 18 | 0 1:7981:0.3651 2:3802:0.3651 3:9952:0.3651 4:2183:0.3651 5:7440:0.3651 6:185:0.3651 7:7785:0.3651 8:8045:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2130:0.50000 16:999:0.50000 19 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1734:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 20 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:267:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 21 | 0 1:1707:0.3651 2:50:0.3651 3:7396:0.3651 4:9619:0.3651 5:2738:0.3651 6:5918:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2288:0.35355 17:287:0.35355 16:7369:0.35355 16:5567:0.35355 22 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:663:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8611:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 23 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:1290:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:7148:0.50000 16:1828:0.50000 24 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1820:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:4055:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 25 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 26 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:3688:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 27 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3561:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 28 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5620:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 29 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:416:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 30 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:6394:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 31 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7599:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:6820:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 32 | 0 1:7879:0.3651 2:8110:0.3651 3:9952:0.3651 4:9619:0.3651 5:6394:0.3651 6:185:0.3651 7:146:0.3651 8:5805:0.3651 9:4487:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5225:0.50000 16:675:0.50000 33 | 0 1:7458:0.3651 2:1987:0.3651 3:1243:0.3651 4:9619:0.3651 5:7781:0.3651 6:185:0.3651 7:146:0.3651 8:5805:0.3651 9:3899:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4729:0.50000 16:1246:0.50000 34 | 0 1:3712:0.3651 2:896:0.3651 3:9952:0.3651 4:2183:0.3651 5:1501:0.3651 6:185:0.3651 7:9109:0.3651 8:2233:0.3651 9:2032:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4380:0.50000 16:1867:0.50000 35 | 0 1:8862:0.3651 2:3807:0.3651 3:3785:0.3651 4:2183:0.3651 5:6963:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7732:0.50000 16:986:0.50000 36 | 0 1:3136:0.3651 2:7449:0.3651 3:1243:0.3651 4:9619:0.3651 5:2738:0.3651 6:5918:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8736:0.50000 16:1977:0.50000 37 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9971:0.3651 13:2738:0.3651 14:2935:0.3651 15:9292:0.3651 17:5398:0.11396 17:9083:0.02849 17:9916:0.02849 17:8047:0.02849 17:2434:0.48433 16:8255:0.11396 16:7755:0.48433 16:9406:0.02849 16:8226:0.02849 16:1826:0.02849 38 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:1501:0.3651 6:185:0.3651 7:8893:0.3651 8:4421:0.3651 9:3899:0.3651 10:7582:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 39 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5390:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4961:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 40 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 41 | 0 1:1332:0.3651 2:4059:0.3651 3:9952:0.3651 4:2183:0.3651 5:1014:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9338:0.50000 16:100:0.50000 42 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1947:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 43 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 44 | 0 1:2146:0.3651 2:4357:0.3651 3:9952:0.3651 4:9619:0.3651 5:9416:0.3651 6:185:0.3651 7:3076:0.3651 8:260:0.3651 9:4522:0.3651 10:953:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:663:0.50000 16:2035:0.50000 45 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2646:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 46 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:2654:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:5483:0.3651 10:5620:0.3651 11:1520:0.3651 12:2052:0.3651 13:2738:0.3651 14:2935:0.3651 15:6858:0.3651 17:9083:0.40825 17:9036:0.20412 17:2434:0.20412 16:7755:0.25000 16:9111:0.25000 16:7097:0.25000 16:872:0.25000 47 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1734:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 48 | 0 1:3641:0.3651 2:5431:0.3651 3:9952:0.3651 4:2183:0.3651 5:3688:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:5531:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7388:0.50000 16:8185:0.50000 49 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1175:0.3651 13:2738:0.3651 14:2935:0.3651 15:1468:0.3651 17:9083:0.03835 17:2434:0.49853 16:7755:0.49853 16:8226:0.03835 50 | 0 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:6160:0.3651 10:5620:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 51 | 0 1:399:0.3651 2:2157:0.3651 3:9952:0.3651 4:9619:0.3651 5:9745:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:513:0.50000 16:1334:0.50000 52 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:9591:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:1089:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 53 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7805:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6298:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 54 | 1 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:8118:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 55 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:7148:0.50000 16:1828:0.50000 56 | 0 1:6381:0.3651 2:3648:0.3651 3:9952:0.3651 4:2183:0.3651 5:4923:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:2751:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6323:0.50000 16:6611:0.50000 57 | 0 1:4506:0.3651 2:441:0.3651 3:660:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6180:0.50000 16:8742:0.50000 58 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:8118:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 59 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:8813:0.3651 15:6858:0.3651 17:7148:0.50000 16:1828:0.50000 60 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:6795:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 61 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6832:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 62 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:512:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 63 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:2569:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 64 | 0 1:9616:0.3651 2:4389:0.3651 3:9952:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:457:0.50000 16:3204:0.50000 65 | 0 1:9616:0.3651 2:4389:0.3651 3:9952:0.3651 4:2183:0.3651 5:5306:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:457:0.50000 16:3204:0.50000 66 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:421:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 67 | 1 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:3077:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 68 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 69 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6746:0.3651 13:2738:0.3651 14:8813:0.3651 15:8864:0.3651 17:5398:0.04730 17:2288:0.00788 17:9916:0.02365 17:8047:0.01577 17:2434:0.49669 17:7388:0.00788 17:3824:0.00788 17:2641:0.00788 16:6996:0.00788 16:7369:0.00788 16:1132:0.00788 16:8255:0.04730 16:7755:0.49669 16:9406:0.02365 16:1826:0.01577 16:8846:0.00788 70 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4490:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 71 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:888:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:7148:0.50000 16:1828:0.50000 72 | 0 1:6669:0.3651 2:6533:0.3651 3:7086:0.3651 4:2183:0.3651 5:6629:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:894:0.50000 16:9716:0.50000 73 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:6963:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 74 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1742:0.3651 13:2738:0.3651 14:2935:0.3651 15:8973:0.3651 17:5800:0.09449 17:9792:0.09449 17:2434:0.47246 17:3723:0.09449 16:7755:0.47246 16:9568:0.09449 16:928:0.09449 16:7400:0.09449 75 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 76 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6123:0.3651 13:2738:0.3651 14:2935:0.3651 15:3607:0.3651 17:5398:0.07836 17:8549:0.00784 17:8047:0.00784 17:2434:0.49370 16:8255:0.07836 16:7755:0.49370 16:9926:0.00784 16:1826:0.00784 77 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:9311:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:4487:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 78 | 0 1:2426:0.3651 2:5064:0.3651 3:9474:0.3651 4:2183:0.3651 5:5011:0.3651 6:185:0.3651 7:5533:0.3651 8:5531:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:390:0.50000 16:7250:0.50000 79 | 0 1:2548:0.3651 2:2379:0.3651 3:8672:0.3651 4:9619:0.3651 5:1445:0.3651 6:185:0.3651 7:7818:0.3651 8:4231:0.3651 9:638:0.3651 10:953:0.3651 11:1520:0.3651 12:4838:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2641:0.50000 16:1267:0.50000 80 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 81 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6724:0.3651 6:5918:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 82 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 83 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 84 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:888:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:7148:0.50000 16:1828:0.50000 85 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 86 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2594:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9638:0.3651 13:2738:0.3651 14:2935:0.3651 15:192:0.3651 17:5398:0.02491 17:9083:0.02491 17:8047:0.02491 17:2434:0.49814 16:8255:0.02491 16:7755:0.49814 16:1826:0.02491 16:872:0.02491 87 | 1 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:8018:0.3651 8:2233:0.3651 9:4861:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4342:0.50000 16:3352:0.50000 88 | 0 1:464:0.3651 2:5202:0.3651 3:7396:0.3651 4:9619:0.3651 5:2738:0.3651 6:5918:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2288:0.50000 16:7369:0.50000 89 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:5661:0.3651 6:5918:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:416:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 90 | 1 1:1409:0.3651 2:664:0.3651 3:8672:0.3651 4:2183:0.3651 5:5909:0.3651 6:185:0.3651 7:5533:0.3651 8:5531:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:911:0.50000 16:9686:0.50000 91 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5811:0.3651 13:2738:0.3651 14:2935:0.3651 15:5344:0.3651 17:2434:0.50000 16:7755:0.50000 92 | 0 1:9214:0.3651 2:2037:0.3651 3:8661:0.3651 4:9619:0.3651 5:649:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3151:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8036:0.50000 16:3778:0.50000 93 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6629:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8072:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 94 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3652:0.3651 6:5918:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 95 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:6963:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 96 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9774:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 97 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1409:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4786:0.3651 13:2738:0.3651 14:2935:0.3651 15:5344:0.3651 17:9163:0.12127 17:2434:0.48507 16:5318:0.12127 16:7755:0.48507 98 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9493:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 99 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1438:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 100 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5947:0.3651 6:185:0.3651 7:8937:0.3651 8:7183:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 101 | 1 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:9200:0.3651 6:185:0.3651 7:142:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 102 | 0 1:7682:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:753:0.3651 6:185:0.3651 7:2334:0.3651 8:5010:0.3651 9:3899:0.3651 10:3387:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:5908:0.50000 103 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1729:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 104 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6724:0.3651 6:5918:0.3651 7:1424:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 105 | 0 1:351:0.3651 2:2613:0.3651 3:9952:0.3651 4:2183:0.3651 5:1820:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:5547:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:3723:0.44721 17:4184:0.22361 16:928:0.44721 16:3348:0.22361 106 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6745:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 107 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9774:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 108 | 1 1:5116:0.3651 2:6465:0.3651 3:9952:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8795:0.50000 16:9899:0.50000 109 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 110 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8222:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5642:0.3651 13:2738:0.3651 14:2935:0.3651 15:6885:0.3651 17:5398:0.20604 17:9083:0.06868 17:3121:0.03434 17:2434:0.44642 17:894:0.03434 17:3723:0.03434 16:9716:0.03434 16:872:0.06868 16:928:0.03434 16:8255:0.20604 16:7755:0.44642 16:6900:0.03434 111 | 0 1:246:0.3651 2:3451:0.3651 3:6764:0.3651 4:9619:0.3651 5:5463:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:9603:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4694:0.50000 16:6777:0.50000 112 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9653:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5471:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 113 | 1 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:573:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:9125:0.3651 15:6858:0.3651 17:7148:0.50000 16:1828:0.50000 114 | 0 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:2183:0.3651 5:5613:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:9554:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 115 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8222:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4961:0.3651 13:2738:0.3651 14:2935:0.3651 15:8453:0.3651 17:5398:0.20788 17:2288:0.01890 17:7824:0.01890 17:2434:0.45356 17:9083:0.01890 16:7369:0.01917 16:872:0.01917 16:4991:0.01917 16:8255:0.19174 16:7755:0.46018 16:1236:0.01917 116 | 0 1:6462:0.3651 2:2379:0.3651 3:8672:0.3651 4:9619:0.3651 5:2401:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6746:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2641:0.50000 16:58:0.50000 117 | 1 1:8379:0.3651 2:1847:0.3651 3:9952:0.3651 4:2183:0.3651 5:5947:0.3651 6:185:0.3651 7:9635:0.3651 8:1241:0.3651 9:7873:0.3651 10:4465:0.3651 11:1520:0.3651 12:4490:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8047:0.50000 16:1826:0.50000 118 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:2310:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:385:0.3651 15:1929:0.3651 17:7148:0.50000 16:1828:0.50000 119 | 0 1:8850:0.3651 2:7834:0.3651 3:9952:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:5525:0.3651 8:7752:0.3651 9:381:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:650:0.50000 16:7547:0.50000 120 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3688:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 121 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 122 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1176:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8982:0.3651 13:2738:0.3651 14:2935:0.3651 15:8973:0.3651 17:5398:0.18257 17:3121:0.09129 17:2434:0.45644 16:8255:0.18257 16:7755:0.45644 16:6900:0.09129 123 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:488:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:6160:0.3651 10:5620:0.3651 11:1520:0.3651 12:6229:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 124 | 0 1:9945:0.3651 2:3412:0.3651 3:6764:0.3651 4:9619:0.3651 5:5480:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:474:0.50000 16:8910:0.50000 125 | 0 1:3230:0.3651 2:2905:0.3651 3:9952:0.3651 4:9619:0.3651 5:1501:0.3651 6:185:0.3651 7:9109:0.3651 8:2233:0.3651 9:4487:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8976:0.50000 16:9067:0.50000 126 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1392:0.3651 6:5918:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:582:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 127 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 128 | 1 1:1018:0.3651 2:7079:0.3651 3:1243:0.3651 4:9619:0.3651 5:9882:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3457:0.50000 16:5372:0.50000 129 | 0 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4154:0.3651 6:185:0.3651 7:5932:0.3651 8:1786:0.3651 9:1861:0.3651 10:4062:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:1418:0.50000 130 | 0 1:3086:0.3651 2:894:0.3651 3:9931:0.3651 4:2183:0.3651 5:7912:0.3651 6:185:0.3651 7:9051:0.3651 8:4637:0.3651 9:6390:0.3651 10:2106:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8914:0.50000 16:650:0.50000 131 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:1857:0.3651 6:5918:0.3651 7:2569:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:4520:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 132 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 133 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6052:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 134 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 135 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 136 | 0 1:4502:0.3651 2:2379:0.3651 3:9952:0.3651 4:9619:0.3651 5:6795:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2641:0.50000 16:8846:0.50000 137 | 0 1:9214:0.3651 2:2037:0.3651 3:8661:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8036:0.50000 16:3778:0.50000 138 | 0 1:6825:0.3651 2:1623:0.3651 3:9952:0.3651 4:2183:0.3651 5:3169:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:6994:0.50000 16:4008:0.50000 139 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5318:0.3651 6:185:0.3651 7:3479:0.3651 8:3373:0.3651 9:3899:0.3651 10:5989:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3723:0.50000 16:928:0.50000 140 | 0 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:766:0.3651 13:2738:0.3651 14:2935:0.3651 15:6325:0.3651 17:5398:0.13245 17:8047:0.13245 17:2434:0.46359 16:8255:0.13245 16:7755:0.46359 16:1826:0.13245 141 | 0 1:319:0.3651 2:5726:0.3651 3:9952:0.3651 4:9619:0.3651 5:613:0.3651 6:185:0.3651 7:146:0.3651 8:5805:0.3651 9:5189:0.3651 10:6908:0.3651 11:1520:0.3651 12:1250:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:4342:0.50000 16:3352:0.50000 142 | 0 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:8142:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 143 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:6629:0.3651 6:185:0.3651 7:7836:0.3651 8:653:0.3651 9:5483:0.3651 10:5620:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 144 | 0 1:4993:0.3651 2:8384:0.3651 3:9952:0.3651 4:9619:0.3651 5:4729:0.3651 6:5918:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8700:0.50000 16:2866:0.50000 145 | 0 1:7759:0.3651 2:7921:0.3651 3:8661:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8323:0.50000 16:2974:0.50000 146 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:3169:0.3651 6:185:0.3651 7:3735:0.3651 8:2685:0.3651 9:3483:0.3651 10:7582:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 147 | 0 1:6462:0.3651 2:2379:0.3651 3:8672:0.3651 4:9619:0.3651 5:7305:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2641:0.50000 16:58:0.50000 148 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:4786:0.3651 13:2738:0.3651 14:2935:0.3651 15:5872:0.3651 17:5398:0.08817 17:5800:0.00980 17:8047:0.03919 17:2434:0.48982 17:8700:0.00980 17:3824:0.00980 17:8844:0.01959 17:7571:0.00980 16:338:0.01959 16:7433:0.00980 16:2866:0.00980 16:1132:0.00980 16:8255:0.08817 16:7755:0.48982 16:1826:0.03919 16:9568:0.00980 149 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6629:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:8982:0.3651 13:2738:0.3651 14:2935:0.3651 15:5007:0.3651 17:2434:0.50000 16:7755:0.50000 150 | 0 1:1332:0.3651 2:4059:0.3651 3:9952:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9338:0.50000 16:100:0.50000 151 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7680:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 152 | 0 1:393:0.3651 2:6291:0.3651 3:9952:0.3651 4:9619:0.3651 5:9653:0.3651 6:185:0.3651 7:6690:0.3651 8:6571:0.3651 9:3899:0.3651 10:953:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:3824:0.50000 16:1132:0.50000 153 | 0 1:1228:0.3651 2:2179:0.3651 3:9474:0.3651 4:2183:0.3651 5:1036:0.3651 6:185:0.3651 7:1969:0.3651 8:3240:0.3651 9:4487:0.3651 10:3387:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:4277:0.50000 16:2625:0.50000 154 | 1 1:1409:0.3651 2:664:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:5533:0.3651 8:5531:0.3651 9:3899:0.3651 10:3330:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:911:0.50000 16:9686:0.50000 155 | 0 1:7952:0.3651 2:2392:0.3651 3:9952:0.3651 4:9619:0.3651 5:5029:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:3483:0.3651 10:6908:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7571:0.50000 16:7433:0.50000 156 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 157 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8222:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 158 | 0 1:7458:0.3651 2:1987:0.3651 3:1243:0.3651 4:9619:0.3651 5:6873:0.3651 6:185:0.3651 7:9720:0.3651 8:5805:0.3651 9:5189:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:4729:0.50000 16:1246:0.50000 159 | 1 1:6097:0.3651 2:2063:0.3651 3:9952:0.3651 4:9619:0.3651 5:4039:0.3651 6:185:0.3651 7:146:0.3651 8:5805:0.3651 9:2032:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2100:0.50000 16:357:0.50000 160 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:610:0.3651 6:5918:0.3651 7:2166:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 161 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:8786:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 162 | 1 1:449:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:9200:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:5483:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:8226:0.50000 163 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 164 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:3777:0.3651 6:185:0.3651 7:6677:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:7148:0.50000 16:1828:0.50000 165 | 1 1:2146:0.3651 2:4357:0.3651 3:9952:0.3651 4:9619:0.3651 5:21:0.3651 6:185:0.3651 7:7714:0.3651 8:7470:0.3651 9:4698:0.3651 10:8245:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:663:0.50000 16:2035:0.50000 166 | 0 1:48:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:8216:0.3651 6:185:0.3651 7:1969:0.3651 8:3240:0.3651 9:4861:0.3651 10:3387:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:8965:0.50000 167 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9774:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:5980:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 168 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9653:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:405:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 169 | 1 1:206:0.3651 2:674:0.3651 3:9952:0.3651 4:9619:0.3651 5:6963:0.3651 6:185:0.3651 7:7230:0.3651 8:653:0.3651 9:3899:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5398:0.50000 16:8255:0.50000 170 | 0 1:513:0.3651 2:8451:0.3651 3:9474:0.3651 4:2183:0.3651 5:4154:0.3651 6:185:0.3651 7:4692:0.3651 8:1786:0.3651 9:1861:0.3651 10:4062:0.3651 11:1520:0.3651 12:9714:0.3651 13:2549:0.3651 14:2935:0.3651 15:5428:0.3651 17:7026:0.50000 16:1418:0.50000 171 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2863:0.3651 6:185:0.3651 7:8355:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:563:0.3651 13:2738:0.3651 14:2935:0.3651 15:2757:0.3651 17:9083:0.12127 17:2434:0.48507 16:7755:0.48507 16:9111:0.12127 172 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:1693:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 173 | 0 1:5250:0.3651 2:6423:0.3651 3:6764:0.3651 4:9619:0.3651 5:8408:0.3651 6:185:0.3651 7:5525:0.3651 8:7752:0.3651 9:381:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:5316:0.50000 16:5065:0.50000 174 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:4658:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 175 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3561:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:267:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 176 | 1 1:7501:0.3651 2:439:0.3651 3:1243:0.3651 4:2183:0.3651 5:1624:0.3651 6:185:0.3651 7:1398:0.3651 8:4331:0.3651 9:5483:0.3651 10:5620:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:9083:0.50000 16:872:0.50000 177 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:421:0.3651 6:185:0.3651 7:5599:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 178 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:6795:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:2434:0.50000 16:7755:0.50000 179 | 0 1:1382:0.3651 2:9270:0.3651 3:9952:0.3651 4:2183:0.3651 5:3169:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8737:0.50000 16:232:0.50000 180 | 0 1:6076:0.3651 2:1921:0.3651 3:8672:0.3651 4:2183:0.3651 5:1750:0.3651 6:185:0.3651 7:6704:0.3651 8:8580:0.3651 9:3899:0.3651 10:6805:0.3651 11:1520:0.3651 12:1089:0.3651 13:2738:0.3651 14:2935:0.3651 15:1929:0.3651 17:2004:0.28868 17:8616:0.28868 17:9990:0.28868 16:2198:0.28868 16:1762:0.28868 16:2803:0.28868 181 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:573:0.3651 6:185:0.3651 7:7196:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:9125:0.3651 15:6858:0.3651 17:7148:0.50000 16:1828:0.50000 182 | 1 1:6381:0.3651 2:3648:0.3651 3:9952:0.3651 4:2183:0.3651 5:1501:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:6323:0.50000 16:6611:0.50000 183 | 0 1:1988:0.3651 2:400:0.3651 3:1243:0.3651 4:2183:0.3651 5:2310:0.3651 6:185:0.3651 7:867:0.3651 8:1343:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:7148:0.50000 16:1828:0.50000 184 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7305:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 185 | 0 1:2850:0.3651 2:3395:0.3651 3:9952:0.3651 4:9619:0.3651 5:2694:0.3651 6:185:0.3651 7:3735:0.3651 8:2685:0.3651 9:3899:0.3651 10:7582:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8574:0.50000 16:6848:0.50000 186 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:2431:0.3651 6:185:0.3651 7:2166:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 187 | 0 1:7633:0.3651 2:8195:0.3651 3:9952:0.3651 4:9619:0.3651 5:5383:0.3651 6:185:0.3651 7:932:0.3651 8:5166:0.3651 9:8193:0.3651 10:4465:0.3651 11:1520:0.3651 12:4999:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:3723:0.50000 16:928:0.50000 188 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:4258:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 189 | 0 1:5116:0.3651 2:6465:0.3651 3:9952:0.3651 4:2183:0.3651 5:6506:0.3651 6:185:0.3651 7:3741:0.3651 8:7752:0.3651 9:3899:0.3651 10:9493:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8795:0.50000 16:9899:0.50000 190 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3122:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:9100:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 191 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9882:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 192 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:7111:0.3651 6:185:0.3651 7:1424:0.3651 8:8131:0.3651 9:5483:0.3651 10:215:0.3651 11:1520:0.3651 12:1232:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 193 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:249:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:6187:0.3651 13:2738:0.3651 14:2935:0.3651 15:4252:0.3651 17:2867:0.03835 17:2434:0.49853 16:1725:0.03835 16:7755:0.49853 194 | 0 1:2146:0.3651 2:4357:0.3651 3:9952:0.3651 4:9619:0.3651 5:2654:0.3651 6:185:0.3651 7:3076:0.3651 8:260:0.3651 9:6391:0.3651 10:953:0.3651 11:1520:0.3651 12:143:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:663:0.50000 16:2035:0.50000 195 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3561:0.3651 6:185:0.3651 7:9637:0.3651 8:8131:0.3651 9:6160:0.3651 10:215:0.3651 11:1520:0.3651 12:267:0.3651 13:2738:0.3651 14:8813:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 196 | 1 1:9551:0.3651 2:610:0.3651 3:9952:0.3651 4:9619:0.3651 5:3780:0.3651 6:185:0.3651 7:7424:0.3651 8:4515:0.3651 9:3899:0.3651 10:4465:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8926:0.50000 16:4511:0.50000 197 | 1 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9115:0.3651 6:185:0.3651 7:2569:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 198 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:3780:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:2434:0.50000 16:7755:0.50000 199 | 0 1:4222:0.3651 2:1163:0.3651 3:8672:0.3651 4:2183:0.3651 5:9653:0.3651 6:185:0.3651 7:5671:0.3651 8:8131:0.3651 9:3899:0.3651 10:215:0.3651 11:1520:0.3651 12:7685:0.3651 13:2738:0.3651 14:2935:0.3651 15:6145:0.3651 17:2434:0.50000 16:7755:0.50000 200 | 0 1:9551:0.3651 2:610:0.3651 3:9952:0.3651 4:9619:0.3651 5:7389:0.3651 6:185:0.3651 7:8644:0.3651 8:2285:0.3651 9:4861:0.3651 10:6908:0.3651 11:1520:0.3651 12:9714:0.3651 13:2738:0.3651 14:2935:0.3651 15:5428:0.3651 17:8926:0.50000 16:4511:0.50000 201 | -------------------------------------------------------------------------------- /example/libffm-format/libffm-example.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | from sklearn.model_selection import train_test_split 4 | import numpy as np 5 | import pandas as pd 6 | from ffm import FFM, FFMData, load_libffm 7 | 8 | data_dir = './' 9 | 10 | train_X, train_y = load_libffm(data_dir + 'bigdata.tr.txt') 11 | test_X, test_y = load_libffm(data_dir + 'bigdata.te.txt') 12 | 13 | train_data = FFMData(train_X, train_y) 14 | test_data = FFMData(test_X, test_y) 15 | 16 | model = FFM(eta=0.1, lam=0.0002, k=4) 17 | model.fit(train_data, num_iter=50, val_data=test_data, metric='logloss', early_stopping=5, maximum=False) 18 | 19 | acc = model.score(test_data, scoring='acc') 20 | print("Accuracy Score: ", acc) 21 | f1 = model.score(test_data, scoring='f1') 22 | print("F1 Score: ", f1) -------------------------------------------------------------------------------- /example/pandas-format/sklearn-example.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | from sklearn.datasets import make_classification 4 | from sklearn.model_selection import train_test_split 5 | import numpy as np 6 | import pandas as pd 7 | from ffm import FFM, FFMFormatPandas, FFMData, save_data, load_data 8 | 9 | # define metric 10 | def Gini(y_true, y_pred): 11 | # check and get number of samples 12 | assert len(y_true) == len(y_pred) 13 | y_true, y_pred = np.array(y_true), np.array(y_pred) 14 | n_samples = y_true.shape[0] 15 | 16 | # sort rows on prediction column 17 | # (from largest to smallest) 18 | arr = np.array([y_true, y_pred]).transpose() 19 | true_order = arr[arr[:, 0].argsort()][::-1, 0] 20 | pred_order = arr[arr[:, 1].argsort()][::-1, 0] 21 | 22 | # get Lorenz curves 23 | L_true = np.cumsum(true_order) * 1. / np.sum(true_order) 24 | L_pred = np.cumsum(pred_order) * 1. / np.sum(pred_order) 25 | L_ones = np.linspace(1 / n_samples, 1, n_samples) 26 | 27 | # get Gini coefficients (area between curves) 28 | G_true = np.sum(L_ones - L_true) 29 | G_pred = np.sum(L_ones - L_pred) 30 | 31 | # normalize to true Gini coefficient 32 | return G_pred * 1. / G_true 33 | 34 | # make dataset 35 | train, y = make_classification(n_samples=2000, n_features=5, n_informative=2, n_redundant=2, n_classes=2, random_state=42) 36 | 37 | train = pd.DataFrame(train, columns=['int1','int2','float1','s1','s2']) 38 | train['int1'] = train['int1'].map(int) + np.random.randint(0, 8) 39 | train['int2'] = train['int2'].map(int) 40 | train['s1'] = np.log(abs(train['s1'] +1 )).round().map(str) 41 | train['s2'] = np.log(abs(train['s2'] +1 )).round().map(str) 42 | train['clicked'] = y 43 | 44 | # transform data 45 | categorical=['int1', 'int2', 's1', 's2'] 46 | numerical = ['float1'] 47 | target = 'clicked' 48 | 49 | train_data, val_data = train_test_split(train, test_size=0.2) 50 | 51 | ffm_train = FFMFormatPandas() 52 | ffm_train.fit(train, target=target, categorical=categorical, numerical=numerical) 53 | train_data = ffm_train.transform_convert(train_data) 54 | val_data = ffm_train.transform(val_data) 55 | 56 | # save and load data 57 | save_data(val_data, 'val_data.pkl') 58 | X, y = load_data('val_data.pkl') 59 | val_data = FFMData(X, y) 60 | 61 | # make model for train 62 | model = FFM(eta=0.1, lam=0.0001, k=4) 63 | model.fit(train_data, num_iter=32, val_data=val_data, metric=Gini, early_stopping=5, maximum=True) 64 | 65 | # predict 66 | val_proba = model.predict_proba(val_data) 67 | -------------------------------------------------------------------------------- /ffm/__init__.py: -------------------------------------------------------------------------------- 1 | from .ffm import FFMData, FFM, read_model 2 | from .pd2ffm import FFMFormatPandas 3 | from .utils import save_data, load_data, load_libffm, save_libffm 4 | -------------------------------------------------------------------------------- /ffm/ffm-wrapper.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | The following table is the meaning of some variables in this code: 3 | 4 | W: The pointer to the beginning of the model 5 | w: Dynamic pointer to access values in the model 6 | m: Number of fields 7 | k: Number of latent factors 8 | n: Number of features 9 | l: Number of data points 10 | f: Field index (0 to m-1) 11 | d: Latent factor index (0 to k-1) 12 | j: Feature index (0 to n-1) 13 | i: Data point index (0 to l-1) 14 | nnz: Number of non-zero elements 15 | X, P: Used to store the problem in a compressed sparse row (CSR) format. len(X) = nnz, len(P) = l + 1 16 | Y: The label. len(Y) = l 17 | R: Precomputed scaling factor to make the 2-norm of each instance to be 1. len(R) = l 18 | v: Value of each element in the problem 19 | */ 20 | 21 | #pragma GCC diagnostic ignored "-Wunused-result" 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | 37 | #define DEBUG 0 38 | 39 | #if defined USESSE 40 | #include 41 | #endif 42 | 43 | #if defined USEOMP 44 | #include 45 | #endif 46 | 47 | 48 | #include "ffm-wrapper.h" 49 | #include "ffm.cpp" 50 | 51 | namespace ffm { 52 | 53 | ffm_problem* ffm_convert_data(ffm_line* data, ffm_int num_lines) { 54 | ffm_float* Y = new ffm_float[num_lines]; 55 | ffm_float* R = new ffm_float[num_lines]; 56 | ffm_long* P = new ffm_long[num_lines + 1]; 57 | P[0] = 0; 58 | 59 | ffm_long num_nodes = 0; 60 | 61 | ffm_line *data_begin = data; 62 | ffm_line *data_end = data + num_lines; 63 | 64 | for (ffm_line *line = data_begin; line != data_end; line++) { 65 | num_nodes = num_nodes + line->size; 66 | } 67 | 68 | ffm_node* X = new ffm_node[num_nodes]; 69 | int m = 0; 70 | int n = 0; 71 | 72 | ffm_long p = 0; 73 | ffm_int i = 0; 74 | for (ffm_line *line = data_begin; line != data_end; line++) { 75 | ffm_float y = line->label > 0 ? 1.0f : -1.0f; 76 | ffm_float scale = 0; 77 | 78 | ffm_node* node_beg = line->data; 79 | ffm_node* node_end = node_beg + line->size; 80 | 81 | for (ffm_node* N = node_beg; N != node_end; N++) { 82 | X[p] = *N; 83 | 84 | m = max(m, N->f + 1); 85 | n = max(n, N->j + 1); 86 | 87 | scale += N->v * N->v; 88 | p++; 89 | } 90 | 91 | Y[i] = y; 92 | R[i] = 1.0 / scale; 93 | P[i + 1] = p; 94 | i++; 95 | } 96 | 97 | ffm_problem* result = new ffm_problem; 98 | #if defined DEBUG 99 | //printf("allocated address in ffm_convert_data: %p\n", result); 100 | # endif 101 | 102 | result->size = num_lines; 103 | 104 | result->data = X; 105 | result->num_nodes = num_nodes; 106 | result->pos = P; 107 | 108 | result->labels = Y; 109 | result->scales = R; 110 | result->n = n; 111 | result->m = m; 112 | 113 | return result; 114 | } 115 | 116 | void free_ffm_data(ffm_problem *data) { 117 | delete data->data; 118 | delete data->labels; 119 | delete data->pos; 120 | delete data->scales; 121 | delete data; 122 | } 123 | 124 | ffm_model ffm_init_model(ffm_problem& problem, ffm_parameter params) { 125 | int n = problem.n; 126 | int m = problem.m; 127 | return init_model(n, m, params); 128 | } 129 | 130 | ffm_float ffm_train_iteration(ffm_problem& prob, ffm_model& model, ffm_parameter params) { 131 | ffm_double loss = 0; 132 | 133 | ffm_int len = prob.size; 134 | ffm_node* X = prob.data; 135 | ffm_float* Y = prob.labels; 136 | ffm_float* R = prob.scales; 137 | 138 | ffm_long* P = prob.pos; 139 | 140 | ffm_int* idx = new ffm_int[len]; 141 | for (int i = 0; i < len; i++) { 142 | idx[i] = i; 143 | } 144 | 145 | random_shuffle(&idx[0], &idx[len]); 146 | 147 | #if defined USEOMP 148 | #pragma omp parallel for schedule(static) reduction(+: loss) 149 | #endif 150 | 151 | for (ffm_int id = 0; id < len; id++) { 152 | ffm_int i = idx[id]; 153 | ffm_float y = Y[i]; 154 | 155 | ffm_node *begin = &X[P[i]]; 156 | ffm_node *end = &X[P[i + 1]]; 157 | 158 | ffm_float r = params.normalization ? R[i] : 1; 159 | ffm_float t = wTx(begin, end, r, model); 160 | 161 | ffm_float expnyt = exp(-y * t); 162 | loss = loss + log(1 + expnyt); 163 | 164 | ffm_float kappa = -y * expnyt / (1 + expnyt); 165 | wTx(begin, end, r, model, kappa, params.eta, params.lambda, true); 166 | } 167 | 168 | delete[] idx; 169 | 170 | return loss / len; 171 | } 172 | 173 | ffm_float* ffm_predict_batch(ffm_problem &prob, ffm_model &model) { 174 | ffm_node* X = prob.data; 175 | ffm_float* R = prob.scales; 176 | ffm_long* P = prob.pos; 177 | ffm_int len = prob.size; 178 | 179 | ffm_float* result = new float[len]; 180 | 181 | for (ffm_int i = 0; i < len; i++) { 182 | ffm_node *begin = &X[P[i]]; 183 | ffm_node *end = &X[P[i + 1]]; 184 | 185 | ffm_float r = model.normalization ? R[i] : 1.0; 186 | ffm_float t = wTx(begin, end, r, model); 187 | 188 | result[i] = 1 / (1 + exp(-t)); 189 | } 190 | 191 | #if defined DEBUG 192 | //printf("allocated address in ffm_predict_batch: %p\n", result); 193 | #endif 194 | 195 | return result; 196 | } 197 | 198 | void ffm_save_model_c_string(ffm_model& model, char* path) { 199 | string str_path(path); 200 | ffm_save_model(model, str_path); 201 | } 202 | 203 | ffm_model ffm_load_model_c_string(char* path) { 204 | string str_path(path); 205 | return ffm_load_model(str_path); 206 | } 207 | 208 | ffm_float ffm_predict_array(ffm_node* nodes, int len, ffm_model &model) { 209 | ffm_node* begin = nodes; 210 | ffm_node* end = begin + len; 211 | 212 | return ffm_predict(begin, end, model); 213 | } 214 | 215 | void free_ffm_float(ffm_float *data) { 216 | #if defined DEBUG 217 | //printf("freeing ffm_float address: %p\n", data); 218 | # endif 219 | delete data; 220 | } 221 | 222 | void free_ffm_problem(ffm_problem *data) { 223 | #if defined DEBUG 224 | //printf("freeing ffm_problem address: %p\n", data); 225 | # endif 226 | delete data->data; 227 | delete data->labels; 228 | delete data->pos; 229 | delete data->scales; 230 | delete data; 231 | } 232 | 233 | 234 | } // namespace ffm 235 | -------------------------------------------------------------------------------- /ffm/ffm-wrapper.h: -------------------------------------------------------------------------------- 1 | #ifndef _LIBFFM_WRAPPER_H 2 | #define _LIBFFM_WRAPPER_H 3 | 4 | #include 5 | 6 | extern "C" { 7 | 8 | #include "ffm.h" 9 | 10 | namespace ffm { 11 | using namespace std; 12 | 13 | // new structs and methods for the wrapper 14 | 15 | struct ffm_line { 16 | ffm_node* data; 17 | ffm_float label; 18 | ffm_int size; 19 | }; 20 | 21 | struct ffm_problem { 22 | ffm_int size = 0; 23 | ffm_long num_nodes = 0; 24 | 25 | ffm_node* data; 26 | ffm_long* pos; 27 | ffm_float* labels; 28 | ffm_float* scales; 29 | 30 | ffm_int n = 0; 31 | ffm_int m = 0; 32 | }; 33 | 34 | ffm_model ffm_load_model_c_string(char *path); 35 | 36 | void ffm_save_model_c_string(ffm_model &model, char *path); 37 | 38 | ffm_problem* ffm_convert_data(ffm_line *data, ffm_int num_lines); 39 | 40 | void free_ffm_float(ffm_float *data); 41 | 42 | void free_ffm_problem(ffm_problem *data); 43 | 44 | void free_ffm_data(ffm_problem *data); 45 | 46 | ffm_model ffm_init_model(ffm_problem &data, ffm_parameter params); 47 | 48 | ffm_float ffm_train_iteration(ffm_problem &data, ffm_model &model, ffm_parameter params); 49 | 50 | ffm_float ffm_predict_array(ffm_node *nodes, int len, ffm_model &model); 51 | 52 | ffm_float* ffm_predict_batch(ffm_problem &data, ffm_model &model); 53 | 54 | } // namespace ffm 55 | } 56 | #endif // _LIBFFM_WRAPPER_H 57 | 58 | -------------------------------------------------------------------------------- /ffm/ffm.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | import os 4 | path = os.path.dirname(os.path.realpath(__file__)) 5 | libffm_file = [p for p in os.listdir(path) if p.startswith('libffm.') or p.endswith('.so')] 6 | if len(libffm_file) < 1: 7 | print("No libffm.so Build!") 8 | exit(1) 9 | lib_path = path + '/' + libffm_file[0] 10 | 11 | # binding code 12 | 13 | import numpy as np 14 | import ctypes 15 | from sklearn.metrics import log_loss, roc_auc_score, accuracy_score, f1_score 16 | from sklearn.base import BaseEstimator, ClassifierMixin 17 | 18 | class FFM_Parameter(ctypes.Structure): 19 | _fields_ = [ 20 | ('eta', ctypes.c_float), 21 | ('lam', ctypes.c_float), 22 | ('nr_iters', ctypes.c_int), 23 | ("k", ctypes.c_int), 24 | ('normalization', ctypes.c_bool), 25 | ('auto_stop', ctypes.c_bool), 26 | ] 27 | 28 | class FFM_Model(ctypes.Structure): 29 | _fields_ = [ 30 | ("n", ctypes.c_int), 31 | ("m", ctypes.c_int), 32 | ("k", ctypes.c_int), 33 | ("W", ctypes.POINTER(ctypes.c_float)), 34 | ('normalization', ctypes.c_bool) 35 | ] 36 | 37 | class FFM_Node(ctypes.Structure): 38 | _fields_ = [ 39 | ("f", ctypes.c_int), 40 | ("j", ctypes.c_int), 41 | ("v", ctypes.c_float), 42 | ] 43 | 44 | class FFM_Line(ctypes.Structure): 45 | _fields_ = [ 46 | ("data", ctypes.POINTER(FFM_Node)), 47 | ("label", ctypes.c_float), 48 | ("size", ctypes.c_int), 49 | ] 50 | 51 | class FFM_Problem(ctypes.Structure): 52 | _fields_ = [ 53 | ("size", ctypes.c_int), 54 | ("num_nodes", ctypes.c_long), 55 | 56 | ("data", ctypes.POINTER(FFM_Node)), 57 | ("pos", ctypes.POINTER(ctypes.c_long)), 58 | ("labels", ctypes.POINTER(ctypes.c_float)), 59 | ("scales", ctypes.POINTER(ctypes.c_float)), 60 | 61 | ("n", ctypes.c_int), 62 | ("m", ctypes.c_int), 63 | ] 64 | 65 | FFM_Node_ptr = ctypes.POINTER(FFM_Node) 66 | FFM_Line_ptr = ctypes.POINTER(FFM_Line) 67 | FFM_Model_ptr = ctypes.POINTER(FFM_Model) 68 | FFM_Problem_ptr = ctypes.POINTER(FFM_Problem) 69 | FFM_Float_ptr = ctypes.POINTER(ctypes.c_float) 70 | 71 | _lib = ctypes.cdll.LoadLibrary(lib_path) 72 | 73 | _lib.ffm_convert_data.restype = FFM_Problem_ptr 74 | _lib.ffm_convert_data.argtypes = [FFM_Line_ptr, ctypes.c_int] 75 | 76 | _lib.free_ffm_problem.restype = None 77 | _lib.free_ffm_problem.argtypes = [FFM_Problem_ptr] 78 | 79 | _lib.free_ffm_float.restype = None 80 | _lib.free_ffm_float.argtypes = [FFM_Float_ptr] 81 | 82 | _lib.ffm_init_model.restype = FFM_Model 83 | _lib.ffm_init_model.argtypes = [FFM_Problem_ptr, FFM_Parameter] 84 | 85 | _lib.ffm_train_iteration.restype = ctypes.c_float 86 | _lib.ffm_train_iteration.argtypes = [FFM_Problem_ptr, FFM_Model_ptr, FFM_Parameter] 87 | 88 | _lib.ffm_predict_array.argtypes = [FFM_Node_ptr, ctypes.c_int, FFM_Model_ptr] 89 | _lib.ffm_predict_array.restype = ctypes.c_float 90 | 91 | _lib.ffm_predict_batch.restype = ctypes.POINTER(ctypes.c_float) 92 | _lib.ffm_predict_batch.argtypes = [FFM_Problem_ptr, FFM_Model_ptr] 93 | 94 | _lib.ffm_load_model_c_string.restype = FFM_Model 95 | _lib.ffm_load_model_c_string.argtypes = [ctypes.c_char_p] 96 | 97 | _lib.ffm_save_model_c_string.argtypes = [FFM_Model_ptr, ctypes.c_char_p] 98 | 99 | 100 | # some wrapping to make it easier to work with 101 | 102 | def wrap_tuples(row): 103 | size = len(row) 104 | nodes_array = (FFM_Node * size)() 105 | 106 | for i, (f, j, v) in enumerate(row): 107 | node = nodes_array[i] 108 | node.f = int(f) 109 | node.j = int(j) 110 | node.v = int(v) 111 | 112 | return nodes_array 113 | 114 | def wrap_dataset_init(X, target): 115 | l = len(target) 116 | data = (FFM_Line * l)() 117 | 118 | for i, (x, y) in enumerate(zip(X, target)): 119 | d = data[i] 120 | nodes = wrap_tuples(x) 121 | d.data = nodes 122 | d.label = int(y) 123 | d.size = nodes._length_ 124 | 125 | return data 126 | 127 | def wrap_dataset(X, y): 128 | line_array = wrap_dataset_init(X, y) 129 | return _lib.ffm_convert_data(line_array, line_array._length_) 130 | 131 | # Print Trainning Process 132 | def print_line(data=None, val=True): 133 | if val: 134 | if data is None: 135 | print('%-8s%-16s%-16s%-16s%-8s' %("Iter", "Train_Loss", "Train_Score", "Val_Score", "Best_Iter")) 136 | else: 137 | print('%-8d%-16.4f%-16.4f%-16.4f%-8d' %(data[0], data[1], data[2], data[3], data[4])) 138 | else: 139 | if data is None: 140 | print('%-8s%-16s%-16s%-16s%-8s' %("Iter", "Train_Loss", "Train_Score", "Best_Iter")) 141 | else: 142 | print('%-8d%-16.4f%-16.4f%-8d' %(data[0], data[1], data[2], data[3])) 143 | 144 | class FFMData(): 145 | def __init__(self, X=None, y=None): 146 | self.data = X 147 | self.labels = y 148 | if X is not None and y is not None: 149 | self._data = wrap_dataset(X, y) 150 | elif X is not None and y is None: 151 | self._data = wrap_dataset(X, [0]*len(X)) 152 | else: 153 | self._data = None 154 | self.size = len(X) 155 | 156 | def num_rows(self): 157 | return self.size 158 | 159 | def __del__(self): 160 | if self._data is not None: 161 | _lib.free_ffm_problem(self._data) 162 | 163 | 164 | class Prediction: 165 | def __init__(self, pred_ptr=None, data=None): 166 | if pred_ptr is not None: 167 | self._pred_ptr = pred_ptr 168 | size = data.size 169 | pred_ptr_address = ctypes.addressof(pred_ptr.contents) 170 | array_cast = (ctypes.c_float * size).from_address(pred_ptr_address) 171 | self.pred = np.ctypeslib.as_array(array_cast) 172 | 173 | def __del__(self): 174 | if self._pred_ptr is not None: 175 | _lib.free_ffm_float(self._pred_ptr) 176 | 177 | # FFM model 178 | 179 | class FFM(BaseEstimator, ClassifierMixin): 180 | def __init__(self, eta=0.2, lam=0.00002, k=4, normalization=True, num_iter=None, early_stopping=None, metric=None): 181 | self._params = FFM_Parameter(eta=eta, lam=lam, k=k, normalization=normalization) 182 | self.set_params(eta=eta, lam=lam, k=k, normalization=normalization, num_iter=num_iter, early_stopping=early_stopping, metric=metric) 183 | self._model = None 184 | 185 | def read_model(self, path): 186 | path_char = ctypes.c_char_p(path.encode()) 187 | model = _lib.ffm_load_model_c_string(path_char) 188 | self._model = model 189 | return self 190 | 191 | def save_model(self, path): 192 | model = self._model 193 | path_char = ctypes.c_char_p(path.encode()) 194 | _lib.ffm_save_model_c_string(model, path_char) 195 | 196 | def init_model(self, ffm_data): 197 | params = self._params 198 | model = _lib.ffm_init_model(ffm_data._data, params) 199 | self._model = model 200 | return self 201 | 202 | def iteration(self, ffm_data): 203 | data = ffm_data._data 204 | model = self._model 205 | params = self._params 206 | loss = _lib.ffm_train_iteration(data, model, params) 207 | return loss 208 | 209 | def predict(self, ffm_data): 210 | proba = self.predict_proba(ffm_data) 211 | y_pred = [round(i) for i in proba] 212 | return y_pred 213 | 214 | def predict_proba(self, ffm_data): 215 | data = ffm_data._data 216 | model = self._model 217 | pred_ptr = _lib.ffm_predict_batch(data, model) 218 | 219 | prediction = Prediction(pred_ptr, data.contents) 220 | proba = np.copy(prediction.pred) 221 | 222 | return proba 223 | 224 | def _predict_row(self, nodes): 225 | n = nodes._length_ 226 | model = self._model 227 | pred = _lib.ffm_predict_array(nodes, n, model) 228 | return pred 229 | 230 | def fit(self, X, y=None, num_iter=10, val_data=None, metric='logloss', early_stopping=5, maximum=False): 231 | ''' 232 | X: feature data or FFMData format 233 | y: target 234 | num_iter: number of iterations 235 | val_data: data for validation, list or FFMData format 236 | metric: str or self defined function, build_in metrics are 'auc', 'logloss', 'f1', 'accuracy' 237 | early_stopping: early stopping rounds 238 | maximum: whether the biger the score, the better the metric 239 | ''' 240 | # Translate Traing Data 241 | if isinstance(X, FFMData): 242 | train_data = X 243 | else: 244 | train_data = FFMData(X, y) 245 | 246 | # Init Model 247 | self.init_model(train_data) 248 | self.set_params(num_iter=num_iter, early_stopping=early_stopping, metric=metric) 249 | 250 | # Translate Validation Data 251 | val = True if val_data is not None else False 252 | if val: 253 | if not isinstance(val_data, FFMData): 254 | val_data = FFMData(val_data[0], val_data[1]) 255 | 256 | # Print Header 257 | print_line(data=None, val=val) 258 | 259 | # Score Recorder: > or < 260 | best_model = None 261 | score_index = -1 262 | if maximum: 263 | cmp = lambda x, y: x > y 264 | score = -np.inf 265 | else: 266 | cmp = lambda x, y: x < y 267 | score = np.inf 268 | 269 | # Trainning Process 270 | for i in range(num_iter): 271 | self.iteration(train_data) 272 | train_loss = self.score(train_data, train_data.labels, scoring='logloss') 273 | train_score = self.score(train_data, train_data.labels, scoring=metric) 274 | 275 | if val: 276 | val_score = self.score(val_data, val_data.labels, scoring=metric) 277 | if cmp(val_score, score): 278 | score = val_score 279 | score_index = i 280 | best_model = self._model 281 | print_line(data=[i, train_loss, train_score, val_score, score_index], val=val) 282 | else: 283 | if cmp(val_score, score): 284 | score = val_score 285 | score_index = i 286 | best_model = self._model 287 | print_line(data=[i, train_loss, train_score, score_index], val=val) 288 | 289 | if (i - score_index) >= early_stopping: 290 | print("Early Stoping At %d Rounds" % score_index) 291 | break 292 | 293 | self._model = best_model 294 | return self 295 | 296 | def score(self, X, y=None, scoring='logloss'): 297 | if self._model is None: 298 | raise ValueError("``score`` must be call after fit" ) 299 | if isinstance(X, FFMData): 300 | val_data = X 301 | else: 302 | val_data = FFMData(X, y) 303 | y_pred = self.predict_proba(val_data) 304 | y_true = val_data.labels 305 | if isinstance(scoring, str): 306 | if scoring == 'logloss': 307 | return log_loss(y_true, y_pred) 308 | elif scoring == 'auc': 309 | return roc_auc_score(y_true, y_pred) 310 | elif scoring == 'f1': 311 | y_pred = [round(i) for i in y_pred] 312 | return f1_score(y_true, y_pred) 313 | else: 314 | y_pred = [round(i) for i in y_pred] 315 | return accuracy_score(y_true, y_pred) 316 | else : 317 | return scoring(y_true, y_pred) 318 | 319 | 320 | def read_model(path): 321 | return FFM().read_model(path) 322 | 323 | -------------------------------------------------------------------------------- /ffm/pd2ffm.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | import numpy as np 4 | import pandas as pd 5 | from .ffm import FFMData 6 | from tqdm import tqdm 7 | 8 | class FFMFormatPandas: 9 | def __init__(self): 10 | self.field_index = {} 11 | self.feature_index = {} 12 | self.numerical = None 13 | self.categorical = None 14 | self.target = None 15 | 16 | def fit(self, df, target=None, categorical=None, numerical=None): 17 | ''' 18 | df: Pandas DataFrame 19 | target: label column, str 20 | categorical: categorical columns, list 21 | numerical: numerical columns, list 22 | ''' 23 | self.target = target 24 | self.categorical = categorical 25 | self.numerical = numerical 26 | 27 | feature_code = 0 28 | for field_index, col in enumerate(categorical): 29 | self.field_index[col] = field_index 30 | vals = df[col].unique() 31 | for val in vals: 32 | if pd.isnull(val): 33 | continue 34 | name = '{}_{}'.format(col, val) 35 | if self.feature_index.get(name, -1) == -1: 36 | self.feature_index[name] = feature_code 37 | feature_code += 1 38 | 39 | for field_index, col in enumerate(numerical, start=len(categorical)): 40 | self.field_index[col] = field_index 41 | self.feature_index[col] = feature_code 42 | feature_code += 1 43 | 44 | return self 45 | 46 | def fit_transform(self, df, target=None): 47 | self.fit(df, target) 48 | return self.transform(df) 49 | 50 | def transform(self, df): 51 | X, y = [], [] 52 | target = self.target 53 | for _, row in tqdm(df.iterrows(), total=len(df)): 54 | feature_tuple = [] 55 | for cat in self.categorical: 56 | if pd.notnull(row[cat]): 57 | feature = '{}_{}'.format(cat, row[cat]) 58 | feature_tuple.append((self.field_index[cat], self.feature_index[feature], 1)) 59 | for num in self.numerical: 60 | if pd.notnull(row[num]): 61 | feature_tuple.append((self.field_index[num], self.feature_index[num], row[num])) 62 | 63 | X.append(feature_tuple) 64 | y.append(row[self.target]) 65 | return X, y 66 | 67 | def transform_convert(self, df): 68 | X, y = self.transform(df) 69 | return FFMData(X, y) 70 | -------------------------------------------------------------------------------- /ffm/utils.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | try: 4 | import cPickle as pickle 5 | except ImportError: 6 | import pickle 7 | 8 | 9 | def save_data(data, path=None): 10 | ''' 11 | save data to pickle format 12 | ''' 13 | if path is None: 14 | path = './data.pkl' 15 | try: 16 | pickle.dump(data, open(path, "wb"), protocol=4) 17 | except: 18 | pickle.dump(data, open(path, "wb"), protocol=2) 19 | print("Save Data to %s Successfully" % path) 20 | 21 | def load_data(path): 22 | ''' 23 | load data from pickle to FFMData 24 | ''' 25 | X, y = pickle.load(open(path, 'rb')) 26 | return X, y 27 | 28 | def save_libffm(X, y, path=None): 29 | ''' 30 | save data to original libffm format 31 | ''' 32 | if path is None: 33 | path = './data.libffm' 34 | convert_func = lambda t: '{}:{}:{}'.format(t[0], t[1], t[2]) 35 | with open(path, 'wt') as f: 36 | for label, data in zip(y, X): 37 | line = "%d " % label + " ".join([convert_func(t) for t in data]) + '\n' 38 | f.write(line) 39 | print("Save Libffm Data to %s Done." % path) 40 | 41 | def load_libffm(path): 42 | ''' 43 | load original libffm data format 44 | ''' 45 | X, y = [], [] 46 | with open(path, 'rt') as f: 47 | for line in f: 48 | line = str.strip(line) 49 | line = line.split(' ') 50 | if len(line) < 2: 51 | continue 52 | y.append(int(line[0])) 53 | l = [] 54 | for t in line[1:]: 55 | t = t.split(':') 56 | tp = tuple([int(t[0]), int(t[1]), float(t[2])]) 57 | l.append(tp) 58 | X.append(l) 59 | return X, y 60 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, Extension 2 | import sys 3 | 4 | sys.dont_write_bytecode = True 5 | os_type = '_WIN32' if sys.platform.startswith('win32') else 'LINUX' 6 | 7 | libffm = Extension('ffm.libffm', 8 | extra_compile_args = ["-Wall", "-O3", "-std=c++11", "-march=native", "-DUSESSE", "-DDEBUG=0", "-D%s" % os_type], 9 | include_dirs = ['libffm'], 10 | sources = ['ffm/ffm-wrapper.cpp', 'libffm/timer.cpp'], 11 | language='c++',) 12 | 13 | 14 | # Please use setup_pip.py for generating and deploying pip installation 15 | # detailed instruction in setup_pip.py 16 | setup(name='ffm', 17 | version='1.0', 18 | description="LibFFM Python Package", 19 | long_description="LibFFM Python Package", 20 | install_requires=[ 21 | 'numpy', 22 | 'scikit-learn', 23 | 'tqdm', 24 | 'pandas' 25 | ], 26 | maintainer='keyunluo', 27 | maintainer_email='streamer.ky@foxmail.com', 28 | zip_safe=False, 29 | packages=['ffm'], 30 | ext_modules = [libffm], 31 | include_package_data=True, 32 | exclude_package_data = { '': ['*.pyc', '*.cpp'] }, 33 | license='BSD 3-clause', 34 | classifiers=['License :: OSI Approved :: BSD 3-clause'], 35 | url='https://github.com/keyunluo/python-libffm' 36 | ) 37 | --------------------------------------------------------------------------------