diff --git a/Prj-Linux/CMakeLists.txt b/Prj-Linux/CMakeLists.txt index 1349664..9539cd2 100644 --- a/Prj-Linux/CMakeLists.txt +++ b/Prj-Linux/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 3.6) project(HyperLPR) -add_subdirectory(hyperlpr) +add_subdirectory(lpr) diff --git a/Prj-Linux/lpr/CMakeLists.txt b/Prj-Linux/lpr/CMakeLists.txt index 2a477b3..02f478a 100644 --- a/Prj-Linux/lpr/CMakeLists.txt +++ b/Prj-Linux/lpr/CMakeLists.txt @@ -3,49 +3,15 @@ project(SwiftPR) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -find_package(OpenCV 3.3.0 REQUIRED) +find_package(OpenCV 3.4.3 REQUIRED) include_directories( ${OpenCV_INCLUDE_DIRS}) include_directories(include) -set(SRC_DETECTION src/PlateDetection.cpp src/util.h include/PlateDetection.h) -set(SRC_FINEMAPPING src/FineMapping.cpp ) -set(SRC_FASTDESKEW src/FastDeskew.cpp ) -set(SRC_SEGMENTATION src/PlateSegmentation.cpp ) -set(SRC_RECOGNIZE src/Recognizer.cpp src/CNNRecognizer.cpp) +set(SRC_DETECTION src/PlateDetection.cpp) +set(SRC_FINETUNE src/FineTune.cpp) +set(SRC_RECOGNIZE src/PlateRecognation.cpp) set(SRC_PIPLINE src/Pipeline.cpp) -set(SRC_SEGMENTATIONFREE src/SegmentationFreeRecognizer.cpp ) - -#set(SOURCE_FILES main.cpp) -#add_executable(HyperLPR_cpp ${SOURCE_FILES}) - -#TEST_DETECTION -add_executable(TEST_Detection ${SRC_DETECTION} tests/test_detection.cpp) -target_link_libraries(TEST_Detection ${OpenCV_LIBS}) - -#TEST_FINEMAPPING -add_executable(TEST_FINEMAPPING ${SRC_FINEMAPPING} tests/test_finemapping.cpp) -target_link_libraries(TEST_FINEMAPPING ${OpenCV_LIBS}) - -#TEST_DESKEW - -add_executable(TEST_FASTDESKEW ${SRC_FASTDESKEW} tests/test_fastdeskew.cpp) -target_link_libraries(TEST_FASTDESKEW ${OpenCV_LIBS}) - -#TEST_SEGMENTATION - -add_executable(TEST_SEGMENTATION ${SRC_SEGMENTATION} ${SRC_RECOGNIZE} tests/test_segmentation.cpp) -target_link_libraries(TEST_SEGMENTATION ${OpenCV_LIBS}) - -#TEST_RECOGNIZATION - -add_executable(TEST_RECOGNIZATION ${SRC_RECOGNIZE} tests/test_recognization.cpp) -target_link_libraries(TEST_RECOGNIZATION ${OpenCV_LIBS}) - -#TEST_SEGMENTATIONFREE -add_executable(TEST_SEGMENTATIONFREE ${SRC_SEGMENTATIONFREE} tests/test_segmentationFree.cpp) -target_link_libraries(TEST_SEGMENTATIONFREE ${OpenCV_LIBS}) #TEST_PIPELINE - -add_executable(TEST_PIPLINE ${SRC_DETECTION} ${SRC_FINEMAPPING} ${SRC_FASTDESKEW} ${SRC_SEGMENTATION} ${SRC_RECOGNIZE} ${SRC_PIPLINE} ${SRC_SEGMENTATIONFREE} tests/test_pipeline.cpp) +add_executable(TEST_PIPLINE ${SRC_DETECTION} ${SRC_FINETUNE} ${SRC_RECOGNIZE} ${SRC_PIPLINE} tests/testPipeLine.cpp) target_link_libraries(TEST_PIPLINE ${OpenCV_LIBS}) diff --git a/Prj-Linux/lpr/include/CNNRecognizer.h b/Prj-Linux/lpr/include/CNNRecognizer.h deleted file mode 100644 index a577733..0000000 --- a/Prj-Linux/lpr/include/CNNRecognizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Jack Yu on 21/10/2017. -// - -#ifndef SWIFTPR_CNNRECOGNIZER_H -#define SWIFTPR_CNNRECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - class CNNRecognizer: public GeneralRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - - CNNRecognizer(std::string prototxt,std::string caffemodel); - label recognizeCharacter(cv::Mat character); - private: - cv::dnn::Net net; - - }; - -} - -#endif //SWIFTPR_CNNRECOGNIZER_H diff --git a/Prj-Linux/lpr/include/FastDeskew.h b/Prj-Linux/lpr/include/FastDeskew.h deleted file mode 100644 index 08359e5..0000000 --- a/Prj-Linux/lpr/include/FastDeskew.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FASTDESKEW_H -#define SWIFTPR_FASTDESKEW_H - -#include -#include -namespace pr{ - - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize); -// cv::Mat spatialTransformer(cv::Mat skewImage); - -}//namepace pr - - -#endif //SWIFTPR_FASTDESKEW_H diff --git a/Prj-Linux/lpr/include/FineMapping.h b/Prj-Linux/lpr/include/FineMapping.h deleted file mode 100644 index 352202e..0000000 --- a/Prj-Linux/lpr/include/FineMapping.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FINEMAPPING_H -#define SWIFTPR_FINEMAPPING_H - -#include -#include - -#include -namespace pr{ - class FineMapping{ - public: - FineMapping(); - - - FineMapping(std::string prototxt,std::string caffemodel); - static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17); - cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding); - - - private: - cv::dnn::Net net; - - }; - - - - -} -#endif //SWIFTPR_FINEMAPPING_H diff --git a/Prj-Linux/lpr/include/Finetune.h b/Prj-Linux/lpr/include/Finetune.h new file mode 100644 index 0000000..760f76a --- /dev/null +++ b/Prj-Linux/lpr/include/Finetune.h @@ -0,0 +1,18 @@ +#ifndef _FINETUNE_H_ +#define _FINETUNE_H_ +#include +#include +#include +namespace pr { + class FineTune { + public: + + FineTune(std::string finetune_prototxt, std::string finetune_caffemodel); + void Finetune(cv::Mat img, cv::Mat &resImg); + void to_refine(cv::Mat img, std::vector pts, cv::Mat &out); + void affine_crop(cv::Mat img, std::vector pts, cv::Mat &out); + private: + cv::dnn::Net FTNet; + }; +}//namespace pr +#endif // !_FINETUNE_H_ diff --git a/Prj-Linux/lpr/include/Pipeline.h b/Prj-Linux/lpr/include/Pipeline.h index 4e82955..0323ea2 100644 --- a/Prj-Linux/lpr/include/Pipeline.h +++ b/Prj-Linux/lpr/include/Pipeline.h @@ -1,60 +1,40 @@ -// -// Created by 庾金科 on 22/10/2017. -// - -#ifndef SWIFTPR_PIPLINE_H -#define SWIFTPR_PIPLINE_H - -#include "PlateDetection.h" -#include "PlateSegmentation.h" -#include "CNNRecognizer.h" -#include "PlateInfo.h" -#include "FastDeskew.h" -#include "FineMapping.h" -#include "Recognizer.h" -#include "SegmentationFreeRecognizer.h" - -namespace pr{ - - const std::vector CH_PLATE_CODE{"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", - "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", - "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", - "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"}; - - - - const int SEGMENTATION_FREE_METHOD = 0; - const int SEGMENTATION_BASED_METHOD = 1; - - class PipelinePR{ - public: - GeneralRecognizer *generalRecognizer; - PlateDetection *plateDetection; - PlateSegmentation *plateSegmentation; - FineMapping *fineMapping; - SegmentationFreeRecognizer *segmentationFreeRecognizer; - - PipelinePR(std::string detector_filename, - std::string finemapping_prototxt,std::string finemapping_caffemodel, - std::string segmentation_prototxt,std::string segmentation_caffemodel, - std::string charRecognization_proto,std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel - ); - ~PipelinePR(); - - - - std::vector plateRes; - std::vector RunPiplineAsImage(cv::Mat plateImage,int method); - - - - - - - - }; - - +#pragma warning(disable:4430) +#ifndef _PIPLINE_H +#define _PIPLINE_H +#include +#include "Finetune.h" +#include "Platedetect.h" +#include "PlateRecognation.h" +//#include "PlateColor.h" +using namespace std; +using namespace cv; +namespace pr +{ + const std::vector CH_PLATE_CODE{ "京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", + "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", + "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", + "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空" }; + + + class PipelinePR { + + public: + PlateDetection *platedetection; + FineTune *finetune; + PlateRecognation *platerecognation; + DBDetection *dbdetection; + + + + PipelinePR(std::string detect_prototxt, std::string detect_caffemodel, + std::string finetune_prototxt, std::string finetune_caffemodel, + std::string platerec_prototxt, std::string platerec_caffemodel, + std::string dbstring); + ~PipelinePR(); + + std::vector plateRes; + std::vector RunPiplineAsImage(cv::Mat srcImage,int IsDB); + + }; } -#endif //SWIFTPR_PIPLINE_H +#endif // !SWIFTPR_PIPLINE_H diff --git a/Prj-Linux/lpr/include/PlateDetection.h b/Prj-Linux/lpr/include/PlateDetection.h deleted file mode 100644 index f799554..0000000 --- a/Prj-Linux/lpr/include/PlateDetection.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEDETECTION_H -#define SWIFTPR_PLATEDETECTION_H - -#include -#include -#include -namespace pr{ - class PlateDetection{ - public: - PlateDetection(std::string filename_cascade); - PlateDetection(); - void LoadModel(std::string filename_cascade); - void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800); - private: - cv::CascadeClassifier cascade; - }; - -}// namespace pr - -#endif //SWIFTPR_PLATEDETECTION_H - diff --git a/Prj-Linux/lpr/include/PlateInfo.h b/Prj-Linux/lpr/include/PlateInfo.h index 270cd9e..c0d5388 100644 --- a/Prj-Linux/lpr/include/PlateInfo.h +++ b/Prj-Linux/lpr/include/PlateInfo.h @@ -1,14 +1,14 @@ -// -// Created by 庾金科 on 20/09/2017. -// - #ifndef SWIFTPR_PLATEINFO_H #define SWIFTPR_PLATEINFO_H #include namespace pr { + typedef std::vector Character; + enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; enum CharType {CHINESE,LETTER,LETTER_NUMS,INVALID}; + + class PlateInfo { public: std::vector> plateChars; @@ -58,7 +58,11 @@ namespace pr { int getPlateType() { return Type; } - + int setPlateType(PlateColor platetype) + { + Type = platetype; + return 0; + } void appendPlateChar(const std::pair &plateChar) { plateChars.push_back(plateChar); @@ -68,6 +72,10 @@ namespace pr { plateCoding.push_back(charProb); } + // cv::Mat getPlateChars(int id) { + // if(id mappingTable) { std::string decode; for(auto plate:plateCoding) { @@ -76,6 +84,10 @@ namespace pr { decode += mappingTable[std::max_element(prob,prob+31) - prob]; confidence+=*std::max_element(prob,prob+31); + + +// std::cout<<*std::max_element(prob,prob+31)< +#include "PlateInfo.h" +namespace pr { + class PlateRecognation { + public: + PlateRecognation(std::string Rec_prototxt, std::string Rec_cafffemodel); + void segmentation_free_recognation(cv::Mat src, pr::PlateInfo &plateinfo); + private: + cv::dnn::Net RecNet; + }; +}//namespace pr +#endif // !_PLATERECOGNATION_H_ + diff --git a/Prj-Linux/lpr/include/PlateSegmentation.h b/Prj-Linux/lpr/include/PlateSegmentation.h deleted file mode 100644 index 1e3515c..0000000 --- a/Prj-Linux/lpr/include/PlateSegmentation.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef SWIFTPR_PLATESEGMENTATION_H -#define SWIFTPR_PLATESEGMENTATION_H - -#include "opencv2/opencv.hpp" -#include -#include "PlateInfo.h" - -namespace pr{ - - - class PlateSegmentation{ - public: - const int PLATE_NORMAL = 6; - const int PLATE_NORMAL_GREEN = 7; - const int DEFAULT_WIDTH = 20; - PlateSegmentation(std::string phototxt,std::string caffemodel); - PlateSegmentation(){} - void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects); - - void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones); - void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair> &candidatePts); - void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects); - void ExtractRegions(PlateInfo &plateInfo,std::vector &rects); - cv::Mat classifyResponse(const cv::Mat &cropped); - private: - cv::dnn::Net net; - - -// RefineRegion() - - }; - -}//namespace pr - -#endif //SWIFTPR_PLATESEGMENTATION_H diff --git a/Prj-Linux/lpr/include/Platedetect.h b/Prj-Linux/lpr/include/Platedetect.h new file mode 100644 index 0000000..2894393 --- /dev/null +++ b/Prj-Linux/lpr/include/Platedetect.h @@ -0,0 +1,23 @@ +#ifndef _PLATEDETECT_H_ +#define _PLATEDETECT_H_ +#include +#include +#include "PlateInfo.h" +namespace pr +{ + class PlateDetection { + public: + PlateDetection(std::string ssd_prototxt, std::string ssd_caffe_model); + void Detectssd(cv::Mat inputImg, std::vector &plateInfos); + private: + cv::dnn::Net ssdNet; + }; + class DBDetection{ + public: + DBDetection(std::string cascadestring); + void DBDetect(cv::Mat inputImg,std::vector &plateInfos,int min_w,int max_w); + private: + cv::CascadeClassifier dbcascade; + }; +}//namespace pr +#endif // !_PLATEDETECT_H_ diff --git a/Prj-Linux/lpr/include/Recognizer.h b/Prj-Linux/lpr/include/Recognizer.h deleted file mode 100644 index 556e42e..0000000 --- a/Prj-Linux/lpr/include/Recognizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by 庾金科 on 20/10/2017. -// - - -#ifndef SWIFTPR_RECOGNIZER_H -#define SWIFTPR_RECOGNIZER_H - -#include "PlateInfo.h" -#include "opencv2/dnn.hpp" -namespace pr{ - typedef cv::Mat label; - class GeneralRecognizer{ - public: - virtual label recognizeCharacter(cv::Mat character) = 0; -// virtual cv::Mat SegmentationFreeForSinglePlate(cv::Mat plate) = 0; - void SegmentBasedSequenceRecognition(PlateInfo &plateinfo); - void SegmentationFreeSequenceRecognition(PlateInfo &plateInfo); - - }; - -} -#endif //SWIFTPR_RECOGNIZER_H diff --git a/Prj-Linux/lpr/include/SegmentationFreeRecognizer.h b/Prj-Linux/lpr/include/SegmentationFreeRecognizer.h deleted file mode 100644 index 583899e..0000000 --- a/Prj-Linux/lpr/include/SegmentationFreeRecognizer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// Created by 庾金科 on 28/11/2017. -// - -#ifndef SWIFTPR_SEGMENTATIONFREERECOGNIZER_H -#define SWIFTPR_SEGMENTATIONFREERECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - - - class SegmentationFreeRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - const int CHAR_LEN = 84; - - SegmentationFreeRecognizer(std::string prototxt,std::string caffemodel); - std::pair SegmentationFreeForSinglePlate(cv::Mat plate,std::vector mapping_table); - - - private: - cv::dnn::Net net; - - }; - -} -#endif //SWIFTPR_SEGMENTATIONFREERECOGNIZER_H diff --git a/Prj-Linux/lpr/include/niBlackThreshold.h b/Prj-Linux/lpr/include/niBlackThreshold.h deleted file mode 100644 index fc657e9..0000000 --- a/Prj-Linux/lpr/include/niBlackThreshold.h +++ /dev/null @@ -1,103 +0,0 @@ -// -// Created by 庾金科 on 26/10/2017. -// - -#ifndef SWIFTPR_NIBLACKTHRESHOLD_H -#define SWIFTPR_NIBLACKTHRESHOLD_H - - -#include -using namespace cv; - -enum LocalBinarizationMethods{ - BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 . - BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 . - BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 . - BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 . -}; - - -void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue, - int type, int blockSize, double k, int binarizationMethod ) -{ - // Input grayscale image - Mat src = _src.getMat(); - CV_Assert(src.channels() == 1); - CV_Assert(blockSize % 2 == 1 && blockSize > 1); - if (binarizationMethod == BINARIZATION_SAUVOLA) { - CV_Assert(src.depth() == CV_8U); - } - type &= THRESH_MASK; - // Compute local threshold (T = mean + k * stddev) - // using mean and standard deviation in the neighborhood of each pixel - // (intermediate calculations are done with floating-point precision) - Mat test; - Mat thresh; - { - // note that: Var[X] = E[X^2] - E[X]^2 - Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum; - double srcMin, stddevMax; - boxFilter(src, mean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - variance = sqmean - mean.mul(mean); - sqrt(variance, stddev); - switch (binarizationMethod) - { - case BINARIZATION_NIBLACK: - thresh = mean + stddev * static_cast(k); - - break; - case BINARIZATION_SAUVOLA: - thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.)); - break; - case BINARIZATION_WOLF: - minMaxIdx(src, &srcMin,NULL); - minMaxIdx(stddev, NULL, &stddevMax); - thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax); - break; - case BINARIZATION_NICK: - sqrt(variance + sqmean, sqrtVarianceMeanSum); - thresh = mean + static_cast(k) * sqrtVarianceMeanSum; - break; - default: - CV_Error( CV_StsBadArg, "Unknown binarization method" ); - break; - } - thresh.convertTo(thresh, src.depth()); - - thresh.convertTo(test, src.depth()); - } - // Prepare output image - _dst.create(src.size(), src.type()); - Mat dst = _dst.getMat(); - CV_Assert(src.data != dst.data); // no inplace processing - // Apply thresholding: ( pixel > threshold ) ? foreground : background - Mat mask; - switch (type) - { - case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0 - case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval - compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE)); - dst.setTo(0); - dst.setTo(maxValue, mask); - break; - case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src - compare(src, thresh, mask, CMP_GT); - src.copyTo(dst); - thresh.copyTo(dst, mask); - break; - case THRESH_TOZERO: // dst = (src > thresh) ? src : 0 - case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src - compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE)); - dst.setTo(0); - src.copyTo(dst, mask); - break; - default: - CV_Error( CV_StsBadArg, "Unknown threshold type" ); - break; - } -} - -#endif //SWIFTPR_NIBLACKTHRESHOLD_H diff --git a/Prj-Linux/lpr/model/CharacterRecognization.caffemodel b/Prj-Linux/lpr/model/CharacterRecognization.caffemodel deleted file mode 100644 index d424408..0000000 Binary files a/Prj-Linux/lpr/model/CharacterRecognization.caffemodel and /dev/null differ diff --git a/Prj-Linux/lpr/model/CharacterRecognization.prototxt b/Prj-Linux/lpr/model/CharacterRecognization.prototxt deleted file mode 100644 index 91aa29e..0000000 --- a/Prj-Linux/lpr/model/CharacterRecognization.prototxt +++ /dev/null @@ -1,123 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 1 -input_dim: 30 -input_dim: 14 -layer { - name: "conv2d_1" - type: "Convolution" - bottom: "data" - top: "conv2d_1" - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_1" - type: "ReLU" - bottom: "conv2d_1" - top: "activation_1" -} -layer { - name: "max_pooling2d_1" - type: "Pooling" - bottom: "activation_1" - top: "max_pooling2d_1" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_2" - type: "Convolution" - bottom: "max_pooling2d_1" - top: "conv2d_2" - convolution_param { - num_output: 64 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_2" - type: "ReLU" - bottom: "conv2d_2" - top: "activation_2" -} -layer { - name: "max_pooling2d_2" - type: "Pooling" - bottom: "activation_2" - top: "max_pooling2d_2" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_3" - type: "Convolution" - bottom: "max_pooling2d_2" - top: "conv2d_3" - convolution_param { - num_output: 128 - bias_term: true - pad: 0 - kernel_size: 2 - stride: 1 - } -} -layer { - name: "activation_3" - type: "ReLU" - bottom: "conv2d_3" - top: "activation_3" -} -layer { - name: "flatten_1" - type: "Flatten" - bottom: "activation_3" - top: "flatten_1" -} -layer { - name: "dense_1" - type: "InnerProduct" - bottom: "flatten_1" - top: "dense_1" - inner_product_param { - num_output: 256 - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "dense_1" - top: "relu2" -} -layer { - name: "dense2" - type: "InnerProduct" - bottom: "relu2" - top: "dense2" - inner_product_param { - num_output: 65 - } -} - -layer { - name: "prob" - type: "Softmax" - bottom: "dense2" - top: "prob" -} \ No newline at end of file diff --git a/Prj-Linux/lpr/model/HorizonalFinemapping.caffemodel b/Prj-Linux/lpr/model/HorizonalFinemapping.caffemodel index 1af5863..94866be 100644 Binary files a/Prj-Linux/lpr/model/HorizonalFinemapping.caffemodel and b/Prj-Linux/lpr/model/HorizonalFinemapping.caffemodel differ diff --git a/Prj-Linux/lpr/model/README.md b/Prj-Linux/lpr/model/README.md new file mode 100644 index 0000000..e3d869a --- /dev/null +++ b/Prj-Linux/lpr/model/README.md @@ -0,0 +1,11 @@ +将/hyperlpr_pip_pkg/hyperlpr/models/dnn/目录下的 + +mininet_ssd_v1.caffemodel +mininet_ssd_v1.prototxt +refinenet.caffemodel +refinenet.prototxt +SegmenationFree-Inception.caffemodel +SegmenationFree-Inception.prototxt + + +放置在该目录 \ No newline at end of file diff --git a/Prj-Linux/lpr/model/SegmenationFree-Inception.caffemodel b/Prj-Linux/lpr/model/SegmenationFree-Inception.caffemodel index 311ee17..65a9954 100644 Binary files a/Prj-Linux/lpr/model/SegmenationFree-Inception.caffemodel and b/Prj-Linux/lpr/model/SegmenationFree-Inception.caffemodel differ diff --git a/Prj-Linux/lpr/model/Segmentation.caffemodel b/Prj-Linux/lpr/model/Segmentation.caffemodel deleted file mode 100644 index 208269d..0000000 Binary files a/Prj-Linux/lpr/model/Segmentation.caffemodel and /dev/null differ diff --git a/Prj-Linux/lpr/model/Segmentation.prototxt b/Prj-Linux/lpr/model/Segmentation.prototxt deleted file mode 100644 index 45c6829..0000000 --- a/Prj-Linux/lpr/model/Segmentation.prototxt +++ /dev/null @@ -1,114 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 1 -input_dim: 22 -input_dim: 22 -layer { - name: "conv2d_12" - type: "Convolution" - bottom: "data" - top: "conv2d_12" - convolution_param { - num_output: 16 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_18" - type: "ReLU" - bottom: "conv2d_12" - top: "activation_18" -} -layer { - name: "max_pooling2d_10" - type: "Pooling" - bottom: "activation_18" - top: "max_pooling2d_10" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_13" - type: "Convolution" - bottom: "max_pooling2d_10" - top: "conv2d_13" - convolution_param { - num_output: 16 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_19" - type: "ReLU" - bottom: "conv2d_13" - top: "activation_19" -} -layer { - name: "max_pooling2d_11" - type: "Pooling" - bottom: "activation_19" - top: "max_pooling2d_11" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "flatten_6" - type: "Flatten" - bottom: "max_pooling2d_11" - top: "flatten_6" -} -layer { - name: "dense_9" - type: "InnerProduct" - bottom: "flatten_6" - top: "dense_9" - inner_product_param { - num_output: 256 - } -} -layer { - name: "dropout_9" - type: "Dropout" - bottom: "dense_9" - top: "dropout_9" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "activation_20" - type: "ReLU" - bottom: "dropout_9" - top: "activation_20" -} -layer { - name: "dense_10" - type: "InnerProduct" - bottom: "activation_20" - top: "dense_10" - inner_product_param { - num_output: 3 - } -} - - - layer { - name: "prob" - type: "Softmax" - bottom: "dense_10" - top: "prob" -} \ No newline at end of file diff --git a/Prj-Linux/lpr/model/cascade.xml b/Prj-Linux/lpr/model/cascade.xml deleted file mode 100644 index 277775b..0000000 --- a/Prj-Linux/lpr/model/cascade.xml +++ /dev/null @@ -1,12117 +0,0 @@ - - - - BOOST - HAAR - 13 - 51 - - GAB - 9.9900001287460327e-001 - 5.0000000000000000e-001 - 9.4999999999999996e-001 - 1 - 100 - - 0 - 1 - ALL - 20 - - - <_> - 8 - -1.9158077239990234e+000 - - <_> - - 0 -1 344 -8.1478752195835114e-002 - - 6.2639594078063965e-001 -8.1564724445343018e-001 - <_> - - 0 -1 701 -1.2957378290593624e-002 - - 7.7114331722259521e-001 -4.9504086375236511e-001 - <_> - - 0 -1 687 -9.2470366507768631e-003 - - 8.1202191114425659e-001 -2.8070560097694397e-001 - <_> - - 0 -1 614 1.2374955229461193e-002 - - -2.5367051362991333e-001 7.3795551061630249e-001 - <_> - - 0 -1 299 -4.7858944162726402e-003 - - 7.1150565147399902e-001 -3.0462509393692017e-001 - <_> - - 0 -1 297 3.8920845836400986e-003 - - -2.8375166654586792e-001 7.3174893856048584e-001 - <_> - - 0 -1 814 -8.8258963078260422e-003 - - 7.5333666801452637e-001 -1.9880458712577820e-001 - <_> - - 0 -1 845 -6.7375516518950462e-003 - - 7.5299704074859619e-001 -2.3570337891578674e-001 - - <_> - 12 - -2.2599112987518311e+000 - - <_> - - 0 -1 577 -1.4449171721935272e-002 - - 5.5890566110610962e-001 -7.6307392120361328e-001 - <_> - - 0 -1 364 -3.8289055228233337e-002 - - 5.1702296733856201e-001 -5.7946079969406128e-001 - <_> - - 0 -1 124 -1.4895259402692318e-002 - - 6.1277741193771362e-001 -3.2827928662300110e-001 - <_> - - 0 -1 579 8.3044255152344704e-003 - - -3.3253005146980286e-001 7.2171914577484131e-001 - <_> - - 0 -1 314 6.0594235546886921e-003 - - -3.2760250568389893e-001 4.9508789181709290e-001 - <_> - - 0 -1 699 -6.8011749535799026e-003 - - 6.6238498687744141e-001 -2.4112002551555634e-001 - <_> - - 0 -1 295 -1.1183910071849823e-002 - - 7.1757602691650391e-001 -2.0989039540290833e-001 - <_> - - 0 -1 767 1.3139605522155762e-002 - - -1.8845251202583313e-001 6.7252415418624878e-001 - <_> - - 0 -1 689 -6.1739999800920486e-003 - - 6.3675141334533691e-001 -2.4877758324146271e-001 - <_> - - 0 -1 230 -9.2421043664216995e-003 - - 6.5140277147293091e-001 -2.1352872252464294e-001 - <_> - - 0 -1 48 -1.0526084899902344e-001 - - -9.0194213390350342e-001 1.8239501118659973e-001 - <_> - - 0 -1 281 1.2764739990234375e-001 - - 1.6771897673606873e-001 -7.7668786048889160e-001 - - <_> - 14 - -2.6526770591735840e+000 - - <_> - - 0 -1 829 -1.3842798769474030e-002 - - 4.1735208034515381e-001 -7.4295550584793091e-001 - <_> - - 0 -1 97 1.4765590429306030e-002 - - -5.1845699548721313e-001 5.0078016519546509e-001 - <_> - - 0 -1 21 3.1671046745032072e-003 - - -3.2739469408988953e-001 5.1253867149353027e-001 - <_> - - 0 -1 812 -9.5202140510082245e-003 - - 7.1236211061477661e-001 -2.3344238102436066e-001 - <_> - - 0 -1 703 -1.2149499729275703e-002 - - 6.4311891794204712e-001 -2.5991156697273254e-001 - <_> - - 0 -1 385 -1.0172967612743378e-001 - - -7.3093742132186890e-001 2.3339104652404785e-001 - <_> - - 0 -1 858 -6.2750680372118950e-003 - - 6.4128917455673218e-001 -2.3738093674182892e-001 - <_> - - 0 -1 518 1.5905253589153290e-002 - - -2.3312157392501831e-001 5.6561905145645142e-001 - <_> - - 0 -1 873 -5.6511810980737209e-003 - - 6.3098442554473877e-001 -2.2128470242023468e-001 - <_> - - 0 -1 229 1.0334834456443787e-002 - - -1.6205528378486633e-001 7.1688497066497803e-001 - <_> - - 0 -1 373 -1.4500595629215240e-002 - - 5.2634650468826294e-001 -2.5339555740356445e-001 - <_> - - 0 -1 720 8.4515195339918137e-003 - - -1.9005575776100159e-001 6.2645190954208374e-001 - <_> - - 0 -1 519 1.6612716019153595e-002 - - -1.9349065423011780e-001 6.6134274005889893e-001 - <_> - - 0 -1 561 1.0179553180932999e-002 - - -1.9179263710975647e-001 6.1396795511245728e-001 - - <_> - 16 - -2.2411971092224121e+000 - - <_> - - 0 -1 344 -9.5315366983413696e-002 - - 2.0634920895099640e-001 -7.6994550228118896e-001 - <_> - - 0 -1 577 -1.1904314160346985e-002 - - 4.6030580997467041e-001 -4.5124572515487671e-001 - <_> - - 0 -1 736 8.0967023968696594e-003 - - -2.9279080033302307e-001 5.1358801126480103e-001 - <_> - - 0 -1 766 -1.4768393710255623e-002 - - 6.9709998369216919e-001 -1.9789521396160126e-001 - <_> - - 0 -1 332 -7.3709283024072647e-003 - - 6.4356821775436401e-001 -1.9384047389030457e-001 - <_> - - 0 -1 331 7.4571794830262661e-003 - - -2.0553122460842133e-001 6.7929607629776001e-001 - <_> - - 0 -1 943 5.8717206120491028e-003 - - -1.9075798988342285e-001 6.3178658485412598e-001 - <_> - - 0 -1 563 -6.3720787875354290e-003 - - 6.1133956909179688e-001 -1.9197526574134827e-001 - <_> - - 0 -1 185 -1.7508253455162048e-002 - - 5.5003905296325684e-001 -2.0409923791885376e-001 - <_> - - 0 -1 539 -4.2271558195352554e-003 - - 5.9483224153518677e-001 -2.0080061256885529e-001 - <_> - - 0 -1 919 5.0116949714720249e-003 - - -1.8873518705368042e-001 5.8758223056793213e-001 - <_> - - 0 -1 298 8.4183514118194580e-002 - - 1.9158974289894104e-001 -7.3058295249938965e-001 - <_> - - 0 -1 776 4.5591969974339008e-003 - - -2.1568548679351807e-001 5.4940956830978394e-001 - <_> - - 0 -1 776 -3.6774221807718277e-003 - - 6.5714693069458008e-001 -2.3908025026321411e-001 - <_> - - 0 -1 844 1.3156082481145859e-002 - - -1.6889381408691406e-001 5.4372692108154297e-001 - <_> - - 0 -1 508 1.2298718094825745e-002 - - -1.7204846441745758e-001 5.3114622831344604e-001 - - <_> - 20 - -2.3278577327728271e+000 - - <_> - - 0 -1 684 -4.2540580034255981e-002 - - 2.4365724623203278e-001 -7.2478657960891724e-001 - <_> - - 0 -1 317 -2.1006479859352112e-002 - - 3.9405155181884766e-001 -5.1031738519668579e-001 - <_> - - 0 -1 13 1.2750471010804176e-002 - - -2.6155433058738708e-001 5.3219014406204224e-001 - <_> - - 0 -1 12 -1.0928934812545776e-001 - - -7.9762983322143555e-001 1.6522131860256195e-001 - <_> - - 0 -1 742 -8.2451943308115005e-003 - - 6.1570894718170166e-001 -1.6545474529266357e-001 - <_> - - 0 -1 651 -6.1263595707714558e-003 - - 6.5689104795455933e-001 -1.6943360865116119e-001 - <_> - - 0 -1 650 5.0333887338638306e-003 - - -1.9622130692005157e-001 5.7385104894638062e-001 - <_> - - 0 -1 34 1.0666935704648495e-002 - - -2.1881586313247681e-001 4.5024806261062622e-001 - <_> - - 0 -1 291 -1.0632696561515331e-002 - - 6.3769024610519409e-001 -1.6428084671497345e-001 - <_> - - 0 -1 237 -1.4020981267094612e-002 - - 6.1583393812179565e-001 -1.6708594560623169e-001 - <_> - - 0 -1 765 1.2589931488037109e-002 - - -2.0485720038414001e-001 4.7809442877769470e-001 - <_> - - 0 -1 753 -1.3003132306039333e-002 - - 6.5572524070739746e-001 -1.6035726666450500e-001 - <_> - - 0 -1 222 -5.7425271719694138e-002 - - -8.2782661914825439e-001 1.4296714961528778e-001 - <_> - - 0 -1 833 -3.7263054400682449e-003 - - 4.9777820706367493e-001 -2.1036401391029358e-001 - <_> - - 0 -1 825 1.2980616651475430e-002 - - -1.7779336869716644e-001 6.1292153596878052e-001 - <_> - - 0 -1 276 -3.4886042121797800e-003 - - 4.1184583306312561e-001 -2.0970273017883301e-001 - <_> - - 0 -1 813 -1.1452829465270042e-002 - - 5.6084501743316650e-001 -1.5244032442569733e-001 - <_> - - 0 -1 321 3.7844986654818058e-003 - - -2.8913837671279907e-001 2.7224406599998474e-001 - <_> - - 0 -1 876 -4.7596222721040249e-003 - - 5.2785235643386841e-001 -1.5034112334251404e-001 - <_> - - 0 -1 896 -1.7377159092575312e-003 - - 5.5644094944000244e-001 -2.0121455192565918e-001 - - <_> - 28 - -2.3750255107879639e+000 - - <_> - - 0 -1 347 -1.0104553401470184e-001 - - 1.3032685220241547e-001 -7.3142945766448975e-001 - <_> - - 0 -1 596 -1.8494745716452599e-002 - - 5.6178814172744751e-001 -3.3690422773361206e-001 - <_> - - 0 -1 629 1.0897371917963028e-002 - - -2.6694682240486145e-001 4.6661883592605591e-001 - <_> - - 0 -1 839 8.4953904151916504e-003 - - -2.0583645999431610e-001 4.6663123369216919e-001 - <_> - - 0 -1 44 6.3092201948165894e-002 - - 1.2652839720249176e-001 -7.4331611394882202e-001 - <_> - - 0 -1 305 -4.8850802704691887e-003 - - 5.1036185026168823e-001 -1.7127794027328491e-001 - <_> - - 0 -1 295 -1.2086534872651100e-002 - - 5.3874844312667847e-001 -1.7047831416130066e-001 - <_> - - 0 -1 163 -4.0194295346736908e-002 - - 6.0334587097167969e-001 -1.8293543159961700e-001 - <_> - - 0 -1 265 -9.7945984452962875e-003 - - 4.8900371789932251e-001 -1.7746040225028992e-001 - <_> - - 0 -1 597 6.7133754491806030e-003 - - -1.8603576719760895e-001 4.9050629138946533e-001 - <_> - - 0 -1 128 1.5135381370782852e-002 - - 1.5555633604526520e-001 -6.6330802440643311e-001 - <_> - - 0 -1 480 7.4470564723014832e-003 - - 1.2465479969978333e-001 -6.3456755876541138e-001 - <_> - - 0 -1 559 -1.7742723226547241e-002 - - 4.8904901742935181e-001 -1.6264849901199341e-001 - <_> - - 0 -1 821 -1.5695080161094666e-002 - - 4.1306030750274658e-001 -1.9036959111690521e-001 - <_> - - 0 -1 819 -4.3798778206110001e-003 - - 4.8768985271453857e-001 -1.5558160841464996e-001 - <_> - - 0 -1 836 -4.8424974083900452e-003 - - 4.6657896041870117e-001 -1.6847038269042969e-001 - <_> - - 0 -1 90 7.4649546295404434e-003 - - -1.7167872190475464e-001 4.3042477965354919e-001 - <_> - - 0 -1 883 5.1524871960282326e-003 - - -1.4530055224895477e-001 4.7056230902671814e-001 - <_> - - 0 -1 890 9.8812151700258255e-003 - - -1.4264582097530365e-001 5.0057184696197510e-001 - <_> - - 0 -1 393 -3.0181273818016052e-002 - - -6.5408444404602051e-001 1.0674032568931580e-001 - <_> - - 0 -1 694 9.2962123453617096e-003 - - -1.4381234347820282e-001 4.9470436573028564e-001 - <_> - - 0 -1 77 -7.6252631843090057e-003 - - -5.2033776044845581e-001 1.3706678152084351e-001 - <_> - - 0 -1 801 -1.1497072875499725e-002 - - 3.4252560138702393e-001 -1.9132094085216522e-001 - <_> - - 0 -1 670 -4.4177635572850704e-003 - - 4.6443006396293640e-001 -1.3389693200588226e-001 - <_> - - 0 -1 647 -2.4282713420689106e-003 - - 4.1310977935791016e-001 -1.3224220275878906e-001 - <_> - - 0 -1 686 1.0079141706228256e-002 - - -1.3342842459678650e-001 5.5696302652359009e-001 - <_> - - 0 -1 570 3.5632357001304626e-002 - - 9.1464981436729431e-002 -7.0863521099090576e-001 - <_> - - 0 -1 840 -1.9085695967078209e-003 - - 2.6823535561561584e-001 -1.9665902853012085e-001 - - <_> - 34 - -2.5052807331085205e+000 - - <_> - - 0 -1 268 1.5469970181584358e-002 - - -6.7369276285171509e-001 3.0393996834754944e-001 - <_> - - 0 -1 700 -2.2830318659543991e-002 - - 4.9829742312431335e-001 -3.5193654894828796e-001 - <_> - - 0 -1 521 1.8841657787561417e-002 - - -2.1037499606609344e-001 4.8866468667984009e-001 - <_> - - 0 -1 262 1.1541565880179405e-002 - - -1.8598809838294983e-001 5.2916365861892700e-001 - <_> - - 0 -1 219 -2.4122973904013634e-002 - - 5.2869701385498047e-001 -1.6163693368434906e-001 - <_> - - 0 -1 6 1.4711560681462288e-002 - - -2.5017279386520386e-001 3.2298168540000916e-001 - <_> - - 0 -1 520 -1.5706669539213181e-002 - - 5.0967657566070557e-001 -1.5732303261756897e-001 - <_> - - 0 -1 948 -4.1158739477396011e-003 - - 4.9462157487869263e-001 -1.2155625224113464e-001 - <_> - - 0 -1 770 -1.0694706812500954e-002 - - 6.1407995223999023e-001 -1.2956763803958893e-001 - <_> - - 0 -1 387 -3.6484465003013611e-002 - - 3.1439977884292603e-001 -2.2812500596046448e-001 - <_> - - 0 -1 345 5.4322574287652969e-002 - - -8.7467961013317108e-002 7.1243762969970703e-001 - <_> - - 0 -1 250 -8.9914854615926743e-003 - - 3.7887179851531982e-001 -1.7758503556251526e-001 - <_> - - 0 -1 52 1.5299601480364799e-002 - - 1.5142892301082611e-001 -5.4104751348495483e-001 - <_> - - 0 -1 792 -6.0345130041241646e-003 - - 3.8750106096267700e-001 -1.7849484086036682e-001 - <_> - - 0 -1 610 -2.0873975008726120e-003 - - -5.5879276990890503e-001 1.3142852485179901e-001 - <_> - - 0 -1 642 -2.0619889255613089e-003 - - -5.1919680833816528e-001 1.0321786254644394e-001 - <_> - - 0 -1 259 3.6544300615787506e-002 - - -1.6965624690055847e-001 3.9208900928497314e-001 - <_> - - 0 -1 382 1.4528267784044147e-003 - - -3.4218248724937439e-001 1.8518145382404327e-001 - <_> - - 0 -1 196 -2.6956547051668167e-002 - - -8.3279663324356079e-001 7.7962644398212433e-002 - <_> - - 0 -1 533 -1.0518556460738182e-002 - - 4.5597425103187561e-001 -1.4934070408344269e-001 - <_> - - 0 -1 740 5.4534617811441422e-003 - - -1.5347433090209961e-001 3.5846599936485291e-001 - <_> - - 0 -1 534 -5.6011183187365532e-003 - - 3.6314359307289124e-001 -1.5886513888835907e-001 - <_> - - 0 -1 927 1.0399374179542065e-002 - - -1.1159978061914444e-001 4.9891829490661621e-001 - <_> - - 0 -1 41 2.6076715439558029e-002 - - -2.1667334437370300e-001 2.5659701228141785e-001 - <_> - - 0 -1 715 -7.3732812888920307e-003 - - 5.8327084779739380e-001 -1.0727929323911667e-001 - <_> - - 0 -1 882 -5.6875580921769142e-003 - - 4.0847277641296387e-001 -1.2561751902103424e-001 - <_> - - 0 -1 891 1.3321589678525925e-002 - - -1.2537255883216858e-001 4.4824957847595215e-001 - <_> - - 0 -1 168 -1.8619614839553833e-001 - - -7.1703630685806274e-001 7.7993653714656830e-002 - <_> - - 0 -1 190 3.3796064555644989e-002 - - -1.3172915577888489e-001 4.1404765844345093e-001 - <_> - - 0 -1 530 4.0178038179874420e-003 - - -1.8571788072586060e-001 2.7401688694953918e-001 - <_> - - 0 -1 555 1.6669608652591705e-002 - - 7.5644508004188538e-002 -6.8869042396545410e-001 - <_> - - 0 -1 406 4.7584358602762222e-002 - - 8.2619942724704742e-002 -5.8818364143371582e-001 - <_> - - 0 -1 537 2.5073587894439697e-003 - - -1.4251622557640076e-001 3.3965954184532166e-001 - <_> - - 0 -1 638 1.4513431116938591e-002 - - -1.4366999268531799e-001 3.2603174448013306e-001 - - <_> - 42 - -2.4546041488647461e+000 - - <_> - - 0 -1 340 -9.4746887683868408e-002 - - 1.1788145639002323e-002 -7.5736826658248901e-001 - <_> - - 0 -1 577 -1.5985764563083649e-002 - - 3.4271994233131409e-001 -3.7916901707649231e-001 - <_> - - 0 -1 630 1.9708804786205292e-002 - - -2.2393602132797241e-001 4.9053853750228882e-001 - <_> - - 0 -1 96 1.6178630292415619e-002 - - -2.0412905514240265e-001 3.4104099869728088e-001 - <_> - - 0 -1 319 1.0606624186038971e-001 - - -1.0737416148185730e-001 6.7443412542343140e-001 - <_> - - 0 -1 83 -6.7316116765141487e-003 - - 3.4080076217651367e-001 -2.2706831991672516e-001 - <_> - - 0 -1 634 4.0689492598176003e-003 - - -1.4782951772212982e-001 4.1778662800788879e-001 - <_> - - 0 -1 686 -1.3378994539380074e-002 - - 6.8167924880981445e-001 -1.0507009923458099e-001 - <_> - - 0 -1 786 -1.8129471689462662e-002 - - 5.0995999574661255e-001 -1.3223616778850555e-001 - <_> - - 0 -1 646 -8.9250747114419937e-003 - - 5.0829160213470459e-001 -1.0886437445878983e-001 - <_> - - 0 -1 711 6.1906888149678707e-003 - - -1.1881013214588165e-001 4.9430772662162781e-001 - <_> - - 0 -1 575 -3.4704633057117462e-002 - - -6.8778192996978760e-001 9.2318676412105560e-002 - <_> - - 0 -1 189 -9.7849890589714050e-003 - - 2.0124578475952148e-001 -2.8525698184967041e-001 - <_> - - 0 -1 479 1.4655515551567078e-003 - - 1.0351686179637909e-001 -6.3454014062881470e-001 - <_> - - 0 -1 513 -3.5405270755290985e-002 - - -7.6147061586380005e-001 6.0781378298997879e-002 - <_> - - 0 -1 23 9.1620441526174545e-003 - - 8.2090407609939575e-002 -5.3804397583007813e-001 - <_> - - 0 -1 838 6.7096878774464130e-003 - - -1.1302943527698517e-001 4.6365195512771606e-001 - <_> - - 0 -1 820 -1.0268911719322205e-002 - - 5.8097857236862183e-001 -1.0859654098749161e-001 - <_> - - 0 -1 441 2.9750142246484756e-002 - - 9.3299955129623413e-002 -5.4268807172775269e-001 - <_> - - 0 -1 726 -5.5990684777498245e-003 - - 4.9949660897254944e-001 -1.0594012588262558e-001 - <_> - - 0 -1 714 4.8061953857541084e-003 - - -1.1477116495370865e-001 4.3569833040237427e-001 - <_> - - 0 -1 637 -4.0460027754306793e-002 - - -7.7711206674575806e-001 7.3132880032062531e-002 - <_> - - 0 -1 53 4.5344540849328041e-003 - - -1.6310065984725952e-001 3.0750447511672974e-001 - <_> - - 0 -1 479 -1.4339694753289223e-003 - - -5.2921229600906372e-001 8.8739573955535889e-002 - <_> - - 0 -1 396 -4.5565411448478699e-002 - - -7.4928385019302368e-001 4.8912040889263153e-002 - <_> - - 0 -1 330 -8.3342632278800011e-003 - - 4.6582534909248352e-001 -1.0161897540092468e-001 - <_> - - 0 -1 834 -1.0381949134171009e-002 - - 3.0994066596031189e-001 -1.3267418742179871e-001 - <_> - - 0 -1 831 1.6984764486551285e-002 - - -9.9871687591075897e-002 4.9527561664581299e-001 - <_> - - 0 -1 376 -1.3278885744512081e-003 - - 3.6983770132064819e-001 -1.1738168448209763e-001 - <_> - - 0 -1 760 -3.1804253812879324e-003 - - -8.9759206771850586e-001 4.3921347707509995e-002 - <_> - - 0 -1 828 -1.9149896688759327e-003 - - 1.9146692752838135e-001 -2.0268803834915161e-001 - <_> - - 0 -1 841 -1.8405792070552707e-003 - - 2.1319428086280823e-001 -1.8382850289344788e-001 - <_> - - 0 -1 259 3.5366363823413849e-002 - - -1.2205254286527634e-001 3.0300119519233704e-001 - <_> - - 0 -1 354 -3.7630870938301086e-003 - - 3.0492320656776428e-001 -1.2932489812374115e-001 - <_> - - 0 -1 732 -1.1243980843573809e-003 - - -4.9750825762748718e-001 8.0560393631458282e-002 - <_> - - 0 -1 749 -2.2356058470904827e-003 - - -6.7946660518646240e-001 5.2887793630361557e-002 - <_> - - 0 -1 536 -2.2717624902725220e-002 - - 4.2686942219734192e-001 -1.0260385274887085e-001 - <_> - - 0 -1 280 9.2372611165046692e-002 - - 7.9670898616313934e-002 -5.2335608005523682e-001 - <_> - - 0 -1 658 -1.0431142151355743e-001 - - -7.4446302652359009e-001 4.6288352459669113e-002 - <_> - - 0 -1 944 7.4872868135571480e-003 - - -1.1977240443229675e-001 3.1791850924491882e-001 - <_> - - 0 -1 228 -2.4358350783586502e-002 - - 1.7944122850894928e-001 -2.0157346129417419e-001 - <_> - - 0 -1 47 4.9624212086200714e-002 - - -1.0701860487461090e-001 3.7854740023612976e-001 - - <_> - 50 - -2.6502745151519775e+000 - - <_> - - 0 -1 431 2.1381884813308716e-002 - - -7.6310330629348755e-001 -7.8235723078250885e-002 - <_> - - 0 -1 623 9.7743803635239601e-003 - - -3.8874423503875732e-001 2.9614463448524475e-001 - <_> - - 0 -1 19 2.9336847364902496e-002 - - -2.1392610669136047e-001 4.4257661700248718e-001 - <_> - - 0 -1 645 1.2054111808538437e-002 - - -1.2168737500905991e-001 6.5890479087829590e-001 - <_> - - 0 -1 392 1.1729352176189423e-002 - - -1.2235984951257706e-001 4.8555457592010498e-001 - <_> - - 0 -1 588 -1.0436945594847202e-003 - - -6.1764669418334961e-001 1.1390741914510727e-001 - <_> - - 0 -1 71 -2.5775061920285225e-002 - - -6.0323065519332886e-001 1.2372459471225739e-001 - <_> - - 0 -1 872 -4.0599796921014786e-003 - - 3.5508742928504944e-001 -1.9819863140583038e-001 - <_> - - 0 -1 643 -1.9134972244501114e-002 - - 4.7154670953750610e-001 -1.4655594527721405e-001 - <_> - - 0 -1 483 6.5218633972108364e-003 - - 1.2207052111625671e-001 -6.0890328884124756e-001 - <_> - - 0 -1 757 -1.4126582071185112e-002 - - 3.3305764198303223e-001 -1.8242211639881134e-001 - <_> - - 0 -1 565 -8.3793615922331810e-003 - - 4.6099957823753357e-001 -1.0809499770402908e-001 - <_> - - 0 -1 455 -1.2584301875904202e-003 - - -5.1634973287582397e-001 1.0520447790622711e-001 - <_> - - 0 -1 203 -5.1234811544418335e-002 - - -7.5237458944320679e-001 5.3416907787322998e-002 - <_> - - 0 -1 584 1.6728173941373825e-002 - - -1.4094479382038116e-001 3.8169395923614502e-001 - <_> - - 0 -1 184 -4.5198453590273857e-003 - - 3.0100575089454651e-001 -1.6970130801200867e-001 - <_> - - 0 -1 686 1.0796479880809784e-002 - - -1.1680302023887634e-001 4.6733006834983826e-001 - <_> - - 0 -1 860 5.4673422127962112e-003 - - -1.3090577721595764e-001 3.4922021627426147e-001 - <_> - - 0 -1 902 6.2447679229080677e-003 - - -1.0570991784334183e-001 4.4209754467010498e-001 - <_> - - 0 -1 892 -8.6985006928443909e-003 - - 4.4582247734069824e-001 -1.1208640784025192e-001 - <_> - - 0 -1 86 5.8012232184410095e-002 - - 5.6753028184175491e-002 -7.8348731994628906e-001 - <_> - - 0 -1 158 -1.9159330055117607e-002 - - 2.1710830926895142e-001 -2.1206925809383392e-001 - <_> - - 0 -1 346 1.4331589639186859e-001 - - -6.5506041049957275e-002 8.3924996852874756e-001 - <_> - - 0 -1 327 -7.4841668829321861e-003 - - 4.4598889350891113e-001 -8.4189794957637787e-002 - <_> - - 0 -1 585 -3.1711272895336151e-002 - - -6.8312811851501465e-001 6.7834347486495972e-002 - <_> - - 0 -1 543 -1.0442961938679218e-003 - - -5.5244719982147217e-001 6.7180506885051727e-002 - <_> - - 0 -1 806 7.9750344157218933e-003 - - -1.4685039222240448e-001 2.7911156415939331e-001 - <_> - - 0 -1 775 9.7797568887472153e-003 - - -1.0445457696914673e-001 3.9583787322044373e-001 - <_> - - 0 -1 552 1.3288496062159538e-002 - - -1.1733970791101456e-001 3.2855752110481262e-001 - <_> - - 0 -1 528 -1.5873706433922052e-003 - - -6.4394426345825195e-001 5.9831541031599045e-002 - <_> - - 0 -1 538 4.1341055184602737e-003 - - -1.4766456186771393e-001 2.6551467180252075e-001 - <_> - - 0 -1 75 4.7469654236920178e-004 - - -2.4220904707908630e-001 1.7033961415290833e-001 - <_> - - 0 -1 780 1.6357531771063805e-002 - - -7.4449680745601654e-002 5.1059716939926147e-001 - <_> - - 0 -1 512 -3.0519803985953331e-002 - - -6.1357855796813965e-001 6.4341634511947632e-002 - <_> - - 0 -1 388 7.8287199139595032e-002 - - -9.1953203082084656e-002 4.5058310031890869e-001 - <_> - - 0 -1 426 2.6628788560628891e-002 - - -1.2955492734909058e-001 2.6968446373939514e-001 - <_> - - 0 -1 187 4.6231731772422791e-002 - - -8.5953183472156525e-002 4.0568628907203674e-001 - <_> - - 0 -1 248 -2.1837819367647171e-003 - - 2.9953801631927490e-001 -1.1820212751626968e-001 - <_> - - 0 -1 551 -7.5804558582603931e-004 - - -3.7147358059883118e-001 9.4888158142566681e-002 - <_> - - 0 -1 557 1.9615942612290382e-002 - - 7.7175915241241455e-002 -4.4386270642280579e-001 - <_> - - 0 -1 758 2.4940725415945053e-003 - - -1.3974383473396301e-001 2.5393635034561157e-001 - <_> - - 0 -1 363 2.0674080587923527e-003 - - -1.6579771041870117e-001 2.1392273902893066e-001 - <_> - - 0 -1 307 -7.3546944186091423e-003 - - 3.6300283670425415e-001 -9.0012907981872559e-002 - <_> - - 0 -1 822 -4.5008827000856400e-003 - - 2.7234289050102234e-001 -1.1618893593549728e-001 - <_> - - 0 -1 863 2.6555648073554039e-003 - - -1.3339768350124359e-001 2.3308847844600677e-001 - <_> - - 0 -1 713 6.8732965737581253e-003 - - 5.5398836731910706e-002 -5.7269740104675293e-001 - <_> - - 0 -1 541 -1.3697329908609390e-002 - - 2.9575833678245544e-001 -1.1314996331930161e-001 - <_> - - 0 -1 499 3.1671333126723766e-003 - - -1.5514299273490906e-001 2.1296086907386780e-001 - <_> - - 0 -1 74 3.9301186800003052e-002 - - 3.7740129977464676e-002 -8.7064558267593384e-001 - <_> - - 0 -1 438 5.0326753407716751e-003 - - 3.8631703704595566e-002 -6.6628092527389526e-001 - - <_> - 37 - -2.2784059047698975e+000 - - <_> - - 0 -1 284 -6.8839386105537415e-002 - - 3.8505528122186661e-002 -7.2149914503097534e-001 - <_> - - 0 -1 622 4.6330597251653671e-003 - - -2.7918994426727295e-001 5.7365530729293823e-001 - <_> - - 0 -1 769 -2.2597890347242355e-002 - - 5.4445463418960571e-001 -1.5445226430892944e-001 - <_> - - 0 -1 651 8.1817107275128365e-003 - - -1.3576838374137878e-001 5.7550191879272461e-001 - <_> - - 0 -1 663 1.9931606948375702e-002 - - -8.6917184293270111e-002 6.9753867387771606e-001 - <_> - - 0 -1 125 -1.6835592687129974e-002 - - 2.9909837245941162e-001 -2.1280159056186676e-001 - <_> - - 0 -1 811 1.3076540082693100e-002 - - -1.0236994922161102e-001 6.2949544191360474e-001 - <_> - - 0 -1 809 6.2367517966777086e-004 - - -2.5327861309051514e-001 2.4867674708366394e-001 - <_> - - 0 -1 609 1.2028571218252182e-003 - - 1.3679966330528259e-001 -6.4433771371841431e-001 - <_> - - 0 -1 272 1.3981487601995468e-002 - - -1.6557806730270386e-001 4.5303794741630554e-001 - <_> - - 0 -1 224 -1.5312875621020794e-002 - - 3.9820623397827148e-001 -1.4350801706314087e-001 - <_> - - 0 -1 502 -1.5315772034227848e-003 - - -4.6908026933670044e-001 1.1392414569854736e-001 - <_> - - 0 -1 586 -1.2515729293227196e-002 - - 4.2320749163627625e-001 -1.1944464594125748e-001 - <_> - - 0 -1 15 9.7349435091018677e-003 - - -2.1135130524635315e-001 2.4544763565063477e-001 - <_> - - 0 -1 578 8.9689850807189941e-002 - - 6.3219323754310608e-002 -6.4908504486083984e-001 - <_> - - 0 -1 683 -1.1183234862983227e-002 - - 4.5843327045440674e-001 -1.1428884416818619e-001 - <_> - - 0 -1 609 -1.3516875915229321e-003 - - -6.4720195531845093e-001 8.4523022174835205e-002 - <_> - - 0 -1 338 -3.5038506612181664e-003 - - 2.3362815380096436e-001 -2.2096297144889832e-001 - <_> - - 0 -1 676 -2.2360668517649174e-003 - - 3.7134209275245667e-001 -1.3087964057922363e-001 - <_> - - 0 -1 672 1.1475373059511185e-002 - - -9.9598348140716553e-002 4.7512599825859070e-001 - <_> - - 0 -1 693 -4.1206870228052139e-003 - - 3.7730529904365540e-001 -1.3486868143081665e-001 - <_> - - 0 -1 386 -1.0615207254886627e-002 - - 5.6163507699966431e-001 -8.6019508540630341e-002 - <_> - - 0 -1 912 1.3644450809806585e-003 - - 9.1222301125526428e-002 -5.7370740175247192e-001 - <_> - - 0 -1 211 -4.0528293699026108e-002 - - -7.1112531423568726e-001 5.6328568607568741e-002 - <_> - - 0 -1 598 -2.6628528721630573e-003 - - -5.7514446973800659e-001 6.4672872424125671e-002 - <_> - - 0 -1 804 1.6719421837478876e-003 - - -1.0937304049730301e-001 4.6537923812866211e-001 - <_> - - 0 -1 391 -7.5402572751045227e-002 - - -7.1920621395111084e-001 6.3679412007331848e-002 - <_> - - 0 -1 752 4.1434019804000854e-003 - - -1.2251268327236176e-001 3.5859704017639160e-001 - <_> - - 0 -1 656 1.0901679052039981e-003 - - 9.0319603681564331e-002 -4.9077373743057251e-001 - <_> - - 0 -1 548 9.7664669156074524e-003 - - -1.1890622228384018e-001 3.7789806723594666e-001 - <_> - - 0 -1 20 1.3128603994846344e-001 - - 9.1950289905071259e-002 -4.8608726263046265e-001 - <_> - - 0 -1 160 5.0870995037257671e-003 - - -3.0447667837142944e-001 1.5393695235252380e-001 - <_> - - 0 -1 695 1.1608509812504053e-003 - - 6.8402722477912903e-002 -5.7240855693817139e-001 - <_> - - 0 -1 463 -8.3964206278324127e-003 - - -5.6654578447341919e-001 6.1527676880359650e-002 - <_> - - 0 -1 853 -9.2788469046354294e-003 - - 5.3486818075180054e-001 -7.9918831586837769e-002 - <_> - - 0 -1 194 4.0858805179595947e-002 - - -6.0392327606678009e-002 5.3097963333129883e-001 - <_> - - 0 -1 875 1.1207645758986473e-002 - - -7.6901644468307495e-002 4.6894967555999756e-001 - - <_> - 43 - -2.3281440734863281e+000 - - <_> - - 0 -1 799 1.6143361106514931e-002 - - -5.9869056940078735e-001 5.8244681358337402e-001 - <_> - - 0 -1 316 -1.4507154002785683e-002 - - 2.7806228399276733e-001 -4.9415421485900879e-001 - <_> - - 0 -1 374 7.1883820928633213e-003 - - -2.1741701662540436e-001 3.9910879731178284e-001 - <_> - - 0 -1 601 -6.3224318437278271e-003 - - 4.9661168456077576e-001 -1.4284123480319977e-001 - <_> - - 0 -1 309 7.3951724916696548e-003 - - -1.3306735455989838e-001 5.4774791002273560e-001 - <_> - - 0 -1 620 5.7926801964640617e-003 - - -1.7347626388072968e-001 3.3524274826049805e-001 - <_> - - 0 -1 628 -8.1796385347843170e-003 - - 4.4341480731964111e-001 -1.1987159401178360e-001 - <_> - - 0 -1 644 3.1394532416015863e-003 - - -7.6400212943553925e-002 5.3360211849212646e-001 - <_> - - 0 -1 803 5.8109681122004986e-003 - - -1.1512878537178040e-001 4.4279125332832336e-001 - <_> - - 0 -1 787 -1.5480478759855032e-003 - - 4.6037110686302185e-001 -1.1494978517293930e-001 - <_> - - 0 -1 139 -3.2716423273086548e-002 - - -6.3845193386077881e-001 1.0197243094444275e-001 - <_> - - 0 -1 547 7.7531556598842144e-003 - - -2.0599687099456787e-001 2.4387344717979431e-001 - <_> - - 0 -1 312 1.0081732273101807e-001 - - -8.3307094871997833e-002 6.0089951753616333e-001 - <_> - - 0 -1 303 1.8065905198454857e-002 - - -8.5330262780189514e-002 5.1092010736465454e-001 - <_> - - 0 -1 227 1.2447070330381393e-002 - - 7.5348034501075745e-002 -7.0691746473312378e-001 - <_> - - 0 -1 26 1.1250283569097519e-002 - - -2.8157770633697510e-001 1.4611217379570007e-001 - <_> - - 0 -1 461 6.3989013433456421e-002 - - 5.5644407868385315e-002 -8.0775284767150879e-001 - <_> - - 0 -1 532 1.2037818320095539e-002 - - -1.6155177354812622e-001 2.6092258095741272e-001 - <_> - - 0 -1 531 -6.7794714123010635e-003 - - 4.1026043891906738e-001 -1.1167341470718384e-001 - <_> - - 0 -1 662 -6.8837543949484825e-003 - - 3.2057675719261169e-001 -1.2521778047084808e-001 - <_> - - 0 -1 568 -5.6298770941793919e-003 - - 3.7114644050598145e-001 -9.6118465065956116e-002 - <_> - - 0 -1 501 -1.4044784940779209e-002 - - 2.3923584818840027e-001 -1.4994344115257263e-001 - <_> - - 0 -1 209 -4.2415991425514221e-002 - - -7.0631259679794312e-001 5.3350944072008133e-002 - <_> - - 0 -1 633 1.1271872790530324e-003 - - -1.0572738200426102e-001 4.0252980589866638e-001 - <_> - - 0 -1 655 1.6750365030020475e-003 - - 6.3855156302452087e-002 -6.4757323265075684e-001 - <_> - - 0 -1 617 8.0223847180604935e-003 - - -1.3372656702995300e-001 3.1646871566772461e-001 - <_> - - 0 -1 302 -7.6437788084149361e-003 - - 3.6533179879188538e-001 -1.0963398963212967e-001 - <_> - - 0 -1 864 1.9589535077102482e-004 - - -1.8541762232780457e-001 1.9759687781333923e-001 - <_> - - 0 -1 235 -1.4239229494705796e-003 - - 2.4031755328178406e-001 -1.5697695314884186e-001 - <_> - - 0 -1 796 8.4227584302425385e-003 - - -8.4527194499969482e-002 4.2389118671417236e-001 - <_> - - 0 -1 797 -6.9234715774655342e-003 - - 3.8057762384414673e-001 -9.1416321694850922e-002 - <_> - - 0 -1 588 -1.8704653484746814e-003 - - -6.4613032341003418e-001 5.7689383625984192e-002 - <_> - - 0 -1 260 -2.7793958783149719e-002 - - 1.8243275582790375e-001 -1.8460384011268616e-001 - <_> - - 0 -1 780 -1.9853528589010239e-002 - - 7.5294703245162964e-001 -5.5559452623128891e-002 - <_> - - 0 -1 231 -9.3498677015304565e-002 - - -4.5725339651107788e-001 8.2762040197849274e-002 - <_> - - 0 -1 233 -5.1207490265369415e-002 - - -6.2534767389297485e-001 4.8502899706363678e-002 - <_> - - 0 -1 407 1.1575517710298300e-003 - - -1.9439546763896942e-001 1.6855290532112122e-001 - <_> - - 0 -1 24 -1.7103100195527077e-002 - - -5.6425410509109497e-001 5.8622561395168304e-002 - <_> - - 0 -1 731 -1.7147272592410445e-003 - - -4.4655910134315491e-001 6.4384043216705322e-002 - <_> - - 0 -1 704 -2.4417929351329803e-002 - - -4.3452578783035278e-001 7.0416867733001709e-002 - <_> - - 0 -1 572 3.7648410070687532e-003 - - -9.9933244287967682e-002 3.3911246061325073e-001 - <_> - - 0 -1 353 -1.0104919783771038e-002 - - 3.4629023075103760e-001 -8.8539779186248779e-002 - <_> - - 0 -1 712 5.0981063395738602e-003 - - 5.5100377649068832e-002 -6.0317450761795044e-001 - - <_> - 50 - -2.3480093479156494e+000 - - <_> - - 0 -1 343 -3.9326027035713196e-002 - - 1.5673981979489326e-002 -7.0409429073333740e-001 - <_> - - 0 -1 465 -8.4042851813137531e-004 - - 2.2963143885135651e-001 -4.5338386297225952e-001 - <_> - - 0 -1 768 1.2317419983446598e-002 - - -2.4286352097988129e-001 3.4696686267852783e-001 - <_> - - 0 -1 799 1.2345131486654282e-002 - - -1.2295535951852798e-001 5.7723248004913330e-001 - <_> - - 0 -1 334 -1.0166198946535587e-002 - - 3.6376756429672241e-001 -1.5697406232357025e-001 - <_> - - 0 -1 2 1.6935718012973666e-003 - - -1.6952106356620789e-001 3.3476638793945313e-001 - <_> - - 0 -1 355 2.4814529344439507e-002 - - -5.2621126174926758e-002 6.6913032531738281e-001 - <_> - - 0 -1 595 -7.9641379415988922e-003 - - 4.5105281472206116e-001 -1.0256277024745941e-001 - <_> - - 0 -1 923 -8.0780440475791693e-004 - - 3.4726995229721069e-001 -1.4011415839195251e-001 - <_> - - 0 -1 886 -4.2634975165128708e-002 - - 3.9254909753799438e-001 -9.5705978572368622e-002 - <_> - - 0 -1 645 -1.1309007182717323e-002 - - 5.3030455112457275e-001 -9.1078959405422211e-002 - <_> - - 0 -1 660 -5.3997440263628960e-003 - - 4.4208008050918579e-001 -8.9016474783420563e-002 - <_> - - 0 -1 922 8.0034844577312469e-003 - - -7.7505834400653839e-002 4.6123340725898743e-001 - <_> - - 0 -1 70 -2.1929096430540085e-002 - - -5.1349323987960815e-001 8.5143901407718658e-002 - <_> - - 0 -1 457 -1.1585029773414135e-002 - - -5.9067147970199585e-001 5.3899347782135010e-002 - <_> - - 0 -1 940 1.5154580585658550e-002 - - 4.7417007386684418e-002 -6.2853425741195679e-001 - <_> - - 0 -1 425 3.6063842475414276e-002 - - 7.1829482913017273e-002 -5.8649080991744995e-001 - <_> - - 0 -1 377 -1.2515364214777946e-003 - - 1.8929110467433929e-001 -1.8165642023086548e-001 - <_> - - 0 -1 443 -1.1191211640834808e-002 - - -6.1874210834503174e-001 6.0382697731256485e-002 - <_> - - 0 -1 892 -1.0454729199409485e-002 - - 3.9079114794731140e-001 -9.7279526293277740e-002 - <_> - - 0 -1 474 -1.3280634302645922e-003 - - -4.3977957963943481e-001 8.6543120443820953e-002 - <_> - - 0 -1 884 -6.5715098753571510e-003 - - 3.8899809122085571e-001 -9.9507912993431091e-002 - <_> - - 0 -1 802 -4.8141209408640862e-003 - - 2.7240043878555298e-001 -1.1941614747047424e-001 - <_> - - 0 -1 611 -4.9042850732803345e-003 - - 3.4554582834243774e-001 -1.0440594702959061e-001 - <_> - - 0 -1 589 4.1131088510155678e-003 - - 6.2906242907047272e-002 -6.3577443361282349e-001 - <_> - - 0 -1 564 -1.4377808198332787e-002 - - 2.6160046458244324e-001 -1.3126534223556519e-001 - <_> - - 0 -1 659 -7.9730991274118423e-003 - - 2.8418624401092529e-001 -1.1802970618009567e-001 - <_> - - 0 -1 632 1.2750998139381409e-002 - - -1.2246144562959671e-001 2.9994803667068481e-001 - <_> - - 0 -1 550 1.2405896559357643e-003 - - 6.8871341645717621e-002 -4.7651088237762451e-001 - <_> - - 0 -1 864 1.9797214190475643e-004 - - -1.8686980009078979e-001 1.7104914784431458e-001 - <_> - - 0 -1 773 -5.9868812561035156e-002 - - -7.4281668663024902e-001 4.0871854871511459e-002 - <_> - - 0 -1 20 1.7117856442928314e-001 - - 3.9691232144832611e-002 -6.0849416255950928e-001 - <_> - - 0 -1 583 -6.0836132615804672e-003 - - 2.6707777380943298e-001 -1.1131492257118225e-001 - <_> - - 0 -1 37 -1.6043212264776230e-002 - - -7.1336209774017334e-001 4.1814558207988739e-002 - <_> - - 0 -1 721 -3.5733331460505724e-003 - - -5.9263443946838379e-001 4.1711769998073578e-002 - <_> - - 0 -1 251 4.8501053825020790e-003 - - -1.7411983013153076e-001 1.6949725151062012e-001 - <_> - - 0 -1 932 -2.4870643392205238e-003 - - 3.5093098878860474e-001 -8.0437563359737396e-002 - <_> - - 0 -1 679 5.4334278684109449e-004 - - 7.2410888969898224e-002 -4.1958642005920410e-001 - <_> - - 0 -1 399 -6.7315630614757538e-002 - - -6.9776558876037598e-001 3.6959640681743622e-002 - <_> - - 0 -1 848 -1.5508693642914295e-002 - - 4.7738686203956604e-001 -6.2411848455667496e-002 - <_> - - 0 -1 240 9.8924851045012474e-003 - - 3.8795292377471924e-002 -7.5121307373046875e-001 - <_> - - 0 -1 626 -1.9304422894492745e-003 - - -6.6471725702285767e-001 3.2116148620843887e-002 - <_> - - 0 -1 877 -1.0774823604151607e-003 - - 1.5463894605636597e-001 -1.6525565087795258e-001 - <_> - - 0 -1 938 2.0380350761115551e-003 - - -8.5884653031826019e-002 3.1941527128219604e-001 - <_> - - 0 -1 296 2.6121754199266434e-003 - - 4.5351639389991760e-002 -6.1592888832092285e-001 - <_> - - 0 -1 360 -2.4895587936043739e-002 - - 1.9662404060363770e-001 -1.3288022577762604e-001 - <_> - - 0 -1 540 9.4352923333644867e-003 - - -7.7825613319873810e-002 3.3150759339332581e-001 - <_> - - 0 -1 475 3.4190870821475983e-002 - - 4.5858692377805710e-002 -6.1435216665267944e-001 - <_> - - 0 -1 685 -5.5097185075283051e-002 - - -4.9892291426658630e-001 4.7548539936542511e-002 - <_> - - 0 -1 287 3.8485769182443619e-003 - - -2.1700088679790497e-001 1.1295168846845627e-001 - - <_> - 61 - -2.4126377105712891e+000 - - <_> - - 0 -1 344 -9.5382995903491974e-002 - - -4.5056518167257309e-002 -7.4383479356765747e-001 - <_> - - 0 -1 696 -1.7865713685750961e-002 - - 2.4200576543807983e-001 -3.4111279249191284e-001 - <_> - - 0 -1 66 -1.7819929867982864e-002 - - -5.8606600761413574e-001 1.0216028243303299e-001 - <_> - - 0 -1 369 1.1929270811378956e-002 - - -1.3082079589366913e-001 4.3198430538177490e-001 - <_> - - 0 -1 677 -2.1402675658464432e-002 - - -7.3706889152526855e-001 7.2057045996189117e-002 - <_> - - 0 -1 880 2.0411442965269089e-003 - - -1.9257834553718567e-001 2.6624691486358643e-001 - <_> - - 0 -1 560 -9.2984475195407867e-003 - - 3.9710593223571777e-001 -1.1857020854949951e-001 - <_> - - 0 -1 870 -4.1869636625051498e-003 - - 4.2139983177185059e-001 -1.1628517508506775e-001 - <_> - - 0 -1 173 1.0577079653739929e-001 - - 6.7847460508346558e-002 -7.5728106498718262e-001 - <_> - - 0 -1 458 2.3821401409804821e-003 - - -1.7424334585666656e-001 2.4778348207473755e-001 - <_> - - 0 -1 365 1.7058081924915314e-002 - - -1.0784839093685150e-001 4.7589403390884399e-001 - <_> - - 0 -1 607 8.4047149866819382e-003 - - -1.6299639642238617e-001 2.5596112012863159e-001 - <_> - - 0 -1 669 6.4883893355727196e-003 - - -1.0720382630825043e-001 3.8739699125289917e-001 - <_> - - 0 -1 719 1.3821164146065712e-002 - - -1.0847893357276917e-001 3.7734055519104004e-001 - <_> - - 0 -1 730 6.3344044610857964e-004 - - 1.0369951277971268e-001 -4.1177383065223694e-001 - <_> - - 0 -1 649 2.5448631495237350e-002 - - -1.0093591362237930e-001 4.0250420570373535e-001 - <_> - - 0 -1 628 -6.6858739592134953e-003 - - 3.2515993714332581e-001 -1.2071736156940460e-001 - <_> - - 0 -1 847 1.5770105645060539e-002 - - -8.7370425462722778e-002 4.2094638943672180e-001 - <_> - - 0 -1 442 -6.1724921688437462e-003 - - 3.5812416672706604e-001 -9.5346152782440186e-002 - <_> - - 0 -1 456 -2.5777951814234257e-003 - - -4.5544171333312988e-001 9.0092077851295471e-002 - <_> - - 0 -1 535 -2.6305086910724640e-002 - - -6.4864850044250488e-001 4.1219502687454224e-002 - <_> - - 0 -1 542 8.0740137491375208e-004 - - 4.7109395265579224e-002 -6.0955244302749634e-001 - <_> - - 0 -1 68 1.4135822653770447e-002 - - -1.9197317957878113e-001 1.6882354021072388e-001 - <_> - - 0 -1 294 -9.4971470534801483e-003 - - 3.6509966850280762e-001 -9.9222034215927124e-002 - <_> - - 0 -1 542 -7.4699660763144493e-004 - - -4.7985881567001343e-001 6.8735912442207336e-002 - <_> - - 0 -1 500 1.6889899969100952e-002 - - -1.3929726183414459e-001 2.3301121592521667e-001 - <_> - - 0 -1 779 2.3306370712816715e-003 - - -8.4623180329799652e-002 3.3656537532806396e-001 - <_> - - 0 -1 778 8.7781455367803574e-003 - - -1.1189370602369308e-001 2.9142591357231140e-001 - <_> - - 0 -1 99 -1.5908680856227875e-002 - - 1.9325265288352966e-001 -1.6028961539268494e-001 - <_> - - 0 -1 744 1.9255496561527252e-002 - - 7.6108239591121674e-002 -3.9211651682853699e-001 - <_> - - 0 -1 914 5.0490582361817360e-003 - - -8.9932329952716827e-002 3.1994494795799255e-001 - <_> - - 0 -1 603 -2.4455685634166002e-003 - - -6.3004231452941895e-001 4.6506922692060471e-002 - <_> - - 0 -1 89 6.4034629613161087e-003 - - -1.2222797423601151e-001 2.2714875638484955e-001 - <_> - - 0 -1 88 -3.1981021165847778e-003 - - 2.8711226582527161e-001 -1.0478579252958298e-001 - <_> - - 0 -1 732 1.7579109407961369e-003 - - 5.1840141415596008e-002 -5.7752221822738647e-001 - <_> - - 0 -1 526 -2.6384353637695313e-002 - - -7.5548434257507324e-001 3.1215203925967216e-002 - <_> - - 0 -1 482 1.3470241427421570e-001 - - 4.5115962624549866e-002 -4.8610612750053406e-001 - <_> - - 0 -1 855 -2.5868147611618042e-002 - - -4.9144035577774048e-001 5.0334099680185318e-002 - <_> - - 0 -1 164 1.0719317197799683e-001 - - -1.4267221093177795e-001 1.7969062924385071e-001 - <_> - - 0 -1 781 -1.5155045315623283e-002 - - 4.2710477113723755e-001 -6.6483244299888611e-002 - <_> - - 0 -1 728 -3.8210965692996979e-002 - - -6.1093688011169434e-001 4.7181066125631332e-002 - <_> - - 0 -1 257 1.7748951911926270e-002 - - -6.6903516650199890e-002 4.1605830192565918e-001 - <_> - - 0 -1 272 -1.3678016141057014e-002 - - 3.2274204492568970e-001 -8.7739549577236176e-002 - <_> - - 0 -1 81 1.4629539102315903e-002 - - -1.1059324443340302e-001 2.4449653923511505e-001 - <_> - - 0 -1 754 6.4607188105583191e-003 - - -8.1396102905273438e-002 3.1605172157287598e-001 - <_> - - 0 -1 574 -8.4974901983514428e-004 - - 1.5621511638164520e-001 -1.6912016272544861e-001 - <_> - - 0 -1 332 -6.4049977809190750e-003 - - 2.2254464030265808e-001 -1.1970910429954529e-001 - <_> - - 0 -1 410 4.8453146591782570e-003 - - -1.0080187022686005e-001 2.5552451610565186e-001 - <_> - - 0 -1 694 1.0576892644166946e-002 - - -7.1883767843246460e-002 3.2368022203445435e-001 - <_> - - 0 -1 652 -2.0271514076739550e-003 - - 2.1205350756645203e-001 -1.4773385226726532e-001 - <_> - - 0 -1 379 1.2130783870816231e-003 - - -2.2663643956184387e-001 1.0520290583372116e-001 - <_> - - 0 -1 419 -7.9384088516235352e-002 - - -4.4897699356079102e-001 4.9417987465858459e-002 - <_> - - 0 -1 31 4.3571349233388901e-003 - - 3.1063990667462349e-002 -6.9149738550186157e-001 - <_> - - 0 -1 750 1.9707549363374710e-003 - - 4.4843826442956924e-002 -4.5625826716423035e-001 - <_> - - 0 -1 788 6.2818843871355057e-003 - - -9.5382869243621826e-002 2.6746883988380432e-001 - <_> - - 0 -1 789 -1.3252656906843185e-002 - - 4.0820258855819702e-001 -6.0815874487161636e-002 - <_> - - 0 -1 60 5.0364276394248009e-003 - - 9.0342856943607330e-002 -2.5253733992576599e-001 - <_> - - 0 -1 492 8.9537240564823151e-003 - - 3.2092411071062088e-002 -7.0339488983154297e-001 - <_> - - 0 -1 546 6.8814970552921295e-002 - - -7.1046918630599976e-002 3.6507198214530945e-001 - <_> - - 0 -1 544 -1.2149440124630928e-002 - - 3.3089646697044373e-001 -6.6771849989891052e-002 - <_> - - 0 -1 50 1.9094728631898761e-003 - - -1.3490848243236542e-001 1.6960476338863373e-001 - - <_> - 72 - -2.3490672111511230e+000 - - <_> - - 0 -1 371 1.4795187860727310e-002 - - -7.0123827457427979e-001 -2.0484872162342072e-002 - <_> - - 0 -1 612 2.6377664878964424e-002 - - -3.5620382428169250e-001 2.4889869987964630e-001 - <_> - - 0 -1 165 -1.1034142225980759e-002 - - 2.0675517618656158e-001 -3.3259147405624390e-001 - <_> - - 0 -1 692 -9.2857871204614639e-003 - - 4.4594430923461914e-001 -1.4160791039466858e-001 - <_> - - 0 -1 313 1.1126287281513214e-001 - - -7.9181507229804993e-002 6.0241782665252686e-001 - <_> - - 0 -1 751 3.0388862360268831e-003 - - -1.9209611415863037e-001 2.5241580605506897e-001 - <_> - - 0 -1 874 -2.0801391452550888e-002 - - 4.0978202223777771e-001 -9.8037041723728180e-002 - <_> - - 0 -1 892 1.0280778631567955e-002 - - -9.6344605088233948e-002 4.6578553318977356e-001 - <_> - - 0 -1 894 -5.4509467445313931e-003 - - 3.7336015701293945e-001 -1.0564301162958145e-001 - <_> - - 0 -1 376 -1.8031136132776737e-003 - - 3.5322296619415283e-001 -1.2390857189893723e-001 - <_> - - 0 -1 763 -4.7199074178934097e-003 - - 4.1106048226356506e-001 -9.3251600861549377e-002 - <_> - - 0 -1 323 -6.1694663017988205e-003 - - 3.3520108461380005e-001 -1.2836365401744843e-001 - <_> - - 0 -1 83 -6.9639906287193298e-003 - - 2.1963912248611450e-001 -1.8814907968044281e-001 - <_> - - 0 -1 683 -1.2535721994936466e-002 - - 3.8960403203964233e-001 -9.2547819018363953e-002 - <_> - - 0 -1 690 -1.6924859955906868e-002 - - 3.6892804503440857e-001 -9.4779089093208313e-002 - <_> - - 0 -1 54 1.6596701461821795e-003 - - -1.9850541651248932e-001 1.8709312379360199e-001 - <_> - - 0 -1 55 2.7687277644872665e-002 - - 7.0031657814979553e-002 -4.7238609194755554e-001 - <_> - - 0 -1 120 -1.1841375380754471e-002 - - 2.6792368292808533e-001 -1.2015427649021149e-001 - <_> - - 0 -1 261 -1.1048562824726105e-002 - - 3.6024233698844910e-001 -1.0290746390819550e-001 - <_> - - 0 -1 7 -6.2395762652158737e-002 - - -5.7112109661102295e-001 6.2251534312963486e-002 - <_> - - 0 -1 115 1.6063985228538513e-001 - - -7.0866517722606659e-002 4.5665851235389709e-001 - <_> - - 0 -1 232 2.1094676852226257e-001 - - 4.6763692051172256e-002 -7.0770156383514404e-001 - <_> - - 0 -1 358 -3.6897901445627213e-003 - - 3.7905600666999817e-001 -8.1804625689983368e-002 - <_> - - 0 -1 434 1.9055651500821114e-002 - - -1.0166674852371216e-001 2.7208462357521057e-001 - <_> - - 0 -1 947 -2.0279071759432554e-003 - - 3.1354761123657227e-001 -8.6894899606704712e-002 - <_> - - 0 -1 571 1.0916183236986399e-003 - - 7.6082363724708557e-002 -3.2986941933631897e-001 - <_> - - 0 -1 405 -5.5616937577724457e-002 - - -5.0169217586517334e-001 4.7203768044710159e-002 - <_> - - 0 -1 600 -2.1859644912183285e-003 - - -4.1108477115631104e-001 5.6136883795261383e-002 - <_> - - 0 -1 422 6.1606548726558685e-002 - - 3.8405187427997589e-002 -6.3146471977233887e-001 - <_> - - 0 -1 562 4.4989854097366333e-002 - - -7.8799270093441010e-002 3.5685274004936218e-001 - <_> - - 0 -1 900 1.4128099195659161e-002 - - -5.1783677190542221e-002 4.5928877592086792e-001 - <_> - - 0 -1 503 -2.2787526249885559e-002 - - -4.2496410012245178e-001 5.9822574257850647e-002 - <_> - - 0 -1 82 1.0302955284714699e-002 - - -1.5051785111427307e-001 1.8300771713256836e-001 - <_> - - 0 -1 733 -1.7985476879402995e-003 - - -5.0104391574859619e-001 5.1810134202241898e-002 - <_> - - 0 -1 783 -1.0919184423983097e-003 - - 1.6831028461456299e-001 -1.5063883364200592e-001 - <_> - - 0 -1 221 6.8745255470275879e-002 - - 2.5853699073195457e-002 -8.8202834129333496e-001 - <_> - - 0 -1 92 8.0964900553226471e-003 - - -1.4373345673084259e-001 1.6309750080108643e-001 - <_> - - 0 -1 669 -9.0615758672356606e-003 - - 4.4120463728904724e-001 -5.8328684419393539e-002 - <_> - - 0 -1 780 1.5157302841544151e-002 - - -6.2339264899492264e-002 3.7585461139678955e-001 - <_> - - 0 -1 852 -9.6248798072338104e-003 - - 3.3618140220642090e-001 -7.2854258120059967e-002 - <_> - - 0 -1 264 -2.6485668495297432e-003 - - -3.6842566728591919e-001 7.0426821708679199e-002 - <_> - - 0 -1 793 -2.5783948600292206e-002 - - -4.3915954232215881e-001 4.4346898794174194e-002 - <_> - - 0 -1 691 3.8045123219490051e-002 - - 2.0367870107293129e-002 -9.1361635923385620e-001 - <_> - - 0 -1 885 6.5762884914875031e-003 - - -7.7705778181552887e-002 2.7798372507095337e-001 - <_> - - 0 -1 527 1.4522124081850052e-002 - - -1.5169607102870941e-001 1.6986666619777679e-001 - <_> - - 0 -1 263 -2.9386302456259727e-002 - - 1.5261377394199371e-001 -1.4140434563159943e-001 - <_> - - 0 -1 252 -1.8363123759627342e-002 - - 5.7111293077468872e-001 -4.9465496093034744e-002 - <_> - - 0 -1 674 -5.1241345703601837e-002 - - -5.5350369215011597e-001 4.6895623207092285e-002 - <_> - - 0 -1 277 2.9151788912713528e-003 - - -9.0461745858192444e-002 2.4859617650508881e-001 - <_> - - 0 -1 749 1.7963855061680079e-003 - - 4.5411933213472366e-002 -5.4377090930938721e-001 - <_> - - 0 -1 198 4.7771027311682701e-003 - - -1.8385021388530731e-001 1.1213029175996780e-001 - <_> - - 0 -1 850 -1.1631837114691734e-003 - - 1.9307336211204529e-001 -1.0863032937049866e-001 - <_> - - 0 -1 739 -6.7155435681343079e-003 - - 3.4966903924942017e-001 -5.8376740664243698e-002 - <_> - - 0 -1 195 -6.6494196653366089e-002 - - 3.4874725341796875e-001 -5.7571310549974442e-002 - <_> - - 0 -1 750 -1.8951734527945518e-003 - - -5.0567263364791870e-001 4.2631916701793671e-002 - <_> - - 0 -1 832 -4.3506296351552010e-003 - - -5.0467538833618164e-001 3.8686964660882950e-002 - <_> - - 0 -1 725 5.5216029286384583e-003 - - -8.3722010254859924e-002 2.5723373889923096e-001 - <_> - - 0 -1 727 1.4174621552228928e-002 - - -5.2497696131467819e-002 4.3525427579879761e-001 - <_> - - 0 -1 25 1.1252675205469131e-002 - - -1.3312049210071564e-001 1.6167336702346802e-001 - <_> - - 0 -1 67 7.9240947961807251e-003 - - -1.1959484219551086e-001 1.6835211217403412e-001 - <_> - - 0 -1 784 1.0558717185631394e-003 - - -1.2297991663217545e-001 1.5906786918640137e-001 - <_> - - 0 -1 615 4.5906797051429749e-002 - - 3.6611214280128479e-002 -5.4427564144134521e-001 - <_> - - 0 -1 702 -9.5631275326013565e-003 - - 2.2376507520675659e-001 -9.2235445976257324e-002 - <_> - - 0 -1 290 -1.7671093344688416e-002 - - -6.2817609310150146e-001 3.3949319273233414e-002 - <_> - - 0 -1 764 -1.7188221681863070e-003 - - 2.0224046707153320e-001 -1.0232327878475189e-001 - <_> - - 0 -1 367 1.5140373259782791e-002 - - -5.6504372507333755e-002 3.4895980358123779e-001 - <_> - - 0 -1 366 -2.8949489817023277e-002 - - 3.1860530376434326e-001 -6.4782403409481049e-002 - <_> - - 0 -1 937 1.1647377163171768e-002 - - -3.6289941519498825e-002 5.4892385005950928e-001 - <_> - - 0 -1 741 -7.8217741101980209e-003 - - 2.0226673781871796e-001 -9.2000789940357208e-002 - <_> - - 0 -1 800 -8.4432046860456467e-003 - - 1.7921546101570129e-001 -1.0415823757648468e-001 - <_> - - 0 -1 854 -1.5566672198474407e-002 - - 3.9981749653816223e-001 -5.3077172487974167e-002 - <_> - - 0 -1 587 -1.2464943341910839e-002 - - 2.2552676498889923e-001 -9.0897649526596069e-002 - - <_> - 77 - -2.2761957645416260e+000 - - <_> - - 0 -1 402 -2.0046032965183258e-002 - - 2.7538803219795227e-001 -6.1105114221572876e-001 - <_> - - 0 -1 430 9.1837458312511444e-003 - - -4.0790805220603943e-001 2.0902955532073975e-001 - <_> - - 0 -1 21 4.2203110642731190e-003 - - -2.1331593394279480e-001 2.8156790137290955e-001 - <_> - - 0 -1 673 -1.4000188559293747e-002 - - 5.4547309875488281e-001 -9.6670299768447876e-002 - <_> - - 0 -1 926 -7.1464567445218563e-003 - - 4.6416798233985901e-001 -9.1218575835227966e-002 - <_> - - 0 -1 389 -1.0070230066776276e-001 - - -6.6349637508392334e-001 7.1100234985351563e-002 - <_> - - 0 -1 95 1.0696215555071831e-002 - - -1.9745405018329620e-001 2.0773608982563019e-001 - <_> - - 0 -1 149 -3.5202980041503906e-002 - - -7.6735103130340576e-001 5.0265740603208542e-002 - <_> - - 0 -1 311 7.4009604752063751e-002 - - -7.4828110635280609e-002 5.6469208002090454e-001 - <_> - - 0 -1 849 3.9156894199550152e-003 - - -1.3954170048236847e-001 2.7583837509155273e-001 - <_> - - 0 -1 335 -5.3920033387839794e-003 - - 3.0497005581855774e-001 -1.1606794595718384e-001 - <_> - - 0 -1 861 3.7412224337458611e-003 - - -7.9430311918258667e-002 4.4621026515960693e-001 - <_> - - 0 -1 868 7.1699996478855610e-003 - - -1.0092698037624359e-001 3.4257224202156067e-001 - <_> - - 0 -1 256 2.1885338425636292e-001 - - 5.8548614382743835e-002 -6.5264624357223511e-001 - <_> - - 0 -1 771 -5.3951903246343136e-003 - - 2.4228222668170929e-001 -1.3535094261169434e-001 - <_> - - 0 -1 695 -1.1738229077309370e-003 - - -4.7875782847404480e-001 6.8366907536983490e-002 - <_> - - 0 -1 666 2.1457400172948837e-002 - - -7.1118980646133423e-002 4.5637446641921997e-001 - <_> - - 0 -1 309 1.2115674093365669e-002 - - -5.8202955871820450e-002 4.6163806319236755e-001 - <_> - - 0 -1 273 -1.8007406964898109e-002 - - 3.2520860433578491e-001 -8.0533631145954132e-002 - <_> - - 0 -1 837 -1.2486811727285385e-002 - - 4.1279473900794983e-001 -5.1714207977056503e-002 - <_> - - 0 -1 820 -6.8574929609894753e-003 - - 2.6760685443878174e-001 -1.0764075815677643e-001 - <_> - - 0 -1 823 1.5099495649337769e-002 - - -7.4429087340831757e-002 4.6331611275672913e-001 - <_> - - 0 -1 418 5.6357895955443382e-003 - - 4.3343700468540192e-002 -6.8444931507110596e-001 - <_> - - 0 -1 496 -3.8149006664752960e-002 - - -5.0210982561111450e-001 4.6030189841985703e-002 - <_> - - 0 -1 488 6.9609917700290680e-002 - - -1.1487975716590881e-001 2.4527166783809662e-001 - <_> - - 0 -1 718 -1.4793819282203913e-003 - - -4.9200877547264099e-001 5.0612244755029678e-002 - <_> - - 0 -1 279 1.5615550801157951e-003 - - -1.4539672434329987e-001 1.8345473706722260e-001 - <_> - - 0 -1 444 -7.9339537769556046e-003 - - -6.9242167472839355e-001 3.2313633710145950e-002 - <_> - - 0 -1 69 3.8695998489856720e-002 - - 3.5442691296339035e-002 -5.8349174261093140e-001 - <_> - - 0 -1 27 3.4779291599988937e-002 - - -1.5399172902107239e-001 1.6672950983047485e-001 - <_> - - 0 -1 411 1.0367618873715401e-002 - - -1.0087994486093521e-001 2.7080667018890381e-001 - <_> - - 0 -1 924 -1.2352936901152134e-003 - - 2.6111871004104614e-001 -8.5407368838787079e-002 - <_> - - 0 -1 641 -3.8098993245512247e-003 - - -6.4659863710403442e-001 3.7423413246870041e-002 - <_> - - 0 -1 137 1.4491343870759010e-002 - - 1.9647786393761635e-002 -9.1479778289794922e-001 - <_> - - 0 -1 394 -8.3385318517684937e-002 - - -7.1166336536407471e-001 2.2575991228222847e-002 - <_> - - 0 -1 780 -1.9848600029945374e-002 - - 5.5954068899154663e-001 -4.1730873286724091e-002 - <_> - - 0 -1 241 -2.0697467029094696e-002 - - 3.3735945820808411e-001 -6.2523342669010162e-002 - <_> - - 0 -1 300 -1.1017382144927979e-002 - - 2.6414296030998230e-001 -1.0402554273605347e-001 - <_> - - 0 -1 78 2.7749380096793175e-003 - - -1.7511576414108276e-001 1.1715058237314224e-001 - <_> - - 0 -1 648 -1.5251778066158295e-002 - - 4.3819862604141235e-001 -4.5249339193105698e-002 - <_> - - 0 -1 108 1.1041477322578430e-002 - - 3.4502815455198288e-002 -6.0594552755355835e-001 - <_> - - 0 -1 112 -1.2095808982849121e-002 - - 2.3661912977695465e-001 -9.1371931135654449e-002 - <_> - - 0 -1 157 2.7025766670703888e-002 - - -8.9995227754116058e-002 2.4357070028781891e-001 - <_> - - 0 -1 253 2.0237984135746956e-002 - - -8.2986801862716675e-002 2.5786581635475159e-001 - <_> - - 0 -1 179 -2.5734171271324158e-002 - - -8.0328714847564697e-001 2.3963116109371185e-002 - <_> - - 0 -1 898 -7.0260283537209034e-003 - - 3.1706759333610535e-001 -6.8345665931701660e-002 - <_> - - 0 -1 785 8.9800115674734116e-003 - - -1.0068616271018982e-001 1.8837621808052063e-001 - <_> - - 0 -1 16 7.1165725588798523e-002 - - 2.9139470309019089e-002 -7.1776688098907471e-001 - <_> - - 0 -1 491 1.2540835887193680e-002 - - 2.8786318376660347e-002 -5.7155269384384155e-001 - <_> - - 0 -1 686 1.4826809987425804e-002 - - -5.3431484848260880e-002 3.7567591667175293e-001 - <_> - - 0 -1 756 -2.0885471254587173e-002 - - -5.5986213684082031e-001 3.5628255456686020e-002 - <_> - - 0 -1 395 -4.4493626803159714e-002 - - -6.0325270891189575e-001 2.8809506446123123e-002 - <_> - - 0 -1 469 -1.1605422478169203e-003 - - 1.3856917619705200e-001 -1.3231372833251953e-001 - <_> - - 0 -1 10 1.0227273404598236e-001 - - -6.3532300293445587e-002 3.1242474913597107e-001 - <_> - - 0 -1 134 -2.9290396720170975e-002 - - 1.9631637632846832e-001 -1.1773347854614258e-001 - <_> - - 0 -1 249 -2.7526013553142548e-002 - - -5.4162657260894775e-001 3.7284608930349350e-002 - <_> - - 0 -1 192 -6.8295732140541077e-002 - - -6.8661803007125854e-001 2.2030472755432129e-002 - <_> - - 0 -1 65 3.7252403795719147e-002 - - 1.4609245583415031e-002 -9.1920310258865356e-001 - <_> - - 0 -1 748 1.5438124537467957e-003 - - 3.9837431162595749e-002 -3.8516902923583984e-001 - <_> - - 0 -1 361 1.8146948888897896e-002 - - -8.1836819648742676e-002 2.2508986294269562e-001 - <_> - - 0 -1 153 -2.9618924017995596e-003 - - 1.7523658275604248e-001 -1.1428176611661911e-001 - <_> - - 0 -1 591 1.8150422722101212e-002 - - 3.3836413174867630e-002 -5.2116078138351440e-001 - <_> - - 0 -1 4 -3.3758711069822311e-002 - - 3.9958250522613525e-001 -4.5763287693262100e-002 - <_> - - 0 -1 79 -1.4841533266007900e-003 - - 1.6825924813747406e-001 -1.0908807814121246e-001 - <_> - - 0 -1 255 1.3028753455728292e-003 - - -1.0276191681623459e-001 1.8539939820766449e-001 - <_> - - 0 -1 920 1.0365190915763378e-002 - - -3.8271062076091766e-002 4.6489492058753967e-001 - <_> - - 0 -1 917 6.0222409665584564e-003 - - -6.5577961504459381e-002 2.7879896759986877e-001 - <_> - - 0 -1 105 1.0119758546352386e-001 - - -2.8418583795428276e-002 5.9041601419448853e-001 - <_> - - 0 -1 9 7.1856275200843811e-002 - - 2.8918648138642311e-002 -7.6654183864593506e-001 - <_> - - 0 -1 921 2.6606030762195587e-002 - - -6.2962368130683899e-002 3.0662769079208374e-001 - <_> - - 0 -1 384 1.5946386381983757e-002 - - -5.4566886276006699e-002 3.1234565377235413e-001 - <_> - - 0 -1 493 -8.2057155668735504e-003 - - 2.1779660880565643e-001 -8.3498664200305939e-002 - <_> - - 0 -1 270 1.2946184724569321e-002 - - 3.5179842263460159e-002 -5.1891100406646729e-001 - <_> - - 0 -1 141 -8.8035371154546738e-003 - - -4.6259808540344238e-001 3.4376677125692368e-002 - <_> - - 0 -1 477 -4.6518794260919094e-004 - - -2.6353842020034790e-001 6.2585823237895966e-002 - <_> - - 0 -1 743 2.4100966751575470e-002 - - 2.1097198128700256e-002 -7.4997889995574951e-001 - <_> - - 0 -1 170 -6.7410841584205627e-003 - - -8.7101519107818604e-001 1.3417764566838741e-002 - - <_> - 88 - -2.2931215763092041e+000 - - <_> - - 0 -1 400 -3.4661620855331421e-002 - - 2.1858149766921997e-001 -6.1113607883453369e-001 - <_> - - 0 -1 130 -8.0369092524051666e-002 - - 2.4827747046947479e-001 -3.6355212330818176e-001 - <_> - - 0 -1 911 2.5022951886057854e-003 - - -2.3158867657184601e-001 2.7031692862510681e-001 - <_> - - 0 -1 946 -6.8189981393516064e-003 - - 4.1294625401496887e-001 -1.2155807018280029e-001 - <_> - - 0 -1 459 3.2973052002489567e-003 - - -1.9231098890304565e-001 2.4345158040523529e-001 - <_> - - 0 -1 484 -6.6328542307019234e-003 - - -5.9019386768341064e-001 6.9055899977684021e-002 - <_> - - 0 -1 318 4.7803454101085663e-002 - - -5.1415871828794479e-002 5.9312266111373901e-001 - <_> - - 0 -1 350 1.3619948178529739e-002 - - -1.3920906186103821e-001 2.6931121945381165e-001 - <_> - - 0 -1 383 -3.7001757882535458e-003 - - -2.6682609319686890e-001 1.4955024421215057e-001 - <_> - - 0 -1 481 1.5951462090015411e-002 - - 3.0041305348277092e-002 -6.7943179607391357e-001 - <_> - - 0 -1 478 2.3432243615388870e-003 - - 4.9472317099571228e-002 -7.3165643215179443e-001 - <_> - - 0 -1 423 -4.0219593793153763e-003 - - -3.9633533358573914e-001 8.4367558360099792e-002 - <_> - - 0 -1 942 1.3890343718230724e-002 - - -1.1078495532274246e-001 3.0365592241287231e-001 - <_> - - 0 -1 777 -1.2505413033068180e-003 - - 2.0580539107322693e-001 -1.3080060482025146e-001 - <_> - - 0 -1 132 1.0764427483081818e-001 - - 7.7789157629013062e-002 -3.3906123042106628e-001 - <_> - - 0 -1 631 4.3811961077153683e-003 - - -1.1201550066471100e-001 2.5211933255195618e-001 - <_> - - 0 -1 686 -1.2142172083258629e-002 - - 3.7872961163520813e-001 -7.7070862054824829e-002 - <_> - - 0 -1 865 -4.4353669509291649e-003 - - 2.1270920336246490e-001 -1.2447933107614517e-001 - <_> - - 0 -1 619 1.4904401032254100e-003 - - 5.6515082716941833e-002 -5.1137989759445190e-001 - <_> - - 0 -1 792 -1.4859709888696671e-002 - - 4.4488805532455444e-001 -6.3839435577392578e-002 - <_> - - 0 -1 515 2.5369194336235523e-003 - - -1.4258751273155212e-001 1.8267530202865601e-001 - <_> - - 0 -1 558 -3.8392089772969484e-003 - - 2.3361504077911377e-001 -1.1508828401565552e-001 - <_> - - 0 -1 717 1.1982237920165062e-003 - - 4.8276327550411224e-002 -4.9198591709136963e-001 - <_> - - 0 -1 378 -1.8510858062654734e-003 - - 1.4056424796581268e-001 -1.6454231739044189e-001 - <_> - - 0 -1 918 -1.2120591476559639e-002 - - 3.7157261371612549e-001 -6.2530189752578735e-002 - <_> - - 0 -1 401 1.1447809636592865e-002 - - 4.1043214499950409e-002 -5.2705597877502441e-001 - <_> - - 0 -1 511 -1.4917021617293358e-002 - - 4.0471947193145752e-001 -5.6559596210718155e-002 - <_> - - 0 -1 472 3.1782940030097961e-002 - - 3.1669221818447113e-002 -7.1189236640930176e-001 - <_> - - 0 -1 204 2.8533251024782658e-003 - - -1.3680589199066162e-001 1.5116590261459351e-001 - <_> - - 0 -1 780 -2.0387873053550720e-002 - - 5.3041487932205200e-001 -3.6561626940965652e-002 - <_> - - 0 -1 225 1.6838125884532928e-002 - - -7.6846949756145477e-002 2.3742672801017761e-001 - <_> - - 0 -1 109 6.1867576092481613e-002 - - 3.4019146114587784e-002 -5.8948117494583130e-001 - <_> - - 0 -1 36 1.9018281251192093e-002 - - -8.8034287095069885e-002 2.8218820691108704e-001 - <_> - - 0 -1 288 9.3320291489362717e-003 - - 3.1055718660354614e-002 -6.0995835065841675e-001 - <_> - - 0 -1 553 -1.7446001293137670e-003 - - -3.1894925236701965e-001 5.7640552520751953e-002 - <_> - - 0 -1 497 -3.7551252171397209e-004 - - -2.9193779826164246e-001 6.5971598029136658e-002 - <_> - - 0 -1 906 -3.6254348233342171e-003 - - -5.2228099107742310e-001 3.2974440604448318e-002 - <_> - - 0 -1 49 3.1154025346040726e-003 - - 3.4256361424922943e-002 -4.9392226338386536e-001 - <_> - - 0 -1 761 -6.5814116969704628e-003 - - -8.5536497831344604e-001 1.7195183783769608e-002 - <_> - - 0 -1 154 3.6019994877278805e-004 - - -1.1677443981170654e-001 1.4939773082733154e-001 - <_> - - 0 -1 42 2.1521452814340591e-002 - - 6.1724990606307983e-002 -3.0582705140113831e-001 - <_> - - 0 -1 304 -3.1574545428156853e-003 - - 2.7675440907478333e-001 -7.9728044569492340e-002 - <_> - - 0 -1 608 6.8585420958697796e-003 - - -4.5498296618461609e-002 4.0476050972938538e-001 - <_> - - 0 -1 201 2.3597612977027893e-002 - - -6.8263813853263855e-002 2.7455106377601624e-001 - <_> - - 0 -1 182 4.1193626821041107e-002 - - 2.7521848678588867e-002 -7.5676482915878296e-001 - <_> - - 0 -1 133 -1.2081373482942581e-002 - - -6.3366323709487915e-001 2.1798284724354744e-002 - <_> - - 0 -1 716 -4.3834196403622627e-003 - - 2.2090788185596466e-001 -8.4348171949386597e-002 - <_> - - 0 -1 619 -9.1258285101503134e-004 - - -3.3701941370964050e-001 5.0720885396003723e-002 - <_> - - 0 -1 675 -8.5975639522075653e-003 - - 1.1742196232080460e-001 -1.5156917273998260e-001 - <_> - - 0 -1 904 -7.4663115665316582e-003 - - 4.0097141265869141e-001 -4.4417705386877060e-002 - <_> - - 0 -1 193 1.2276999652385712e-002 - - -7.3920600116252899e-002 2.5140073895454407e-001 - <_> - - 0 -1 283 -2.6504354551434517e-002 - - 1.3177506625652313e-001 -1.5368436276912689e-001 - <_> - - 0 -1 359 -2.9700677841901779e-002 - - -5.3993326425552368e-001 3.4572057425975800e-002 - <_> - - 0 -1 549 -1.0448409244418144e-002 - - 4.0107232332229614e-001 -4.6194877475500107e-002 - <_> - - 0 -1 274 5.0177536904811859e-003 - - -6.5788470208644867e-002 2.5757649540901184e-001 - <_> - - 0 -1 509 2.3238372057676315e-002 - - 2.3455925285816193e-002 -7.7699542045593262e-001 - <_> - - 0 -1 908 -4.9220167100429535e-002 - - 3.9117750525474548e-001 -4.7477778047323227e-002 - <_> - - 0 -1 936 -9.7046373412013054e-003 - - 3.3891412615776062e-001 -5.0453528761863708e-002 - <_> - - 0 -1 856 1.6913980245590210e-002 - - 4.0467191487550735e-002 -4.3838000297546387e-001 - <_> - - 0 -1 129 -7.5155749917030334e-002 - - -6.0346192121505737e-001 2.7455519884824753e-002 - <_> - - 0 -1 436 1.1202652007341385e-002 - - 2.4983508512377739e-002 -5.8596074581146240e-001 - <_> - - 0 -1 266 -3.9950847625732422e-002 - - -5.3495115041732788e-001 2.9331879690289497e-002 - <_> - - 0 -1 1 7.1143209934234619e-003 - - 3.1055316329002380e-002 -5.1785355806350708e-001 - <_> - - 0 -1 930 -2.7165055274963379e-002 - - 3.4092447161674500e-001 -4.8697970807552338e-002 - <_> - - 0 -1 135 1.5079226344823837e-002 - - -1.2215464562177658e-001 1.3460277020931244e-001 - <_> - - 0 -1 842 5.4478123784065247e-003 - - -9.0178862214088440e-002 1.9025686383247375e-001 - <_> - - 0 -1 381 -7.4798073619604111e-003 - - 2.4245217442512512e-001 -6.8944938480854034e-002 - <_> - - 0 -1 412 2.9248408973217010e-002 - - -8.9382030069828033e-002 1.9680260121822357e-001 - <_> - - 0 -1 613 -5.1055247895419598e-003 - - -4.0537586808204651e-001 4.3955769389867783e-002 - <_> - - 0 -1 417 -5.7464219629764557e-002 - - -7.8487586975097656e-001 1.8840260803699493e-002 - <_> - - 0 -1 682 -1.3099622447043657e-003 - - 1.2043049931526184e-001 -1.2602043151855469e-001 - <_> - - 0 -1 409 -1.0759031400084496e-002 - - 4.6101579070091248e-001 -3.9381790906190872e-002 - <_> - - 0 -1 440 -4.4700078666210175e-002 - - -4.9018231034278870e-001 3.9805438369512558e-002 - <_> - - 0 -1 697 2.6103520765900612e-002 - - 3.3186998218297958e-002 -4.4388863444328308e-001 - <_> - - 0 -1 722 -3.0565187335014343e-003 - - -3.1978246569633484e-001 4.8716515302658081e-002 - <_> - - 0 -1 113 6.5829858183860779e-002 - - 1.8730893731117249e-002 -7.3743104934692383e-001 - <_> - - 0 -1 57 2.5423550978302956e-003 - - 6.1064947396516800e-002 -2.3935855925083160e-001 - <_> - - 0 -1 755 -1.7830528318881989e-002 - - 3.3646425604820251e-001 -4.3943304568529129e-002 - <_> - - 0 -1 223 5.9305625036358833e-003 - - -6.8004354834556580e-002 2.1438401937484741e-001 - <_> - - 0 -1 156 -4.7256931662559509e-002 - - 2.3610806465148926e-001 -7.9913109540939331e-002 - <_> - - 0 -1 146 1.7100328579545021e-002 - - -4.8104494810104370e-002 3.4734794497489929e-001 - <_> - - 0 -1 174 -3.4349232912063599e-002 - - 1.6535361111164093e-001 -8.9516580104827881e-002 - <_> - - 0 -1 370 1.6256177332252264e-003 - - -7.9110637307167053e-002 1.9441387057304382e-001 - <_> - - 0 -1 724 -1.8217334523797035e-002 - - 4.5723637938499451e-001 -3.1193139031529427e-002 - <_> - - 0 -1 749 2.1156244911253452e-003 - - 2.7684733271598816e-002 -5.4580938816070557e-001 - <_> - - 0 -1 169 -2.6387263089418411e-002 - - 2.4881765246391296e-001 -5.7665079832077026e-002 - <_> - - 0 -1 18 4.5990861952304840e-002 - - -1.2064179033041000e-001 1.2435591220855713e-001 - <_> - - 0 -1 523 1.0681749880313873e-001 - - 5.0562918186187744e-002 -3.4403973817825317e-001 - - <_> - 85 - -2.2744355201721191e+000 - - <_> - - 0 -1 252 1.6897995024919510e-002 - - -6.9196498394012451e-001 -5.5616941303014755e-002 - <_> - - 0 -1 862 1.1701794341206551e-002 - - -2.7923116087913513e-001 3.9880016446113586e-001 - <_> - - 0 -1 618 2.7141885831952095e-002 - - 1.4071331918239594e-001 -4.8508083820343018e-001 - <_> - - 0 -1 949 -1.4755494194105268e-003 - - 3.7315878272056580e-001 -1.4565770328044891e-001 - <_> - - 0 -1 464 1.5615923330187798e-003 - - -9.6974156796932220e-002 3.6338686943054199e-001 - <_> - - 0 -1 292 -3.5046115517616272e-002 - - 6.5541946887969971e-001 -6.3480094075202942e-002 - <_> - - 0 -1 471 -2.7439640834927559e-003 - - -4.4147095084190369e-001 8.3881981670856476e-002 - <_> - - 0 -1 128 1.3140615075826645e-002 - - 6.2391642481088638e-002 -5.2230197191238403e-001 - <_> - - 0 -1 624 -2.3408148437738419e-002 - - -5.7339686155319214e-001 6.4651705324649811e-002 - <_> - - 0 -1 878 1.9269579788669944e-003 - - -1.3906709849834442e-001 2.6013106107711792e-001 - <_> - - 0 -1 510 9.1457850066944957e-004 - - 8.7518453598022461e-002 -4.9381819367408752e-001 - <_> - - 0 -1 76 -9.2652775347232819e-003 - - -4.3321701884269714e-001 5.2230410277843475e-002 - <_> - - 0 -1 437 -2.0753231365233660e-003 - - -5.0082236528396606e-001 6.1019111424684525e-002 - <_> - - 0 -1 791 1.9411731045693159e-003 - - -7.8411623835563660e-002 3.5945037007331848e-001 - <_> - - 0 -1 774 -1.2042262824252248e-003 - - 2.4952164292335510e-001 -1.1495979875326157e-001 - <_> - - 0 -1 428 4.5398853719234467e-002 - - 4.9534358084201813e-002 -5.7811236381530762e-001 - <_> - - 0 -1 243 1.6548346728086472e-002 - - 4.0716260671615601e-002 -5.4614287614822388e-001 - <_> - - 0 -1 747 -2.6393149048089981e-002 - - -6.4222121238708496e-001 3.5461250692605972e-002 - <_> - - 0 -1 315 -7.9056806862354279e-003 - - 2.7603831887245178e-001 -9.6884578466415405e-002 - <_> - - 0 -1 294 -8.6138453334569931e-003 - - 3.4293037652969360e-001 -9.2569984495639801e-002 - <_> - - 0 -1 220 1.2120688334107399e-002 - - 4.1071321815252304e-002 -5.9789633750915527e-001 - <_> - - 0 -1 213 -2.3794029839336872e-003 - - 1.7102584242820740e-001 -1.3294184207916260e-001 - <_> - - 0 -1 667 1.5191107988357544e-002 - - -5.9681247919797897e-002 3.9729467034339905e-001 - <_> - - 0 -1 497 -9.4484502915292978e-004 - - -4.9290084838867188e-001 4.8412941396236420e-002 - <_> - - 0 -1 110 -7.5291972607374191e-003 - - -4.4807717204093933e-001 4.6233657747507095e-002 - <_> - - 0 -1 226 2.0139738917350769e-002 - - -8.7880477309226990e-002 2.5611591339111328e-001 - <_> - - 0 -1 934 -6.2278993427753448e-003 - - 3.8167408108711243e-001 -5.7190407067537308e-002 - <_> - - 0 -1 485 -1.4294605702161789e-002 - - 2.2094787657260895e-001 -1.0475759208202362e-001 - <_> - - 0 -1 707 -5.4574096575379372e-003 - - 2.4806049466133118e-001 -8.7989374995231628e-002 - <_> - - 0 -1 928 1.1277779936790466e-002 - - -6.8190395832061768e-002 3.0197840929031372e-001 - <_> - - 0 -1 193 1.2542145326733589e-002 - - -7.4142687022686005e-002 2.5129452347755432e-001 - <_> - - 0 -1 161 -1.0840824991464615e-001 - - -6.1061251163482666e-001 3.2729376107454300e-002 - <_> - - 0 -1 403 1.5083145117387176e-003 - - -7.0102758705615997e-002 3.0823647975921631e-001 - <_> - - 0 -1 745 -6.4324252307415009e-002 - - -7.6457482576370239e-001 2.8049679473042488e-002 - <_> - - 0 -1 635 -1.0857153683900833e-002 - - 3.0212178826332092e-001 -6.9806925952434540e-002 - <_> - - 0 -1 93 5.6619346141815186e-002 - - -1.2564770877361298e-001 1.7084783315658569e-001 - <_> - - 0 -1 576 -2.4015609174966812e-002 - - -4.6767771244049072e-001 4.4055789709091187e-002 - <_> - - 0 -1 554 1.6571693122386932e-002 - - -1.5079098939895630e-001 1.3097193837165833e-001 - <_> - - 0 -1 452 -1.3210725039243698e-002 - - 4.0740290284156799e-001 -4.6674277633428574e-002 - <_> - - 0 -1 121 -9.6322391182184219e-003 - - -3.4347525238990784e-001 5.1074773073196411e-002 - <_> - - 0 -1 155 1.2867329642176628e-002 - - -9.5492877066135406e-002 1.9662295281887054e-001 - <_> - - 0 -1 915 2.5710439309477806e-002 - - 2.4007089436054230e-002 -7.1648633480072021e-001 - <_> - - 0 -1 116 -7.6815150678157806e-003 - - -6.2318617105484009e-001 2.3343794047832489e-002 - <_> - - 0 -1 709 -3.0568044167011976e-003 - - 1.6469573974609375e-001 -1.0857288539409637e-001 - <_> - - 0 -1 35 7.0850662887096405e-002 - - 2.7203138917684555e-002 -6.5618228912353516e-001 - <_> - - 0 -1 639 -1.9809347577393055e-003 - - -6.1460441350936890e-001 2.4520153179764748e-002 - <_> - - 0 -1 236 7.0611112751066685e-003 - - -7.4253976345062256e-002 2.5537955760955811e-001 - <_> - - 0 -1 186 3.0076294206082821e-003 - - -9.6944920718669891e-002 2.4430949985980988e-001 - <_> - - 0 -1 172 -3.0732229351997375e-002 - - -6.0257941484451294e-001 2.9267333447933197e-002 - <_> - - 0 -1 450 1.6364458948373795e-002 - - 2.3035932332277298e-002 -6.2698912620544434e-001 - <_> - - 0 -1 114 1.4988467097282410e-001 - - -4.8197094351053238e-002 3.9452686905860901e-001 - <_> - - 0 -1 197 -8.2194441929459572e-003 - - 1.0664895921945572e-001 -1.8545584380626678e-001 - <_> - - 0 -1 84 -8.2502886652946472e-003 - - 1.2596343457698822e-001 -1.4223846793174744e-001 - <_> - - 0 -1 73 1.3518449850380421e-002 - - 7.5415953993797302e-002 -2.6633748412132263e-001 - <_> - - 0 -1 446 -1.4376571401953697e-002 - - 3.4983170032501221e-001 -4.7824632376432419e-002 - <_> - - 0 -1 602 1.2734688818454742e-002 - - -5.0567589700222015e-002 3.5038754343986511e-001 - <_> - - 0 -1 857 -1.3710462953895330e-003 - - 1.8082229793071747e-001 -9.6974305808544159e-002 - <_> - - 0 -1 306 -2.6267360895872116e-002 - - 4.1006618738174438e-001 -4.0112689137458801e-002 - <_> - - 0 -1 59 2.1102664992213249e-002 - - 2.7978396043181419e-002 -5.8651155233383179e-001 - <_> - - 0 -1 909 -1.4474790543317795e-002 - - 3.6871808767318726e-001 -4.5918777585029602e-002 - <_> - - 0 -1 817 7.2440858930349350e-003 - - -7.5330309569835663e-002 2.0376025140285492e-001 - <_> - - 0 -1 815 1.0546022094786167e-002 - - -6.1415266245603561e-002 3.0458399653434753e-001 - <_> - - 0 -1 101 5.5407796055078506e-002 - - 2.5191115215420723e-002 -6.5944659709930420e-001 - <_> - - 0 -1 91 9.4949062913656235e-003 - - -1.5944498777389526e-001 1.0568149387836456e-001 - <_> - - 0 -1 925 -6.2020965851843357e-003 - - 2.7509790658950806e-001 -6.5234497189521790e-002 - <_> - - 0 -1 507 1.3317565619945526e-001 - - 2.2181767970323563e-002 -7.3483341932296753e-001 - <_> - - 0 -1 448 2.5796357076615095e-003 - - 1.9557425752282143e-002 -6.5313297510147095e-001 - <_> - - 0 -1 390 3.4660965204238892e-002 - - -5.1162503659725189e-002 3.2590973377227783e-001 - <_> - - 0 -1 30 9.5607116818428040e-002 - - -2.4739582091569901e-002 5.7837259769439697e-001 - <_> - - 0 -1 148 1.6605708748102188e-002 - - 5.7055354118347168e-002 -3.5466542840003967e-001 - <_> - - 0 -1 123 1.1670887470245361e-002 - - -8.0407410860061646e-002 1.9471745193004608e-001 - <_> - - 0 -1 208 1.0822312906384468e-002 - - 2.6732437312602997e-002 -5.8917897939682007e-001 - <_> - - 0 -1 708 2.7245271950960159e-002 - - 3.0616169795393944e-002 -4.8082390427589417e-001 - <_> - - 0 -1 217 -1.3694438338279724e-001 - - -4.8311397433280945e-001 3.3773597329854965e-002 - <_> - - 0 -1 899 -1.4758360339328647e-003 - - 2.5075155496597290e-001 -6.7788824439048767e-002 - <_> - - 0 -1 275 2.7167074382305145e-002 - - 2.5224637240171432e-002 -6.3691717386245728e-001 - <_> - - 0 -1 657 1.8945746123790741e-002 - - -5.7760879397392273e-002 2.6149269938468933e-001 - <_> - - 0 -1 102 1.2368987500667572e-001 - - -3.2363165169954300e-002 4.5130741596221924e-001 - <_> - - 0 -1 43 3.9710897952318192e-002 - - -3.0226422473788261e-002 4.6590203046798706e-001 - <_> - - 0 -1 136 -3.6290191113948822e-002 - - 3.6348423361778259e-001 -4.1874047368764877e-002 - <_> - - 0 -1 846 2.5501720607280731e-002 - - 3.5494077950716019e-002 -4.5727846026420593e-001 - <_> - - 0 -1 772 5.3392872214317322e-003 - - -6.0394711792469025e-002 2.5488924980163574e-001 - <_> - - 0 -1 950 7.9108221689239144e-004 - - 5.4109033197164536e-002 -2.7065926790237427e-001 - <_> - - 0 -1 929 -1.6701441258192062e-002 - - 4.8040628433227539e-001 -3.0404916033148766e-002 - <_> - - 0 -1 566 7.1975095197558403e-003 - - -7.0362947881221771e-002 1.9959311187267303e-001 - - <_> - 100 - -2.2887177467346191e+000 - - <_> - - 0 -1 286 -1.6051483154296875e-001 - - 9.3009121716022491e-002 -6.5350115299224854e-001 - <_> - - 0 -1 623 1.2457310222089291e-002 - - -3.1717920303344727e-001 2.3368784785270691e-001 - <_> - - 0 -1 29 2.3608796764165163e-003 - - -2.9248744249343872e-001 1.8054312467575073e-001 - <_> - - 0 -1 339 1.4379444532096386e-002 - - -5.7956293225288391e-002 7.6479458808898926e-001 - <_> - - 0 -1 871 6.8126469850540161e-003 - - -1.4748461544513702e-001 2.3818431794643402e-001 - <_> - - 0 -1 247 4.3051101267337799e-002 - - 8.7559670209884644e-002 -7.2269368171691895e-001 - <_> - - 0 -1 867 -5.0154160708189011e-002 - - 3.1918609142303467e-001 -1.3582608103752136e-001 - <_> - - 0 -1 212 -3.1796738039702177e-003 - - 2.7597072720527649e-001 -9.0522617101669312e-002 - <_> - - 0 -1 677 -1.2342665344476700e-002 - - -3.9158377051353455e-001 5.3565893322229385e-002 - <_> - - 0 -1 897 1.1861260049045086e-002 - - -6.1517983675003052e-002 3.6472269892692566e-001 - <_> - - 0 -1 252 -2.1985735744237900e-002 - - 6.5143728256225586e-001 -4.0598560124635696e-002 - <_> - - 0 -1 63 -1.2279948219656944e-002 - - 2.1631649136543274e-001 -1.2024078518152237e-001 - <_> - - 0 -1 640 8.2167033106088638e-003 - - -9.4497188925743103e-002 2.4828021228313446e-001 - <_> - - 0 -1 357 1.0111754760146141e-002 - - -3.3160492777824402e-002 6.2502938508987427e-001 - <_> - - 0 -1 924 -7.7025225618854165e-004 - - 2.3218974471092224e-001 -1.0222402960062027e-001 - <_> - - 0 -1 467 -1.4080689288675785e-003 - - 1.3447046279907227e-001 -1.6994857788085938e-001 - <_> - - 0 -1 140 1.0420590639114380e-002 - - 2.9845444485545158e-002 -7.5183397531509399e-001 - <_> - - 0 -1 356 1.3691674917936325e-002 - - 2.8088988736271858e-002 -5.7496672868728638e-001 - <_> - - 0 -1 155 1.7491653561592102e-002 - - -9.8534837365150452e-002 2.2351761162281036e-001 - <_> - - 0 -1 762 7.4883676134049892e-003 - - -9.7045794129371643e-002 2.0625646412372589e-001 - <_> - - 0 -1 104 -8.4146633744239807e-003 - - -4.8472663760185242e-001 4.1302844882011414e-002 - <_> - - 0 -1 342 3.0617808923125267e-002 - - -3.7334404885768890e-002 6.1179280281066895e-001 - <_> - - 0 -1 326 1.6346010379493237e-003 - - -1.8315000832080841e-001 1.0951925814151764e-001 - <_> - - 0 -1 901 -1.1816060170531273e-002 - - 3.0801647901535034e-001 -6.1308264732360840e-002 - <_> - - 0 -1 351 -1.0661455802619457e-002 - - 3.3249661326408386e-001 -5.0642840564250946e-002 - <_> - - 0 -1 84 -9.6190627664327621e-003 - - 1.3975782692432404e-001 -1.3763442635536194e-001 - <_> - - 0 -1 289 -1.2881286442279816e-002 - - 3.6742180585861206e-001 -5.0860747694969177e-002 - <_> - - 0 -1 824 1.3589482754468918e-002 - - -5.1274802535772324e-002 3.1885984539985657e-001 - <_> - - 0 -1 234 4.6852193772792816e-003 - - -7.2946086525917053e-002 2.5181108713150024e-001 - <_> - - 0 -1 432 1.9752513617277145e-002 - - -1.4621073007583618e-001 1.2726816534996033e-001 - <_> - - 0 -1 454 3.6341309547424316e-002 - - 2.4868825450539589e-002 -6.9947302341461182e-001 - <_> - - 0 -1 636 -1.1957485694438219e-003 - - 1.5675933659076691e-001 -1.1705233156681061e-001 - <_> - - 0 -1 40 -9.9432021379470825e-003 - - -3.4487789869308472e-001 4.9324721097946167e-002 - <_> - - 0 -1 269 6.0083293356001377e-003 - - 3.3568043261766434e-002 -4.3638321757316589e-001 - <_> - - 0 -1 14 9.6278168261051178e-002 - - 4.0310282260179520e-002 -3.9266702532768250e-001 - <_> - - 0 -1 154 4.3072472908534110e-004 - - -1.0427023470401764e-001 1.4397470653057098e-001 - <_> - - 0 -1 504 -4.7720400616526604e-003 - - -4.4805496931076050e-001 3.4855298697948456e-002 - <_> - - 0 -1 87 -1.0016669984906912e-003 - - 1.3649077713489532e-001 -1.2140301614999771e-001 - <_> - - 0 -1 254 2.3308012634515762e-002 - - 3.6392133682966232e-002 -4.5537215471267700e-001 - <_> - - 0 -1 802 -4.8546120524406433e-003 - - 1.5793082118034363e-001 -9.6185155212879181e-002 - <_> - - 0 -1 795 -6.5906550735235214e-003 - - 3.2166856527328491e-001 -4.9290131777524948e-002 - <_> - - 0 -1 126 -2.7226015925407410e-002 - - 2.8352561593055725e-001 -5.1984444260597229e-002 - <_> - - 0 -1 938 5.5622356012463570e-003 - - -3.3917389810085297e-002 4.3498530983924866e-001 - <_> - - 0 -1 534 -5.8775981888175011e-003 - - 1.7455618083477020e-001 -8.4790699183940887e-002 - <_> - - 0 -1 627 -1.1768937110900879e-003 - - -4.4403216242790222e-001 3.4572694450616837e-002 - <_> - - 0 -1 625 1.4337021857500076e-003 - - -8.8692568242549896e-002 1.6940893232822418e-001 - <_> - - 0 -1 51 1.3953970745205879e-002 - - 3.9221145212650299e-002 -3.8308286666870117e-001 - <_> - - 0 -1 106 5.3161740303039551e-002 - - -3.9227265864610672e-002 4.0637263655662537e-001 - <_> - - 0 -1 916 1.1670306324958801e-002 - - -6.2661647796630859e-002 2.2897149622440338e-001 - <_> - - 0 -1 524 -8.5611653048545122e-004 - - -3.1393322348594666e-001 4.4154506176710129e-002 - <_> - - 0 -1 362 3.1659279484301805e-003 - - -1.0416875034570694e-001 1.4386938512325287e-001 - <_> - - 0 -1 94 9.2105150222778320e-002 - - 2.5259945541620255e-002 -6.3980853557586670e-001 - <_> - - 0 -1 681 2.2438270971179008e-003 - - 2.9625944793224335e-002 -4.4926467537879944e-001 - <_> - - 0 -1 592 -1.4502200298011303e-002 - - 2.3043723404407501e-001 -6.8583212792873383e-002 - <_> - - 0 -1 17 3.1762875616550446e-002 - - -1.1820482462644577e-001 1.3017164170742035e-001 - <_> - - 0 -1 372 8.3491904661059380e-003 - - -5.4794549942016602e-002 3.0562251806259155e-001 - <_> - - 0 -1 945 1.1813377961516380e-002 - - -4.4218052178621292e-002 3.2657644152641296e-001 - <_> - - 0 -1 517 -4.3407902121543884e-003 - - 2.3012351989746094e-001 -6.2401693314313889e-002 - <_> - - 0 -1 835 -5.1777150481939316e-002 - - -4.2195704579353333e-001 3.3818338066339493e-002 - <_> - - 0 -1 573 9.5773371867835522e-004 - - -1.2982761859893799e-001 1.0589899122714996e-001 - <_> - - 0 -1 329 2.6355611626058817e-003 - - -1.1849098652601242e-001 1.2649086117744446e-001 - <_> - - 0 -1 738 -6.9736450910568237e-002 - - 5.4316484928131104e-001 -2.8468221426010132e-002 - <_> - - 0 -1 166 -4.1691556572914124e-002 - - 1.8529292941093445e-001 -7.9085260629653931e-002 - <_> - - 0 -1 72 3.0405964702367783e-002 - - -6.7499466240406036e-002 2.3227298259735107e-001 - <_> - - 0 -1 202 1.6526731848716736e-001 - - 2.3192871361970901e-002 -6.6413503885269165e-001 - <_> - - 0 -1 244 -7.9902745783329010e-003 - - 1.6699096560478210e-001 -8.0209225416183472e-002 - <_> - - 0 -1 435 -8.4093026816844940e-003 - - 3.8385570049285889e-001 -3.3093310892581940e-002 - <_> - - 0 -1 580 -6.2388582155108452e-003 - - 2.2031579911708832e-001 -5.9756781905889511e-002 - <_> - - 0 -1 416 2.2657278925180435e-002 - - 2.9750887304544449e-002 -4.3571525812149048e-001 - <_> - - 0 -1 245 -3.3273398876190186e-002 - - -7.2214579582214355e-001 1.7277766019105911e-002 - <_> - - 0 -1 805 -7.5985761359333992e-003 - - -4.8032435774803162e-001 2.3796260356903076e-002 - <_> - - 0 -1 490 1.4554752968251705e-002 - - 2.0614990964531898e-002 -5.7951718568801880e-001 - <_> - - 0 -1 348 -2.4409522302448750e-003 - - 1.5682564675807953e-001 -8.2513608038425446e-002 - <_> - - 0 -1 216 -2.7174502611160278e-002 - - -5.4916822910308838e-001 2.3511687293648720e-002 - <_> - - 0 -1 599 1.8674493767321110e-003 - - 3.5896647721529007e-002 -3.5593807697296143e-001 - <_> - - 0 -1 599 -1.7106164013966918e-003 - - -2.9658839106559753e-001 4.5083675533533096e-002 - <_> - - 0 -1 698 -1.2188366800546646e-001 - - -6.8481236696243286e-001 1.6469523310661316e-002 - <_> - - 0 -1 206 1.6452776268124580e-002 - - 1.6632448881864548e-002 -6.3031005859375000e-001 - <_> - - 0 -1 913 3.3029774203896523e-003 - - 5.2817359566688538e-002 -2.3288796842098236e-001 - <_> - - 0 -1 678 6.5974113531410694e-003 - - -5.9827085584402084e-002 2.2615881264209747e-001 - <_> - - 0 -1 947 -2.2020633332431316e-003 - - 2.2270961105823517e-001 -5.8337379246950150e-002 - <_> - - 0 -1 582 -8.9172367006540298e-003 - - 2.3682470619678497e-001 -5.5845208466053009e-002 - <_> - - 0 -1 100 -3.8233667612075806e-002 - - 1.9340702891349792e-001 -7.3905274271965027e-002 - <_> - - 0 -1 214 -5.8171510696411133e-002 - - -3.3873862028121948e-001 3.6934167146682739e-002 - <_> - - 0 -1 142 1.3129880651831627e-002 - - -5.7335916906595230e-002 2.4769510328769684e-001 - <_> - - 0 -1 606 -2.3510225117206573e-002 - - -7.3440921306610107e-001 2.1062126383185387e-002 - <_> - - 0 -1 180 -3.2106369733810425e-002 - - 1.9888436794281006e-001 -6.8882115185260773e-002 - <_> - - 0 -1 798 1.0653462260961533e-002 - - -3.1876940280199051e-002 3.7958627939224243e-001 - <_> - - 0 -1 325 2.5438904762268066e-002 - - -2.5426354259252548e-002 4.6004450321197510e-001 - <_> - - 0 -1 239 2.6357024908065796e-002 - - -4.9807246774435043e-002 2.5959959626197815e-001 - <_> - - 0 -1 525 5.6436131708323956e-003 - - -4.5353759080171585e-002 2.8858882188796997e-001 - <_> - - 0 -1 267 -4.3369065970182419e-003 - - 1.4867325127124786e-001 -8.8411331176757813e-002 - <_> - - 0 -1 215 -1.9298204779624939e-001 - - -5.3079867362976074e-001 2.5263534858822823e-002 - <_> - - 0 -1 734 5.7046163827180862e-002 - - 1.1847544461488724e-002 -8.2090246677398682e-001 - <_> - - 0 -1 352 4.9701407551765442e-002 - - 1.3225952163338661e-002 -6.8998688459396362e-001 - <_> - - 0 -1 278 -2.8292792849242687e-003 - - 1.7430420219898224e-001 -6.6152326762676239e-002 - <_> - - 0 -1 476 -1.4506326988339424e-002 - - -3.1870725750923157e-001 3.8834158331155777e-002 - <_> - - 0 -1 859 3.5564824938774109e-002 - - -5.6947514414787292e-002 2.1859169006347656e-001 - <_> - - 0 -1 98 2.0967530086636543e-002 - - -5.9812918305397034e-002 2.2214832901954651e-001 - <_> - - 0 -1 127 7.3756486177444458e-002 - - 2.5129400193691254e-002 -4.9916529655456543e-001 - - <_> - 100 - -2.2359671592712402e+000 - - <_> - - 0 -1 285 -9.3501225113868713e-002 - - -4.6586804091930389e-002 -7.2199982404708862e-001 - <_> - - 0 -1 238 4.9442616291344166e-003 - - -3.9842179417610168e-001 2.1402300894260406e-001 - <_> - - 0 -1 799 1.0407378897070885e-002 - - -1.3988684117794037e-001 3.9579308032989502e-001 - <_> - - 0 -1 322 -1.4162844978272915e-002 - - 6.4931660890579224e-001 -5.7302106171846390e-002 - <_> - - 0 -1 449 9.8008674103766680e-004 - - -1.7719046771526337e-001 2.0141038298606873e-001 - <_> - - 0 -1 218 1.4206364750862122e-002 - - -9.3258224427700043e-002 3.4144768118858337e-001 - <_> - - 0 -1 879 2.5848676450550556e-003 - - -1.4990748465061188e-001 2.2581319510936737e-001 - <_> - - 0 -1 22 8.0643901601433754e-003 - - -8.8275857269763947e-002 2.8663924336433411e-001 - <_> - - 0 -1 881 -8.6236204952001572e-003 - - 3.3490571379661560e-001 -8.2069411873817444e-002 - <_> - - 0 -1 723 1.2022950686514378e-002 - - -6.3569039106369019e-002 3.9191362261772156e-001 - <_> - - 0 -1 665 -1.5419950708746910e-002 - - 4.4637352228164673e-001 -6.6652692854404449e-002 - <_> - - 0 -1 735 -6.3524805009365082e-003 - - 1.8987259268760681e-001 -1.2892219424247742e-001 - <_> - - 0 -1 408 6.9541163742542267e-002 - - 4.3989829719066620e-002 -4.4642734527587891e-001 - <_> - - 0 -1 368 7.4983224272727966e-002 - - -5.2028596401214600e-002 5.7951992750167847e-001 - <_> - - 0 -1 486 2.0330501720309258e-003 - - -1.3492821156978607e-001 2.0830303430557251e-001 - <_> - - 0 -1 28 1.8707301467657089e-002 - - 3.0162446200847626e-002 -7.5620234012603760e-001 - <_> - - 0 -1 33 9.1869030147790909e-003 - - -1.5992332994937897e-001 1.3838322460651398e-001 - <_> - - 0 -1 473 -2.0068701356649399e-002 - - 4.9636912345886230e-001 -3.8212534040212631e-002 - <_> - - 0 -1 32 9.3690613284707069e-003 - - 2.7963882312178612e-002 -7.0575749874114990e-001 - <_> - - 0 -1 63 -9.2746205627918243e-003 - - 1.7214477062225342e-001 -1.1743877083063126e-001 - <_> - - 0 -1 671 -3.7561631761491299e-003 - - 1.9893965125083923e-001 -1.0429763048887253e-001 - <_> - - 0 -1 642 -2.8749569319188595e-003 - - -3.7584275007247925e-001 4.6344734728336334e-002 - <_> - - 0 -1 145 -1.1727647855877876e-002 - - -4.4696572422981262e-001 4.0343362838029861e-002 - <_> - - 0 -1 590 1.0945920832455158e-002 - - 5.6218206882476807e-002 -2.9916441440582275e-001 - <_> - - 0 -1 341 -1.2209227308630943e-002 - - 3.9286783337593079e-001 -4.2874403297901154e-002 - <_> - - 0 -1 447 -2.5397611781954765e-002 - - -3.8478189706802368e-001 4.3343432247638702e-002 - <_> - - 0 -1 746 -4.5675365254282951e-003 - - 2.3299069702625275e-001 -7.3202215135097504e-002 - <_> - - 0 -1 935 -6.0586854815483093e-003 - - 2.2465232014656067e-001 -7.7056594192981720e-002 - <_> - - 0 -1 131 1.5789955854415894e-002 - - -8.7083600461483002e-002 1.9742278754711151e-001 - <_> - - 0 -1 759 -1.7314129509031773e-003 - - 2.0412902534008026e-001 -8.9147895574569702e-002 - <_> - - 0 -1 939 7.3486715555191040e-003 - - -4.5228123664855957e-002 3.5152116417884827e-001 - <_> - - 0 -1 246 1.6278622671961784e-002 - - 5.0431668758392334e-002 -3.4917074441909790e-001 - <_> - - 0 -1 151 -4.9730124883353710e-003 - - 1.8474133312702179e-001 -9.4716101884841919e-002 - <_> - - 0 -1 334 1.3617072254419327e-002 - - -3.4493431448936462e-002 5.1511102914810181e-001 - <_> - - 0 -1 516 -3.5471074283123016e-002 - - -3.9388224482536316e-001 4.3496731668710709e-002 - <_> - - 0 -1 103 5.2554365247488022e-003 - - -1.2609277665615082e-001 1.2129900604486465e-001 - <_> - - 0 -1 489 -4.1965182870626450e-002 - - -6.2069499492645264e-001 2.4282006546854973e-002 - <_> - - 0 -1 61 9.6745520830154419e-002 - - 3.0231734737753868e-002 -4.6271669864654541e-001 - <_> - - 0 -1 661 -6.8811019882559776e-003 - - 2.8159707784652710e-001 -5.7276148349046707e-002 - <_> - - 0 -1 616 1.0784192010760307e-002 - - -4.8847943544387817e-002 3.2464641332626343e-001 - <_> - - 0 -1 466 -3.3961618319153786e-003 - - 4.0418368577957153e-001 -4.2481750249862671e-002 - <_> - - 0 -1 420 -6.9079827517271042e-003 - - 1.1404169350862503e-001 -1.2768752872943878e-001 - <_> - - 0 -1 167 1.4355555176734924e-001 - - -3.9203863590955734e-002 3.9233651757240295e-001 - <_> - - 0 -1 210 -3.5771834664046764e-003 - - 1.4706018567085266e-001 -1.3173283636569977e-001 - <_> - - 0 -1 439 3.0234435573220253e-002 - - 1.8946202471852303e-002 -8.0503576993942261e-001 - <_> - - 0 -1 567 7.8391470015048981e-004 - - 8.7953150272369385e-002 -1.6678945720195770e-001 - <_> - - 0 -1 42 -2.2085051983594894e-002 - - -3.8623884320259094e-001 4.2284723371267319e-002 - <_> - - 0 -1 818 -2.6205494999885559e-002 - - 1.6326524317264557e-001 -1.0225085169076920e-001 - <_> - - 0 -1 581 -9.5918308943510056e-003 - - 2.5218212604522705e-001 -6.0809265822172165e-002 - <_> - - 0 -1 242 -2.6144424453377724e-002 - - -6.9495695829391479e-001 2.2685619071125984e-002 - <_> - - 0 -1 424 9.2253191396594048e-003 - - -8.8936053216457367e-002 1.6087681055068970e-001 - <_> - - 0 -1 843 -3.1533516012132168e-003 - - 2.2563895583152771e-001 -6.3495889306068420e-002 - <_> - - 0 -1 56 -6.6996468231081963e-003 - - -2.4251624941825867e-001 6.1135187745094299e-002 - <_> - - 0 -1 282 -1.2584788724780083e-002 - - 2.9776036739349365e-001 -4.9212120473384857e-002 - <_> - - 0 -1 903 -4.2148698121309280e-003 - - 3.0259734392166138e-001 -4.4676482677459717e-002 - <_> - - 0 -1 653 -9.4317561015486717e-003 - - 1.1043215543031693e-001 -1.2356746196746826e-001 - <_> - - 0 -1 654 2.1886886097490788e-003 - - -6.1201002448797226e-002 2.2712202370166779e-001 - <_> - - 0 -1 398 2.4963401257991791e-002 - - 2.4292556568980217e-002 -5.4634368419647217e-001 - <_> - - 0 -1 205 -8.7548848241567612e-003 - - 2.5255405902862549e-001 -5.4619345813989639e-002 - <_> - - 0 -1 487 7.0049557834863663e-003 - - 3.9875753223896027e-002 -3.8009002804756165e-001 - <_> - - 0 -1 258 3.7140229251235723e-003 - - -9.3989297747612000e-002 1.5871012210845947e-001 - <_> - - 0 -1 565 -8.4969010204076767e-003 - - 2.0674896240234375e-001 -6.4190469682216644e-002 - <_> - - 0 -1 147 -5.0333619117736816e-002 - - 3.0274888873100281e-001 -4.3931342661380768e-002 - <_> - - 0 -1 80 7.2737382724881172e-003 - - -8.7947271764278412e-002 1.5312801301479340e-001 - <_> - - 0 -1 58 9.9609624594449997e-003 - - 4.6528778970241547e-002 -2.9576960206031799e-001 - <_> - - 0 -1 909 -1.3673231005668640e-002 - - 3.2159554958343506e-001 -4.6024739742279053e-002 - <_> - - 0 -1 460 2.4796918034553528e-002 - - 2.3450840264558792e-002 -6.3208627700805664e-001 - <_> - - 0 -1 790 -8.9704394340515137e-003 - - 1.7290446162223816e-001 -8.1694059073925018e-002 - <_> - - 0 -1 191 -2.3638601414859295e-003 - - 1.0641085356473923e-001 -1.2656879425048828e-001 - <_> - - 0 -1 45 -3.0800779350101948e-003 - - 1.4082619547843933e-001 -9.4026930630207062e-002 - <_> - - 0 -1 138 -1.0759308934211731e-002 - - -4.0597277879714966e-001 3.1949173659086227e-002 - <_> - - 0 -1 176 7.2143180295825005e-003 - - 1.2054420076310635e-002 -8.5538458824157715e-001 - <_> - - 0 -1 384 1.9637834280729294e-002 - - -4.5702952891588211e-002 3.0082041025161743e-001 - <_> - - 0 -1 181 -2.6587650179862976e-002 - - -4.8827502131462097e-001 2.5739965960383415e-002 - <_> - - 0 -1 429 -2.8913402929902077e-003 - - 1.5120062232017517e-001 -8.3084680140018463e-002 - <_> - - 0 -1 462 -1.7486744036432356e-004 - - -1.6527174413204193e-001 7.9318381845951080e-002 - <_> - - 0 -1 93 5.8025561273097992e-002 - - -9.3625135719776154e-002 1.3428705930709839e-001 - <_> - - 0 -1 895 7.7226985013112426e-004 - - 6.4624220132827759e-002 -1.9347991049289703e-001 - <_> - - 0 -1 506 -6.4398542046546936e-002 - - -8.3100390434265137e-001 1.3259679079055786e-002 - <_> - - 0 -1 794 2.7848746627569199e-002 - - 1.3673855923116207e-002 -7.1600478887557983e-001 - <_> - - 0 -1 308 -1.7273522913455963e-002 - - -6.1328560113906860e-001 1.7129577696323395e-002 - <_> - - 0 -1 117 2.2771380841732025e-002 - - 1.4634012244641781e-002 -6.9125133752822876e-001 - <_> - - 0 -1 155 1.7879681661725044e-002 - - -6.6493585705757141e-002 1.8808430433273315e-001 - <_> - - 0 -1 188 -7.5980871915817261e-003 - - 2.1208682656288147e-001 -6.9655627012252808e-002 - <_> - - 0 -1 468 8.3334632217884064e-003 - - -4.5091670006513596e-002 2.5533476471900940e-001 - <_> - - 0 -1 451 9.5366090536117554e-003 - - 3.3587828278541565e-002 -3.8594719767570496e-001 - <_> - - 0 -1 349 1.9022613763809204e-002 - - -4.2280010879039764e-002 3.0593034625053406e-001 - <_> - - 0 -1 522 3.6582566797733307e-002 - - -6.8928316235542297e-002 1.8224547803401947e-001 - <_> - - 0 -1 159 -2.5450623035430908e-001 - - -7.9693830013275146e-001 1.6522107645869255e-002 - <_> - - 0 -1 905 -5.8933448046445847e-002 - - 3.6613103747367859e-001 -3.7511564791202545e-002 - <_> - - 0 -1 64 8.5881188511848450e-002 - - 3.5934593528509140e-002 -3.7825050950050354e-001 - <_> - - 0 -1 810 -6.8585649132728577e-002 - - -5.4236054420471191e-001 2.0104518160223961e-002 - <_> - - 0 -1 529 4.8160655423998833e-003 - - -4.3085236102342606e-002 2.8620475530624390e-001 - <_> - - 0 -1 498 6.1599753098562360e-004 - - 5.0022143870592117e-002 -2.7295649051666260e-001 - <_> - - 0 -1 710 7.4446541257202625e-003 - - -6.7837722599506378e-002 1.9111913442611694e-001 - <_> - - 0 -1 333 1.3981198891997337e-002 - - 2.1413592621684074e-002 -6.2269157171249390e-001 - <_> - - 0 -1 941 -1.4853913336992264e-002 - - 4.0018329024314880e-001 -3.4097265452146530e-002 - <_> - - 0 -1 3 1.3497969135642052e-002 - - 3.0796987935900688e-002 -4.2009493708610535e-001 - <_> - - 0 -1 887 9.1592809185385704e-003 - - 3.0317120254039764e-002 -3.5625258088111877e-001 - <_> - - 0 -1 11 2.9643373563885689e-002 - - -1.1319724470376968e-001 1.0797596722841263e-001 - - <_> - 100 - -2.0808603763580322e+000 - - <_> - - 0 -1 284 -7.5377658009529114e-002 - - -1.0360029339790344e-001 -7.0443350076675415e-001 - <_> - - 0 -1 301 -4.6968553215265274e-003 - - 2.6461517810821533e-001 -2.6632103323936462e-001 - <_> - - 0 -1 851 4.5106429606676102e-003 - - -1.9236828386783600e-001 2.4530071020126343e-001 - <_> - - 0 -1 324 -1.3677397742867470e-002 - - 4.8842102289199829e-001 -7.8666172921657562e-002 - <_> - - 0 -1 621 8.4240939468145370e-003 - - -1.1324168741703033e-001 2.8638821840286255e-001 - <_> - - 0 -1 827 1.0163122788071632e-003 - - -1.7518180608749390e-001 1.6443368792533875e-001 - <_> - - 0 -1 375 3.2988777384161949e-003 - - -7.6549887657165527e-002 2.8202313184738159e-001 - <_> - - 0 -1 85 1.4450255781412125e-002 - - -1.4695851504802704e-001 1.9833040237426758e-001 - <_> - - 0 -1 328 5.9788756072521210e-002 - - -2.7597570791840553e-002 6.0443407297134399e-001 - <_> - - 0 -1 668 -4.0823942981660366e-003 - - 3.7376108765602112e-001 -6.6522486507892609e-002 - <_> - - 0 -1 651 9.4101820141077042e-003 - - -7.5030580163002014e-002 3.3643370866775513e-001 - <_> - - 0 -1 770 1.2895615771412849e-002 - - -6.6736064851284027e-002 3.4388977289199829e-001 - <_> - - 0 -1 0 1.8281452357769012e-003 - - -7.6577022671699524e-002 3.0855756998062134e-001 - <_> - - 0 -1 811 1.2842542491853237e-002 - - -6.6831089556217194e-002 3.5320571064949036e-001 - <_> - - 0 -1 556 2.6731539517641068e-002 - - 4.3738048523664474e-002 -5.4744714498519897e-001 - <_> - - 0 -1 593 -2.1810945123434067e-002 - - -4.9039456248283386e-001 3.5305779427289963e-002 - <_> - - 0 -1 397 1.4120168052613735e-003 - - -1.7367108166217804e-001 1.1572990566492081e-001 - <_> - - 0 -1 494 1.5707452548667789e-003 - - -1.1095841974020004e-001 1.6702808439731598e-001 - <_> - - 0 -1 869 -7.3387438897043467e-004 - - 1.8617554008960724e-001 -9.1079324483871460e-002 - <_> - - 0 -1 495 -6.4388057217001915e-004 - - -2.6845857501029968e-001 6.1447944492101669e-002 - <_> - - 0 -1 427 1.1414934694766998e-001 - - 2.0975470542907715e-002 -7.1357190608978271e-001 - <_> - - 0 -1 931 1.3404923956841230e-003 - - -9.0797364711761475e-002 1.8696101009845734e-001 - <_> - - 0 -1 46 2.3350983858108521e-002 - - 2.9028130695223808e-002 -5.2345710992813110e-001 - <_> - - 0 -1 143 1.5429967083036900e-002 - - -9.4941243529319763e-002 1.6368669271469116e-001 - <_> - - 0 -1 357 1.0943166911602020e-002 - - -3.1125182285904884e-002 5.9323889017105103e-001 - <_> - - 0 -1 705 2.6839743368327618e-003 - - -7.5778268277645111e-002 2.1814092993736267e-001 - <_> - - 0 -1 39 -6.2261838465929031e-003 - - -2.8783807158470154e-001 5.5791638791561127e-002 - <_> - - 0 -1 207 1.0724554955959320e-001 - - 2.4116434156894684e-002 -5.8035951852798462e-001 - <_> - - 0 -1 199 -6.5348353236913681e-003 - - -2.8312593698501587e-001 5.1936011761426926e-002 - <_> - - 0 -1 415 -1.1670710518956184e-003 - - -1.8463888764381409e-001 8.3705939352512360e-002 - <_> - - 0 -1 808 -1.4070876641198993e-003 - - 1.5036344528198242e-001 -1.0249616205692291e-001 - <_> - - 0 -1 122 -3.9912573993206024e-002 - - -3.8639402389526367e-001 3.9821352809667587e-002 - <_> - - 0 -1 413 1.0381672531366348e-002 - - -1.2079605460166931e-001 1.2945999205112457e-001 - <_> - - 0 -1 453 -9.9312573671340942e-002 - - 6.0750687122344971e-001 -2.8503781184554100e-002 - <_> - - 0 -1 816 1.0430534370243549e-002 - - -6.0343675315380096e-002 2.3242907226085663e-001 - <_> - - 0 -1 445 3.5891016013920307e-003 - - 4.1434522718191147e-002 -3.4602153301239014e-001 - <_> - - 0 -1 788 1.0015227831900120e-002 - - -5.6792665272951126e-002 2.6468506455421448e-001 - <_> - - 0 -1 749 -9.2321680858731270e-004 - - -3.1470552086830139e-001 4.6375431120395660e-002 - <_> - - 0 -1 384 2.0065717399120331e-002 - - -4.7381434589624405e-002 3.2506260275840759e-001 - <_> - - 0 -1 782 2.0691626705229282e-003 - - -8.8068872690200806e-002 1.7662553489208221e-001 - <_> - - 0 -1 150 -2.0592920482158661e-002 - - 2.1614389121532440e-001 -6.7837409675121307e-002 - <_> - - 0 -1 729 -2.5132454931735992e-002 - - 2.9875260591506958e-001 -5.0642240792512894e-002 - <_> - - 0 -1 893 1.6763649880886078e-002 - - -5.6825786828994751e-002 2.6688432693481445e-001 - <_> - - 0 -1 5 2.4304956197738647e-002 - - -7.3691956698894501e-002 1.8922545015811920e-001 - <_> - - 0 -1 604 5.2945837378501892e-003 - - -6.8203508853912354e-002 2.3238344490528107e-001 - <_> - - 0 -1 146 1.7194304615259171e-002 - - -4.1591234505176544e-002 3.3211585879325867e-001 - <_> - - 0 -1 119 -1.0534466244280338e-002 - - 2.0838305354118347e-001 -8.1538312137126923e-002 - <_> - - 0 -1 171 3.3360864967107773e-002 - - -6.7458741366863251e-002 2.5852772593498230e-001 - <_> - - 0 -1 183 4.6436764299869537e-002 - - 1.9892208278179169e-002 -8.1141030788421631e-001 - <_> - - 0 -1 8 -4.1056036949157715e-002 - - -4.9327704310417175e-001 2.3769956082105637e-002 - <_> - - 0 -1 514 -1.8552202731370926e-002 - - -5.7725781202316284e-001 2.1620772778987885e-002 - <_> - - 0 -1 310 -1.5498932916671038e-003 - - 1.3356749713420868e-001 -1.0274448245763779e-001 - <_> - - 0 -1 144 -1.2870179489254951e-002 - - -6.8844175338745117e-001 1.6567943617701530e-002 - <_> - - 0 -1 162 1.1060645803809166e-002 - - -6.5967611968517303e-002 2.0074956119060516e-001 - <_> - - 0 -1 737 -1.9628754816949368e-003 - - 1.7064040899276733e-001 -7.5410693883895874e-002 - <_> - - 0 -1 118 3.2771207392215729e-002 - - 1.7548711970448494e-002 -7.5103056430816650e-001 - <_> - - 0 -1 62 -5.6525086984038353e-004 - - 1.0811340808868408e-001 -1.1322978138923645e-001 - <_> - - 0 -1 920 6.6395318135619164e-003 - - -4.8233803361654282e-002 2.5985202193260193e-001 - <_> - - 0 -1 933 5.3288890048861504e-003 - - -5.8816779404878616e-002 2.0709130167961121e-001 - <_> - - 0 -1 30 9.5648169517517090e-002 - - -2.3178230971097946e-002 5.3592687845230103e-001 - <_> - - 0 -1 505 2.3851044476032257e-002 - - 3.9325568825006485e-002 -3.2090389728546143e-001 - <_> - - 0 -1 380 4.9215428531169891e-002 - - -8.0275781452655792e-002 2.1604713797569275e-001 - <_> - - 0 -1 404 5.1129907369613647e-002 - - 2.0917052403092384e-002 -6.7675739526748657e-001 - <_> - - 0 -1 470 -9.5789285842329264e-004 - - 1.3741976022720337e-001 -9.2351287603378296e-002 - <_> - - 0 -1 38 4.3797735124826431e-002 - - -5.2134189754724503e-002 2.3939897119998932e-001 - <_> - - 0 -1 177 -3.7566445767879486e-002 - - -5.0337618589401245e-001 3.2042562961578369e-002 - <_> - - 0 -1 293 -6.6379196941852570e-003 - - 2.3610880970954895e-001 -5.9629496186971664e-002 - <_> - - 0 -1 569 4.4785980135202408e-003 - - -6.9053784012794495e-002 1.8493640422821045e-001 - <_> - - 0 -1 680 -1.9650494214147329e-003 - - -5.0821167230606079e-001 2.3264253512024879e-002 - <_> - - 0 -1 826 -8.4884336683899164e-004 - - 1.7365188896656036e-001 -7.3235429823398590e-002 - <_> - - 0 -1 421 -5.7333573698997498e-002 - - -3.1190565228462219e-001 4.1780386120080948e-002 - <_> - - 0 -1 599 1.8632253631949425e-003 - - 3.1603202223777771e-002 -3.6946067214012146e-001 - <_> - - 0 -1 336 -2.0456001162528992e-002 - - 3.0203589797019958e-001 -4.1565753519535065e-002 - <_> - - 0 -1 938 5.5945245549082756e-003 - - -3.2002035528421402e-002 3.7638634443283081e-001 - <_> - - 0 -1 152 -1.8559835851192474e-002 - - 2.4045053124427795e-001 -5.1895260810852051e-002 - <_> - - 0 -1 706 -1.0816272348165512e-002 - - -4.1922396421432495e-001 3.0057143419981003e-002 - <_> - - 0 -1 717 -1.5897199045866728e-003 - - -3.8717699050903320e-001 2.7556220069527626e-002 - <_> - - 0 -1 337 -1.8832697533071041e-003 - - 1.8341954052448273e-001 -6.8402133882045746e-002 - <_> - - 0 -1 107 -6.8602010607719421e-002 - - -4.3040940165519714e-001 2.7811320498585701e-002 - <_> - - 0 -1 605 3.1656727194786072e-002 - - 1.4831826090812683e-002 -6.9200241565704346e-001 - <_> - - 0 -1 178 -1.1699689552187920e-002 - - -4.7378033399581909e-001 2.2049939259886742e-002 - <_> - - 0 -1 175 -4.9252226948738098e-002 - - 2.0226360857486725e-001 -5.8283366262912750e-002 - <_> - - 0 -1 200 -1.4749905094504356e-002 - - -6.3420587778091431e-001 1.7177773639559746e-002 - <_> - - 0 -1 594 1.3355823233723640e-002 - - -5.3626276552677155e-002 2.3158134520053864e-001 - <_> - - 0 -1 688 2.7912877500057220e-002 - - -3.2106213271617889e-002 3.9656600356101990e-001 - <_> - - 0 -1 433 -1.8341368064284325e-002 - - 3.0023518204689026e-001 -3.9390310645103455e-002 - <_> - - 0 -1 320 3.3382259309291840e-002 - - -5.0307501107454300e-002 2.3759432137012482e-001 - <_> - - 0 -1 414 2.2881597280502319e-002 - - 2.9198208823800087e-002 -4.3145897984504700e-001 - <_> - - 0 -1 271 1.7183616757392883e-001 - - 1.9492210820317268e-002 -5.7107782363891602e-001 - <_> - - 0 -1 889 4.3015915900468826e-002 - - 1.8091753125190735e-002 -5.8863103389739990e-001 - <_> - - 0 -1 545 -1.2893548235297203e-002 - - 1.4482001960277557e-001 -8.2013383507728577e-002 - <_> - - 0 -1 910 5.9737069532275200e-003 - - -7.2960324585437775e-002 1.6368763148784637e-001 - <_> - - 0 -1 664 1.1285657994449139e-002 - - -4.4454183429479599e-002 2.5658103823661804e-001 - <_> - - 0 -1 951 -9.9752098321914673e-004 - - -2.6904699206352234e-001 4.0726143866777420e-002 - <_> - - 0 -1 111 2.1743077784776688e-002 - - 1.7429182305932045e-002 -6.2877011299133301e-001 - <_> - - 0 -1 866 3.7145437672734261e-003 - - -8.1450186669826508e-002 1.3246190547943115e-001 - <_> - - 0 -1 888 -1.5904067084193230e-002 - - 3.2105255126953125e-001 -3.4731235355138779e-002 - <_> - - 0 -1 907 -2.6992281898856163e-002 - - -6.8835800886154175e-001 1.6344616189599037e-002 - <_> - - 0 -1 830 6.8261945853009820e-004 - - -1.1232791095972061e-001 9.8401591181755066e-002 - <_> - - 0 -1 807 -2.5938652455806732e-002 - - -5.0289982557296753e-001 2.3814825341105461e-002 - - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - 0 - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - 0 - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 2 2 2 3. - 0 - <_> - - <_> - 0 0 8 7 -1. - <_> - 2 0 4 7 2. - 0 - <_> - - <_> - 0 0 8 8 -1. - <_> - 2 0 4 8 2. - 0 - <_> - - <_> - 0 0 6 13 -1. - <_> - 2 0 2 13 3. - 0 - <_> - - <_> - 0 0 12 13 -1. - <_> - 3 0 6 13 2. - 0 - <_> - - <_> - 0 0 12 4 -1. - <_> - 4 0 4 4 3. - 0 - <_> - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - <_> - - <_> - 0 0 36 11 -1. - <_> - 12 0 12 11 3. - 0 - <_> - - <_> - 0 0 17 12 -1. - <_> - 0 4 17 4 3. - 0 - <_> - - <_> - 0 0 36 13 -1. - <_> - 18 0 18 13 2. - 0 - <_> - - <_> - 0 0 22 2 -1. - <_> - 0 1 22 1 2. - 0 - <_> - - <_> - 0 0 24 9 -1. - <_> - 0 3 24 3 3. - 0 - <_> - - <_> - 0 0 29 2 -1. - <_> - 0 1 29 1 2. - 0 - <_> - - <_> - 0 0 34 2 -1. - <_> - 0 1 34 1 2. - 0 - <_> - - <_> - 0 0 36 8 -1. - <_> - 0 2 36 4 2. - 0 - <_> - - <_> - 0 0 42 6 -1. - <_> - 0 3 42 3 2. - 0 - <_> - - <_> - 0 0 44 2 -1. - <_> - 0 1 44 1 2. - 0 - <_> - - <_> - 0 0 51 8 -1. - <_> - 0 2 51 4 2. - 0 - <_> - - <_> - 0 1 2 9 -1. - <_> - 1 1 1 9 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 1 1 1 12 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 0 7 2 6 2. - 0 - <_> - - <_> - 0 1 8 10 -1. - <_> - 0 1 4 5 2. - <_> - 4 6 4 5 2. - 0 - <_> - - <_> - 0 1 7 12 -1. - <_> - 0 4 7 6 2. - 0 - <_> - - <_> - 0 1 12 12 -1. - <_> - 0 5 12 4 3. - 0 - <_> - - <_> - 0 1 17 12 -1. - <_> - 0 5 17 4 3. - 0 - <_> - - <_> - 0 2 6 2 -1. - <_> - 2 2 2 2 3. - 0 - <_> - - <_> - 0 2 4 6 -1. - <_> - 2 2 2 6 2. - 0 - <_> - - <_> - 0 2 20 7 -1. - <_> - 5 2 10 7 2. - 0 - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - <_> - - <_> - 0 3 4 2 -1. - <_> - 1 3 2 2 2. - 0 - <_> - - <_> - 0 3 6 9 -1. - <_> - 2 3 2 9 3. - 0 - <_> - - <_> - 0 3 4 10 -1. - <_> - 2 3 2 10 2. - 0 - <_> - - <_> - 0 3 6 10 -1. - <_> - 2 3 2 10 3. - 0 - <_> - - <_> - 0 3 9 3 -1. - <_> - 3 3 3 3 3. - 0 - <_> - - <_> - 0 3 3 9 -1. - <_> - 0 6 3 3 3. - 0 - <_> - - <_> - 0 3 9 6 -1. - <_> - 3 3 3 6 3. - 0 - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 3 4 2 2. - <_> - 4 5 4 2 2. - 0 - <_> - - <_> - 0 3 8 6 -1. - <_> - 0 3 4 3 2. - <_> - 4 6 4 3 2. - 0 - <_> - - <_> - 0 3 16 10 -1. - <_> - 4 3 8 10 2. - 0 - <_> - - <_> - 0 3 10 6 -1. - <_> - 0 5 10 2 3. - 0 - <_> - - <_> - 0 3 16 8 -1. - <_> - 0 7 16 4 2. - 0 - <_> - - <_> - 0 3 51 8 -1. - <_> - 0 7 51 4 2. - 0 - <_> - - <_> - 0 4 3 3 -1. - <_> - 1 5 1 1 9. - 0 - <_> - - <_> - 0 4 3 9 -1. - <_> - 0 7 3 3 3. - 0 - <_> - - <_> - 0 4 20 7 -1. - <_> - 10 4 10 7 2. - 0 - <_> - - <_> - 0 4 34 9 -1. - <_> - 17 4 17 9 2. - 0 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 7 1 2 2. - 0 - <_> - - <_> - 0 5 2 8 -1. - <_> - 1 5 1 8 2. - 0 - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 7 10 2 2. - 0 - <_> - - <_> - 0 5 22 6 -1. - <_> - 0 8 22 3 2. - 0 - <_> - - <_> - 0 6 2 7 -1. - <_> - 1 6 1 7 2. - 0 - <_> - - <_> - 0 6 4 2 -1. - <_> - 2 6 2 2 2. - 0 - <_> - - <_> - 0 6 6 5 -1. - <_> - 2 6 2 5 3. - 0 - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - 0 - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 9 4 3 2. - 0 - <_> - - <_> - 0 6 13 4 -1. - <_> - 0 8 13 2 2. - 0 - <_> - - <_> - 0 6 14 4 -1. - <_> - 0 8 14 2 2. - 0 - <_> - - <_> - 0 6 33 4 -1. - <_> - 0 8 33 2 2. - 0 - <_> - - <_> - 0 6 44 6 -1. - <_> - 0 8 44 2 3. - 0 - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 10 1 3 2. - 0 - <_> - - <_> - 0 7 7 6 -1. - <_> - 0 10 7 3 2. - 0 - <_> - - <_> - 0 7 25 6 -1. - <_> - 0 9 25 2 3. - 0 - <_> - - <_> - 0 7 32 3 -1. - <_> - 0 8 32 1 3. - 0 - <_> - - <_> - 0 8 12 5 -1. - <_> - 3 8 6 5 2. - 0 - <_> - - <_> - 0 8 12 2 -1. - <_> - 6 8 6 2 2. - 0 - <_> - - <_> - 0 8 21 4 -1. - <_> - 7 8 7 4 3. - 0 - <_> - - <_> - 0 8 25 4 -1. - <_> - 0 9 25 2 2. - 0 - <_> - - <_> - 0 9 15 4 -1. - <_> - 5 9 5 4 3. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 7 9 14 4 2. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 14 9 14 4 2. - 0 - <_> - - <_> - 0 9 46 2 -1. - <_> - 0 10 46 1 2. - 0 - <_> - - <_> - 0 9 50 2 -1. - <_> - 0 10 50 1 2. - 0 - <_> - - <_> - 0 10 6 3 -1. - <_> - 3 10 3 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 3 10 6 3 2. - 0 - <_> - - <_> - 0 10 10 3 -1. - <_> - 5 10 5 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 6 10 6 3 2. - 0 - <_> - - <_> - 0 11 5 2 -1. - <_> - 0 12 5 1 2. - 0 - <_> - - <_> - 0 11 26 2 -1. - <_> - 13 11 13 2 2. - 0 - <_> - - <_> - 0 11 28 2 -1. - <_> - 14 11 14 2 2. - 0 - <_> - - <_> - 0 11 42 2 -1. - <_> - 14 11 14 2 3. - 0 - <_> - - <_> - 0 11 19 2 -1. - <_> - 0 12 19 1 2. - 0 - <_> - - <_> - 0 11 23 2 -1. - <_> - 0 12 23 1 2. - 0 - <_> - - <_> - 1 0 5 12 -1. - <_> - 1 3 5 6 2. - 0 - <_> - - <_> - 1 0 15 4 -1. - <_> - 6 0 5 4 3. - 0 - <_> - - <_> - 1 0 14 1 -1. - <_> - 8 0 7 1 2. - 0 - <_> - - <_> - 1 0 8 2 -1. - <_> - 1 1 8 1 2. - 0 - <_> - - <_> - 1 0 9 2 -1. - <_> - 1 1 9 1 2. - 0 - <_> - - <_> - 1 0 11 2 -1. - <_> - 1 1 11 1 2. - 0 - <_> - - <_> - 1 0 17 9 -1. - <_> - 1 3 17 3 3. - 0 - <_> - - <_> - 1 0 21 2 -1. - <_> - 1 1 21 1 2. - 0 - <_> - - <_> - 1 0 41 6 -1. - <_> - 1 3 41 3 2. - 0 - <_> - - <_> - 1 0 47 2 -1. - <_> - 1 1 47 1 2. - 0 - <_> - - <_> - 1 1 6 8 -1. - <_> - 3 1 2 8 3. - 0 - <_> - - <_> - 1 1 6 9 -1. - <_> - 3 1 2 9 3. - 0 - <_> - - <_> - 1 1 6 11 -1. - <_> - 3 1 2 11 3. - 0 - <_> - - <_> - 1 1 9 5 -1. - <_> - 4 1 3 5 3. - 0 - <_> - - <_> - 1 1 20 7 -1. - <_> - 6 1 10 7 2. - 0 - <_> - - <_> - 1 1 20 8 -1. - <_> - 6 1 10 8 2. - 0 - <_> - - <_> - 1 1 9 9 -1. - <_> - 1 4 9 3 3. - 0 - <_> - - <_> - 1 1 27 10 -1. - <_> - 10 1 9 10 3. - 0 - <_> - - <_> - 1 1 10 6 -1. - <_> - 1 3 10 2 3. - 0 - <_> - - <_> - 1 2 4 6 -1. - <_> - 1 2 2 3 2. - <_> - 3 5 2 3 2. - 0 - <_> - - <_> - 1 2 20 8 -1. - <_> - 6 2 10 8 2. - 0 - <_> - - <_> - 1 2 13 10 -1. - <_> - 1 7 13 5 2. - 0 - <_> - - <_> - 1 2 34 7 -1. - <_> - 18 2 17 7 2. - 0 - <_> - - <_> - 1 3 4 3 -1. - <_> - 2 3 2 3 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 3 3 2 8 3. - 0 - <_> - - <_> - 1 3 6 4 -1. - <_> - 1 3 3 2 2. - <_> - 4 5 3 2 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 1 3 3 4 2. - <_> - 4 7 3 4 2. - 0 - <_> - - <_> - 1 3 6 5 -1. - <_> - 4 3 3 5 2. - 0 - <_> - - <_> - 1 3 15 3 -1. - <_> - 6 3 5 3 3. - 0 - <_> - - <_> - 1 3 36 9 -1. - <_> - 13 3 12 9 3. - 0 - <_> - - <_> - 1 3 36 10 -1. - <_> - 13 3 12 10 3. - 0 - <_> - - <_> - 1 4 4 2 -1. - <_> - 2 4 2 2 2. - 0 - <_> - - <_> - 1 4 6 2 -1. - <_> - 3 4 2 2 3. - 0 - <_> - - <_> - 1 4 6 3 -1. - <_> - 3 4 2 3 3. - 0 - <_> - - <_> - 1 4 6 4 -1. - <_> - 4 4 3 4 2. - 0 - <_> - - <_> - 1 4 6 6 -1. - <_> - 4 4 3 6 2. - 0 - <_> - - <_> - 1 4 9 4 -1. - <_> - 1 6 9 2 2. - 0 - <_> - - <_> - 1 5 12 3 -1. - <_> - 5 6 4 1 9. - 0 - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 7 8 3 2. - <_> - 9 10 8 3 2. - 0 - <_> - - <_> - 1 11 46 2 -1. - <_> - 1 12 46 1 2. - 0 - <_> - - <_> - 1 11 50 2 -1. - <_> - 1 12 50 1 2. - 0 - <_> - - <_> - 1 12 50 1 -1. - <_> - 26 12 25 1 2. - 0 - <_> - - <_> - 2 0 6 13 -1. - <_> - 4 0 2 13 3. - 0 - <_> - - <_> - 2 0 24 3 -1. - <_> - 8 0 12 3 2. - 0 - <_> - - <_> - 2 0 12 10 -1. - <_> - 8 0 6 10 2. - 0 - <_> - - <_> - 2 0 33 11 -1. - <_> - 13 0 11 11 3. - 0 - <_> - - <_> - 2 0 20 2 -1. - <_> - 2 1 20 1 2. - 0 - <_> - - <_> - 2 0 48 12 -1. - <_> - 26 0 24 12 2. - 0 - <_> - - <_> - 2 1 4 6 -1. - <_> - 2 1 2 3 2. - <_> - 4 4 2 3 2. - 0 - <_> - - <_> - 2 1 16 9 -1. - <_> - 10 1 8 9 2. - 0 - <_> - - <_> - 2 1 11 9 -1. - <_> - 2 4 11 3 3. - 0 - <_> - - <_> - 2 1 18 10 -1. - <_> - 2 6 18 5 2. - 0 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 2 3 16 1 -1. - <_> - 6 3 8 1 2. - 0 - <_> - - <_> - 2 3 25 6 -1. - <_> - 2 6 25 3 2. - 0 - <_> - - <_> - 2 4 4 2 -1. - <_> - 3 4 2 2 2. - 0 - <_> - - <_> - 2 5 2 8 -1. - <_> - 2 5 1 4 2. - <_> - 3 9 1 4 2. - 0 - <_> - - <_> - 2 5 6 4 -1. - <_> - 5 5 3 4 2. - 0 - <_> - - <_> - 2 5 10 8 -1. - <_> - 2 7 10 4 2. - 0 - <_> - - <_> - 2 7 4 6 -1. - <_> - 2 7 2 3 2. - <_> - 4 10 2 3 2. - 0 - <_> - - <_> - 2 7 4 4 -1. - <_> - 2 9 4 2 2. - 0 - <_> - - <_> - 2 8 14 2 -1. - <_> - 9 8 7 2 2. - 0 - <_> - - <_> - 2 8 24 5 -1. - <_> - 14 8 12 5 2. - 0 - <_> - - <_> - 2 9 8 3 -1. - <_> - 6 9 4 3 2. - 0 - <_> - - <_> - 2 9 12 4 -1. - <_> - 6 9 4 4 3. - 0 - <_> - - <_> - 2 9 32 4 -1. - <_> - 2 9 16 2 2. - <_> - 18 11 16 2 2. - 0 - <_> - - <_> - 2 10 12 2 -1. - <_> - 2 10 6 1 2. - <_> - 8 11 6 1 2. - 0 - <_> - - <_> - 2 11 38 1 -1. - <_> - 21 11 19 1 2. - 0 - <_> - - <_> - 2 12 32 1 -1. - <_> - 18 12 16 1 2. - 0 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - 0 - <_> - - <_> - 3 0 3 9 -1. - <_> - 4 3 1 3 9. - 0 - <_> - - <_> - 3 0 6 11 -1. - <_> - 5 0 2 11 3. - 0 - <_> - - <_> - 3 0 6 12 -1. - <_> - 5 0 2 12 3. - 0 - <_> - - <_> - 3 0 16 10 -1. - <_> - 11 0 8 10 2. - 0 - <_> - - <_> - 3 0 42 9 -1. - <_> - 17 3 14 3 9. - 0 - <_> - - <_> - 3 0 15 6 -1. - <_> - 3 3 15 3 2. - 0 - <_> - - <_> - 3 0 30 13 -1. - <_> - 18 0 15 13 2. - 0 - <_> - - <_> - 3 1 3 9 -1. - <_> - 4 1 1 9 3. - 0 - <_> - - <_> - 3 1 6 10 -1. - <_> - 5 1 2 10 3. - 0 - <_> - - <_> - 3 1 15 12 -1. - <_> - 8 5 5 4 9. - 0 - <_> - - <_> - 3 1 21 3 -1. - <_> - 10 1 7 3 3. - 0 - <_> - - <_> - 3 1 32 7 -1. - <_> - 11 1 16 7 2. - 0 - <_> - - <_> - 3 1 33 11 -1. - <_> - 14 1 11 11 3. - 0 - <_> - - <_> - 3 1 42 9 -1. - <_> - 17 4 14 3 9. - 0 - <_> - - <_> - 3 1 29 10 -1. - <_> - 3 6 29 5 2. - 0 - <_> - - <_> - 3 2 1 2 -1. - <_> - 3 2 1 1 2. - 1 - <_> - - <_> - 3 2 6 11 -1. - <_> - 5 2 2 11 3. - 0 - <_> - - <_> - 3 2 16 3 -1. - <_> - 7 2 8 3 2. - 0 - <_> - - <_> - 3 2 46 6 -1. - <_> - 3 5 46 3 2. - 0 - <_> - - <_> - 3 3 14 10 -1. - <_> - 10 3 7 10 2. - 0 - <_> - - <_> - 3 3 40 5 -1. - <_> - 13 3 20 5 2. - 0 - <_> - - <_> - 3 5 2 2 -1. - <_> - 4 5 1 2 2. - 0 - <_> - - <_> - 3 5 16 5 -1. - <_> - 7 5 8 5 2. - 0 - <_> - - <_> - 3 5 16 2 -1. - <_> - 3 5 8 1 2. - <_> - 11 6 8 1 2. - 0 - <_> - - <_> - 3 6 8 3 -1. - <_> - 7 6 4 3 2. - 0 - <_> - - <_> - 3 7 16 6 -1. - <_> - 11 7 8 6 2. - 0 - <_> - - <_> - 3 7 45 2 -1. - <_> - 3 8 45 1 2. - 0 - <_> - - <_> - 3 9 9 4 -1. - <_> - 6 9 3 4 3. - 0 - <_> - - <_> - 3 10 6 3 -1. - <_> - 5 11 2 1 9. - 0 - <_> - - <_> - 3 11 9 2 -1. - <_> - 3 12 9 1 2. - 0 - <_> - - <_> - 3 11 48 2 -1. - <_> - 3 12 48 1 2. - 0 - <_> - - <_> - 4 0 4 1 -1. - <_> - 4 0 2 1 2. - 1 - <_> - - <_> - 4 0 6 11 -1. - <_> - 6 0 2 11 3. - 0 - <_> - - <_> - 4 0 4 12 -1. - <_> - 4 3 4 6 2. - 0 - <_> - - <_> - 4 0 18 4 -1. - <_> - 10 0 6 4 3. - 0 - <_> - - <_> - 4 1 6 9 -1. - <_> - 6 1 2 9 3. - 0 - <_> - - <_> - 4 1 14 2 -1. - <_> - 11 1 7 2 2. - 0 - <_> - - <_> - 4 1 36 4 -1. - <_> - 22 1 18 4 2. - 0 - <_> - - <_> - 4 2 3 11 -1. - <_> - 5 2 1 11 3. - 0 - <_> - - <_> - 4 2 6 5 -1. - <_> - 6 2 2 5 3. - 0 - <_> - - <_> - 4 2 6 10 -1. - <_> - 6 2 2 10 3. - 0 - <_> - - <_> - 4 2 10 10 -1. - <_> - 4 2 5 5 2. - <_> - 9 7 5 5 2. - 0 - <_> - - <_> - 4 2 21 3 -1. - <_> - 11 2 7 3 3. - 0 - <_> - - <_> - 4 2 27 8 -1. - <_> - 4 4 27 4 2. - 0 - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 4 3 2 6 -1. - <_> - 4 5 2 2 3. - 0 - <_> - - <_> - 4 3 6 5 -1. - <_> - 6 3 2 5 3. - 0 - <_> - - <_> - 4 3 30 6 -1. - <_> - 14 5 10 2 9. - 0 - <_> - - <_> - 4 3 37 8 -1. - <_> - 4 5 37 4 2. - 0 - <_> - - <_> - 4 4 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 2 2. - 1 - <_> - - <_> - 4 4 7 3 -1. - <_> - 4 5 7 1 3. - 0 - <_> - - <_> - 4 4 23 9 -1. - <_> - 4 7 23 3 3. - 0 - <_> - - <_> - 4 5 5 4 -1. - <_> - 4 7 5 2 2. - 0 - <_> - - <_> - 4 7 42 4 -1. - <_> - 4 8 42 2 2. - 0 - <_> - - <_> - 4 8 16 1 -1. - <_> - 12 8 8 1 2. - 0 - <_> - - <_> - 4 9 24 4 -1. - <_> - 10 9 12 4 2. - 0 - <_> - - <_> - 4 10 10 2 -1. - <_> - 4 10 5 1 2. - <_> - 9 11 5 1 2. - 0 - <_> - - <_> - 4 10 7 2 -1. - <_> - 4 11 7 1 2. - 0 - <_> - - <_> - 5 0 16 8 -1. - <_> - 9 0 8 8 2. - 0 - <_> - - <_> - 5 0 24 13 -1. - <_> - 13 0 8 13 3. - 0 - <_> - - <_> - 5 1 8 12 -1. - <_> - 5 1 4 6 2. - <_> - 9 7 4 6 2. - 0 - <_> - - <_> - 5 1 36 12 -1. - <_> - 5 7 36 6 2. - 0 - <_> - - <_> - 5 2 3 10 -1. - <_> - 6 2 1 10 3. - 0 - <_> - - <_> - 5 2 6 6 -1. - <_> - 7 2 2 6 3. - 0 - <_> - - <_> - 5 2 3 6 -1. - <_> - 5 5 3 3 2. - 0 - <_> - - <_> - 5 2 12 9 -1. - <_> - 5 5 12 3 3. - 0 - <_> - - <_> - 5 2 34 8 -1. - <_> - 5 6 34 4 2. - 0 - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 3 1 6 3. - 0 - <_> - - <_> - 5 3 6 4 -1. - <_> - 7 3 2 4 3. - 0 - <_> - - <_> - 5 3 4 5 -1. - <_> - 7 3 2 5 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 7 3 2 6 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 5 6 4 3 2. - 0 - <_> - - <_> - 5 3 21 8 -1. - <_> - 12 3 7 8 3. - 0 - <_> - - <_> - 5 4 3 7 -1. - <_> - 6 4 1 7 3. - 0 - <_> - - <_> - 5 4 3 9 -1. - <_> - 6 4 1 9 3. - 0 - <_> - - <_> - 5 4 18 6 -1. - <_> - 11 6 6 2 9. - 0 - <_> - - <_> - 5 4 27 9 -1. - <_> - 14 7 9 3 9. - 0 - <_> - - <_> - 5 4 24 6 -1. - <_> - 17 4 12 6 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 6 5 2 2 2. - 0 - <_> - - <_> - 5 5 2 3 -1. - <_> - 6 5 1 3 2. - 0 - <_> - - <_> - 5 5 3 4 -1. - <_> - 6 5 1 4 3. - 0 - <_> - - <_> - 5 5 4 7 -1. - <_> - 6 5 2 7 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 5 5 6 4 -1. - <_> - 7 5 2 4 3. - 0 - <_> - - <_> - 5 5 4 4 -1. - <_> - 5 7 4 2 2. - 0 - <_> - - <_> - 5 6 4 6 -1. - <_> - 6 6 2 6 2. - 0 - <_> - - <_> - 5 6 12 2 -1. - <_> - 11 6 6 2 2. - 0 - <_> - - <_> - 5 7 3 6 -1. - <_> - 5 9 3 2 3. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 5 7 3 3 2. - <_> - 8 10 3 3 2. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 8 7 3 6 2. - 0 - <_> - - <_> - 5 7 12 6 -1. - <_> - 5 10 12 3 2. - 0 - <_> - - <_> - 5 9 9 4 -1. - <_> - 8 9 3 4 3. - 0 - <_> - - <_> - 5 10 6 2 -1. - <_> - 5 10 3 1 2. - <_> - 8 11 3 1 2. - 0 - <_> - - <_> - 5 10 20 3 -1. - <_> - 10 10 10 3 2. - 0 - <_> - - <_> - 5 11 16 2 -1. - <_> - 5 12 16 1 2. - 0 - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 3 6 1 2. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 4 2 3 2 3. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 6 0 3 5 2. - 1 - <_> - - <_> - 6 0 8 2 -1. - <_> - 6 0 4 1 2. - <_> - 10 1 4 1 2. - 0 - <_> - - <_> - 6 0 33 13 -1. - <_> - 17 0 11 13 3. - 0 - <_> - - <_> - 6 1 4 5 -1. - <_> - 7 1 2 5 2. - 0 - <_> - - <_> - 6 1 2 11 -1. - <_> - 7 1 1 11 2. - 0 - <_> - - <_> - 6 1 6 12 -1. - <_> - 8 1 2 12 3. - 0 - <_> - - <_> - 6 1 12 11 -1. - <_> - 12 1 6 11 2. - 0 - <_> - - <_> - 6 2 4 4 -1. - <_> - 7 2 2 4 2. - 0 - <_> - - <_> - 6 2 3 7 -1. - <_> - 7 2 1 7 3. - 0 - <_> - - <_> - 6 2 12 10 -1. - <_> - 12 2 6 10 2. - 0 - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 6 1 3 2. - 0 - <_> - - <_> - 6 3 3 8 -1. - <_> - 7 3 1 8 3. - 0 - <_> - - <_> - 6 3 37 6 -1. - <_> - 6 6 37 3 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 4 1 4 3. - 0 - <_> - - <_> - 6 4 8 2 -1. - <_> - 8 4 4 2 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 6 6 3 2 2. - 0 - <_> - - <_> - 6 4 3 6 -1. - <_> - 6 6 3 2 3. - 0 - <_> - - <_> - 6 4 9 9 -1. - <_> - 9 7 3 3 9. - 0 - <_> - - <_> - 6 6 4 5 -1. - <_> - 7 6 2 5 2. - 0 - <_> - - <_> - 6 6 4 6 -1. - <_> - 7 6 2 6 2. - 0 - <_> - - <_> - 6 9 6 4 -1. - <_> - 6 9 3 2 2. - <_> - 9 11 3 2 2. - 0 - <_> - - <_> - 6 10 20 3 -1. - <_> - 11 10 10 3 2. - 0 - <_> - - <_> - 6 11 7 2 -1. - <_> - 6 12 7 1 2. - 0 - <_> - - <_> - 6 11 17 2 -1. - <_> - 6 12 17 1 2. - 0 - <_> - - <_> - 7 0 12 1 -1. - <_> - 10 0 6 1 2. - 0 - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - 0 - <_> - - <_> - 7 0 32 9 -1. - <_> - 23 0 16 9 2. - 0 - <_> - - <_> - 7 0 38 13 -1. - <_> - 26 0 19 13 2. - 0 - <_> - - <_> - 7 1 4 2 -1. - <_> - 8 2 2 2 2. - 1 - <_> - - <_> - 7 1 16 10 -1. - <_> - 11 1 8 10 2. - 0 - <_> - - <_> - 7 1 15 6 -1. - <_> - 12 1 5 6 3. - 0 - <_> - - <_> - 7 1 15 8 -1. - <_> - 12 1 5 8 3. - 0 - <_> - - <_> - 7 1 15 11 -1. - <_> - 12 1 5 11 3. - 0 - <_> - - <_> - 7 1 7 6 -1. - <_> - 7 4 7 3 2. - 0 - <_> - - <_> - 7 2 1 4 -1. - <_> - 6 3 1 2 2. - 1 - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 3 2 2 2. - 1 - <_> - - <_> - 7 2 4 7 -1. - <_> - 8 3 2 7 2. - 1 - <_> - - <_> - 7 2 2 9 -1. - <_> - 8 2 1 9 2. - 0 - <_> - - <_> - 7 2 6 3 -1. - <_> - 9 3 2 1 9. - 0 - <_> - - <_> - 7 3 2 5 -1. - <_> - 8 3 1 5 2. - 0 - <_> - - <_> - 7 3 2 6 -1. - <_> - 8 3 1 6 2. - 0 - <_> - - <_> - 7 3 3 7 -1. - <_> - 8 3 1 7 3. - 0 - <_> - - <_> - 7 4 1 4 -1. - <_> - 7 5 1 2 2. - 0 - <_> - - <_> - 7 4 3 7 -1. - <_> - 8 4 1 7 3. - 0 - <_> - - <_> - 7 4 28 9 -1. - <_> - 21 4 14 9 2. - 0 - <_> - - <_> - 7 5 3 6 -1. - <_> - 8 5 1 6 3. - 0 - <_> - - <_> - 7 5 4 6 -1. - <_> - 8 5 2 6 2. - 0 - <_> - - <_> - 7 5 4 4 -1. - <_> - 7 5 2 2 2. - <_> - 9 7 2 2 2. - 0 - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - 0 - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 6 1 6 3. - 0 - <_> - - <_> - 7 10 4 2 -1. - <_> - 7 10 2 1 2. - <_> - 9 11 2 1 2. - 0 - <_> - - <_> - 7 10 6 2 -1. - <_> - 7 11 6 1 2. - 0 - <_> - - <_> - 7 11 36 2 -1. - <_> - 7 11 18 1 2. - <_> - 25 12 18 1 2. - 0 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 8 0 2 8 -1. - <_> - 8 0 1 8 2. - 1 - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 0 3 2 2. - <_> - 11 2 3 2 2. - 0 - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 0 4 1 2. - <_> - 12 1 4 1 2. - 0 - <_> - - <_> - 8 0 10 12 -1. - <_> - 13 0 5 12 2. - 0 - <_> - - <_> - 8 0 15 12 -1. - <_> - 13 0 5 12 3. - 0 - <_> - - <_> - 8 0 15 13 -1. - <_> - 13 0 5 13 3. - 0 - <_> - - <_> - 8 0 8 6 -1. - <_> - 8 3 8 3 2. - 0 - <_> - - <_> - 8 1 3 2 -1. - <_> - 9 2 1 2 3. - 1 - <_> - - <_> - 8 1 12 3 -1. - <_> - 12 1 4 3 3. - 0 - <_> - - <_> - 8 1 8 6 -1. - <_> - 12 1 4 6 2. - 0 - <_> - - <_> - 8 1 15 4 -1. - <_> - 13 1 5 4 3. - 0 - <_> - - <_> - 8 1 15 12 -1. - <_> - 13 1 5 12 3. - 0 - <_> - - <_> - 8 1 8 10 -1. - <_> - 8 6 8 5 2. - 0 - <_> - - <_> - 8 1 10 8 -1. - <_> - 8 3 10 4 2. - 0 - <_> - - <_> - 8 2 4 3 -1. - <_> - 9 2 2 3 2. - 0 - <_> - - <_> - 8 2 3 4 -1. - <_> - 9 2 1 4 3. - 0 - <_> - - <_> - 8 2 4 4 -1. - <_> - 9 2 2 4 2. - 0 - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - 0 - <_> - - <_> - 8 2 7 4 -1. - <_> - 8 4 7 2 2. - 0 - <_> - - <_> - 8 3 4 3 -1. - <_> - 9 3 2 3 2. - 0 - <_> - - <_> - 8 4 10 9 -1. - <_> - 13 4 5 9 2. - 0 - <_> - - <_> - 8 5 23 2 -1. - <_> - 8 6 23 1 2. - 0 - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 8 6 3 5 -1. - <_> - 9 6 1 5 3. - 0 - <_> - - <_> - 8 6 3 6 -1. - <_> - 9 6 1 6 3. - 0 - <_> - - <_> - 8 7 6 2 -1. - <_> - 11 7 3 2 2. - 0 - <_> - - <_> - 8 9 4 4 -1. - <_> - 8 11 4 2 2. - 0 - <_> - - <_> - 8 10 8 2 -1. - <_> - 8 11 8 1 2. - 0 - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - 0 - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - 0 - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 1 2 1 9. - 0 - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 0 2 2 2. - <_> - 11 2 2 2 2. - 0 - <_> - - <_> - 9 0 12 12 -1. - <_> - 13 0 4 12 3. - 0 - <_> - - <_> - 9 1 3 2 -1. - <_> - 10 2 1 2 3. - 1 - <_> - - <_> - 9 1 12 2 -1. - <_> - 13 1 4 2 3. - 0 - <_> - - <_> - 9 1 12 4 -1. - <_> - 13 1 4 4 3. - 0 - <_> - - <_> - 9 1 12 11 -1. - <_> - 13 1 4 11 3. - 0 - <_> - - <_> - 9 1 8 12 -1. - <_> - 13 1 4 12 2. - 0 - <_> - - <_> - 9 1 12 12 -1. - <_> - 13 1 4 12 3. - 0 - <_> - - <_> - 9 2 12 10 -1. - <_> - 13 2 4 10 3. - 0 - <_> - - <_> - 9 3 4 8 -1. - <_> - 9 7 4 4 2. - 0 - <_> - - <_> - 9 3 6 8 -1. - <_> - 9 7 6 4 2. - 0 - <_> - - <_> - 9 4 33 4 -1. - <_> - 9 5 33 2 2. - 0 - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 5 2 3 2. - <_> - 11 8 2 3 2. - 0 - <_> - - <_> - 9 7 8 6 -1. - <_> - 9 9 8 2 3. - 0 - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 9 1 1 9. - 0 - <_> - - <_> - 9 8 3 2 -1. - <_> - 10 9 1 2 3. - 1 - <_> - - <_> - 9 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 9 8 20 1 -1. - <_> - 19 8 10 1 2. - 0 - <_> - - <_> - 9 9 2 4 -1. - <_> - 9 11 2 2 2. - 0 - <_> - - <_> - 9 10 6 2 -1. - <_> - 9 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - <_> - - <_> - 9 10 16 3 -1. - <_> - 13 10 8 3 2. - 0 - <_> - - <_> - 9 10 42 3 -1. - <_> - 30 10 21 3 2. - 0 - <_> - - <_> - 9 12 42 1 -1. - <_> - 23 12 14 1 3. - 0 - <_> - - <_> - 10 0 12 2 -1. - <_> - 10 0 6 1 2. - <_> - 16 1 6 1 2. - 0 - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 1 8 1 2. - 0 - <_> - - <_> - 10 1 9 11 -1. - <_> - 13 1 3 11 3. - 0 - <_> - - <_> - 10 1 12 2 -1. - <_> - 14 1 4 2 3. - 0 - <_> - - <_> - 10 2 3 9 -1. - <_> - 11 5 1 3 9. - 0 - <_> - - <_> - 10 2 4 5 -1. - <_> - 11 2 2 5 2. - 0 - <_> - - <_> - 10 2 12 11 -1. - <_> - 13 2 6 11 2. - 0 - <_> - - <_> - 10 2 4 3 -1. - <_> - 9 3 4 1 3. - 1 - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 3 1 2 2. - <_> - 11 5 1 2 2. - 0 - <_> - - <_> - 10 4 8 1 -1. - <_> - 10 4 4 1 2. - 1 - <_> - - <_> - 10 6 4 4 -1. - <_> - 10 6 2 2 2. - <_> - 12 8 2 2 2. - 0 - <_> - - <_> - 10 6 6 5 -1. - <_> - 13 6 3 5 2. - 0 - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 9 2 2 3. - 0 - <_> - - <_> - 10 9 2 3 -1. - <_> - 10 10 2 1 3. - 0 - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - 0 - <_> - - <_> - 10 11 3 2 -1. - <_> - 10 12 3 1 2. - 0 - <_> - - <_> - 10 11 6 2 -1. - <_> - 10 12 6 1 2. - 0 - <_> - - <_> - 11 0 3 8 -1. - <_> - 11 4 3 4 2. - 0 - <_> - - <_> - 11 0 12 12 -1. - <_> - 15 0 4 12 3. - 0 - <_> - - <_> - 11 0 10 4 -1. - <_> - 11 0 5 2 2. - <_> - 16 2 5 2 2. - 0 - <_> - - <_> - 11 0 6 6 -1. - <_> - 11 3 6 3 2. - 0 - <_> - - <_> - 11 0 21 7 -1. - <_> - 18 0 7 7 3. - 0 - <_> - - <_> - 11 0 10 3 -1. - <_> - 10 1 10 1 3. - 1 - <_> - - <_> - 11 0 36 9 -1. - <_> - 29 0 18 9 2. - 0 - <_> - - <_> - 11 1 2 3 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 11 1 9 11 -1. - <_> - 14 1 3 11 3. - 0 - <_> - - <_> - 11 1 12 11 -1. - <_> - 15 1 4 11 3. - 0 - <_> - - <_> - 11 2 9 9 -1. - <_> - 14 5 3 3 9. - 0 - <_> - - <_> - 11 2 12 5 -1. - <_> - 14 2 6 5 2. - 0 - <_> - - <_> - 11 3 6 9 -1. - <_> - 13 6 2 3 9. - 0 - <_> - - <_> - 11 3 3 3 -1. - <_> - 10 4 3 1 3. - 1 - <_> - - <_> - 11 3 27 6 -1. - <_> - 11 6 27 3 2. - 0 - <_> - - <_> - 11 4 6 9 -1. - <_> - 13 7 2 3 9. - 0 - <_> - - <_> - 11 4 26 6 -1. - <_> - 11 7 26 3 2. - 0 - <_> - - <_> - 11 4 27 6 -1. - <_> - 11 7 27 3 2. - 0 - <_> - - <_> - 11 4 31 2 -1. - <_> - 11 5 31 1 2. - 0 - <_> - - <_> - 11 4 35 2 -1. - <_> - 11 5 35 1 2. - 0 - <_> - - <_> - 11 7 30 3 -1. - <_> - 21 8 10 1 9. - 0 - <_> - - <_> - 11 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 11 8 6 4 -1. - <_> - 11 10 6 2 2. - 0 - <_> - - <_> - 11 9 8 2 -1. - <_> - 13 9 4 2 2. - 0 - <_> - - <_> - 12 0 4 1 -1. - <_> - 14 0 2 1 2. - 0 - <_> - - <_> - 12 0 16 5 -1. - <_> - 16 0 8 5 2. - 0 - <_> - - <_> - 12 0 16 13 -1. - <_> - 16 0 8 13 2. - 0 - <_> - - <_> - 12 0 18 5 -1. - <_> - 18 0 6 5 3. - 0 - <_> - - <_> - 12 0 7 2 -1. - <_> - 12 1 7 1 2. - 0 - <_> - - <_> - 12 1 6 12 -1. - <_> - 14 5 2 4 9. - 0 - <_> - - <_> - 12 1 10 2 -1. - <_> - 17 1 5 2 2. - 0 - <_> - - <_> - 12 2 2 3 -1. - <_> - 12 2 1 3 2. - 1 - <_> - - <_> - 12 2 9 2 -1. - <_> - 15 2 3 2 3. - 0 - <_> - - <_> - 12 2 12 4 -1. - <_> - 16 2 4 4 3. - 0 - <_> - - <_> - 12 2 28 2 -1. - <_> - 19 2 14 2 2. - 0 - <_> - - <_> - 12 3 6 2 -1. - <_> - 14 5 2 2 3. - 1 - <_> - - <_> - 12 4 4 5 -1. - <_> - 13 5 2 5 2. - 1 - <_> - - <_> - 12 4 4 3 -1. - <_> - 12 4 2 3 2. - 1 - <_> - - <_> - 12 4 6 6 -1. - <_> - 14 4 2 6 3. - 0 - <_> - - <_> - 12 4 5 2 -1. - <_> - 12 5 5 1 2. - 0 - <_> - - <_> - 12 4 18 9 -1. - <_> - 18 7 6 3 9. - 0 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - 0 - <_> - - <_> - 12 5 18 6 -1. - <_> - 18 7 6 2 9. - 0 - <_> - - <_> - 12 7 21 3 -1. - <_> - 19 8 7 1 9. - 0 - <_> - - <_> - 12 12 6 1 -1. - <_> - 14 12 2 1 3. - 0 - <_> - - <_> - 12 12 39 1 -1. - <_> - 25 12 13 1 3. - 0 - <_> - - <_> - 13 0 16 5 -1. - <_> - 17 0 8 5 2. - 0 - <_> - - <_> - 13 0 5 8 -1. - <_> - 11 2 5 4 2. - 1 - <_> - - <_> - 13 0 24 10 -1. - <_> - 19 0 12 10 2. - 0 - <_> - - <_> - 13 0 36 3 -1. - <_> - 22 0 18 3 2. - 0 - <_> - - <_> - 13 0 28 1 -1. - <_> - 27 0 14 1 2. - 0 - <_> - - <_> - 13 1 8 3 -1. - <_> - 17 1 4 3 2. - 0 - <_> - - <_> - 13 1 8 6 -1. - <_> - 17 1 4 6 2. - 0 - <_> - - <_> - 13 1 20 7 -1. - <_> - 18 1 10 7 2. - 0 - <_> - - <_> - 13 1 36 1 -1. - <_> - 31 1 18 1 2. - 0 - <_> - - <_> - 13 1 20 3 -1. - <_> - 13 2 20 1 3. - 0 - <_> - - <_> - 13 2 14 1 -1. - <_> - 20 2 7 1 2. - 0 - <_> - - <_> - 13 3 3 8 -1. - <_> - 13 5 3 4 2. - 0 - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 4 4 1 2. - 0 - <_> - - <_> - 13 4 5 2 -1. - <_> - 13 5 5 1 2. - 0 - <_> - - <_> - 13 5 4 3 -1. - <_> - 13 5 2 3 2. - 1 - <_> - - <_> - 13 5 24 6 -1. - <_> - 19 5 12 6 2. - 0 - <_> - - <_> - 13 5 32 6 -1. - <_> - 13 8 32 3 2. - 0 - <_> - - <_> - 13 6 1 3 -1. - <_> - 12 7 1 1 3. - 1 - <_> - - <_> - 13 6 3 6 -1. - <_> - 13 8 3 2 3. - 0 - <_> - - <_> - 13 7 3 4 -1. - <_> - 13 9 3 2 2. - 0 - <_> - - <_> - 13 8 6 2 -1. - <_> - 13 9 6 1 2. - 0 - <_> - - <_> - 13 9 10 4 -1. - <_> - 18 9 5 4 2. - 0 - <_> - - <_> - 13 9 18 4 -1. - <_> - 19 9 6 4 3. - 0 - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - 0 - <_> - - <_> - 14 0 1 8 -1. - <_> - 14 4 1 4 2. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 4 1 4 3. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 6 1 6 2. - 0 - <_> - - <_> - 14 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 18 2 4 2 2. - 0 - <_> - - <_> - 14 0 12 6 -1. - <_> - 18 2 4 2 9. - 0 - <_> - - <_> - 14 0 16 4 -1. - <_> - 18 0 8 4 2. - 0 - <_> - - <_> - 14 1 1 4 -1. - <_> - 14 3 1 2 2. - 0 - <_> - - <_> - 14 1 2 4 -1. - <_> - 14 2 2 2 2. - 0 - <_> - - <_> - 14 1 2 12 -1. - <_> - 14 7 2 6 2. - 0 - <_> - - <_> - 14 2 2 8 -1. - <_> - 14 4 2 4 2. - 0 - <_> - - <_> - 14 2 2 9 -1. - <_> - 14 5 2 3 3. - 0 - <_> - - <_> - 14 2 18 4 -1. - <_> - 14 2 9 2 2. - <_> - 23 4 9 2 2. - 0 - <_> - - <_> - 14 3 12 9 -1. - <_> - 14 6 12 3 3. - 0 - <_> - - <_> - 14 4 2 1 -1. - <_> - 15 4 1 1 2. - 0 - <_> - - <_> - 14 4 16 1 -1. - <_> - 22 4 8 1 2. - 0 - <_> - - <_> - 14 5 2 4 -1. - <_> - 14 6 2 2 2. - 0 - <_> - - <_> - 14 5 2 6 -1. - <_> - 14 8 2 3 2. - 0 - <_> - - <_> - 14 5 3 4 -1. - <_> - 14 6 3 2 2. - 0 - <_> - - <_> - 14 5 3 6 -1. - <_> - 14 8 3 3 2. - 0 - <_> - - <_> - 14 5 4 3 -1. - <_> - 13 6 4 1 3. - 1 - <_> - - <_> - 14 6 3 4 -1. - <_> - 14 8 3 2 2. - 0 - <_> - - <_> - 14 7 3 2 -1. - <_> - 14 8 3 1 2. - 0 - <_> - - <_> - 14 8 2 3 -1. - <_> - 15 8 1 3 2. - 0 - <_> - - <_> - 14 8 9 2 -1. - <_> - 17 8 3 2 3. - 0 - <_> - - <_> - 14 8 6 4 -1. - <_> - 17 8 3 4 2. - 0 - <_> - - <_> - 14 9 2 2 -1. - <_> - 14 10 2 1 2. - 0 - <_> - - <_> - 14 9 16 4 -1. - <_> - 18 9 8 4 2. - 0 - <_> - - <_> - 14 11 15 2 -1. - <_> - 19 11 5 2 3. - 0 - <_> - - <_> - 14 12 2 1 -1. - <_> - 15 12 1 1 2. - 0 - <_> - - <_> - 14 12 3 1 -1. - <_> - 15 12 1 1 3. - 0 - <_> - - <_> - 15 0 4 1 -1. - <_> - 16 0 2 1 2. - 0 - <_> - - <_> - 15 0 10 2 -1. - <_> - 20 0 5 2 2. - 0 - <_> - - <_> - 15 0 15 2 -1. - <_> - 20 0 5 2 3. - 0 - <_> - - <_> - 15 0 33 9 -1. - <_> - 15 3 33 3 3. - 0 - <_> - - <_> - 15 1 1 12 -1. - <_> - 15 7 1 6 2. - 0 - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - 0 - <_> - - <_> - 15 1 36 2 -1. - <_> - 33 1 18 2 2. - 0 - <_> - - <_> - 15 2 1 9 -1. - <_> - 15 5 1 3 3. - 0 - <_> - - <_> - 15 2 3 4 -1. - <_> - 15 4 3 2 2. - 0 - <_> - - <_> - 15 2 9 9 -1. - <_> - 18 5 3 3 9. - 0 - <_> - - <_> - 15 2 24 6 -1. - <_> - 15 2 12 3 2. - <_> - 27 5 12 3 2. - 0 - <_> - - <_> - 15 3 4 3 -1. - <_> - 16 4 2 3 2. - 1 - <_> - - <_> - 15 3 4 6 -1. - <_> - 15 6 4 3 2. - 0 - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 6 3 2 2. - 0 - <_> - - <_> - 15 4 6 3 -1. - <_> - 14 5 6 1 3. - 1 - <_> - - <_> - 15 6 4 4 -1. - <_> - 15 6 2 2 2. - <_> - 17 8 2 2 2. - 0 - <_> - - <_> - 15 8 1 3 -1. - <_> - 15 9 1 1 3. - 0 - <_> - - <_> - 15 8 15 5 -1. - <_> - 20 8 5 5 3. - 0 - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - 0 - <_> - - <_> - 15 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 16 10 1 1 2. - 0 - <_> - - <_> - 15 10 13 3 -1. - <_> - 15 11 13 1 3. - 0 - <_> - - <_> - 15 10 34 3 -1. - <_> - 15 11 34 1 3. - 0 - <_> - - <_> - 15 11 35 2 -1. - <_> - 15 12 35 1 2. - 0 - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 16 0 4 8 -1. - <_> - 16 0 2 8 2. - 1 - <_> - - <_> - 16 0 12 1 -1. - <_> - 19 0 6 1 2. - 0 - <_> - - <_> - 16 0 6 6 -1. - <_> - 14 2 6 2 3. - 1 - <_> - - <_> - 16 0 26 4 -1. - <_> - 29 0 13 4 2. - 0 - <_> - - <_> - 16 1 18 12 -1. - <_> - 22 1 6 12 3. - 0 - <_> - - <_> - 16 1 18 2 -1. - <_> - 16 2 18 1 2. - 0 - <_> - - <_> - 16 2 4 5 -1. - <_> - 16 2 2 5 2. - 1 - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - 0 - <_> - - <_> - 16 5 5 3 -1. - <_> - 15 6 5 1 3. - 1 - <_> - - <_> - 16 9 15 4 -1. - <_> - 21 9 5 4 3. - 0 - <_> - - <_> - 16 9 18 4 -1. - <_> - 22 9 6 4 3. - 0 - <_> - - <_> - 17 0 1 6 -1. - <_> - 15 2 1 2 3. - 1 - <_> - - <_> - 17 0 6 2 -1. - <_> - 17 1 6 1 2. - 0 - <_> - - <_> - 17 0 18 5 -1. - <_> - 23 0 6 5 3. - 0 - <_> - - <_> - 17 0 8 2 -1. - <_> - 17 1 8 1 2. - 0 - <_> - - <_> - 17 0 11 4 -1. - <_> - 17 2 11 2 2. - 0 - <_> - - <_> - 17 0 16 3 -1. - <_> - 17 1 16 1 3. - 0 - <_> - - <_> - 17 0 17 3 -1. - <_> - 17 1 17 1 3. - 0 - <_> - - <_> - 17 0 19 2 -1. - <_> - 17 1 19 1 2. - 0 - <_> - - <_> - 17 0 20 4 -1. - <_> - 17 1 20 2 2. - 0 - <_> - - <_> - 17 0 32 8 -1. - <_> - 17 4 32 4 2. - 0 - <_> - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - 0 - <_> - - <_> - 17 7 8 1 -1. - <_> - 21 7 4 1 2. - 0 - <_> - - <_> - 17 7 21 3 -1. - <_> - 17 8 21 1 3. - 0 - <_> - - <_> - 17 7 28 6 -1. - <_> - 17 9 28 2 3. - 0 - <_> - - <_> - 18 0 3 1 -1. - <_> - 19 0 1 1 3. - 0 - <_> - - <_> - 18 0 2 5 -1. - <_> - 18 0 1 5 2. - 1 - <_> - - <_> - 18 0 3 4 -1. - <_> - 18 2 3 2 2. - 0 - <_> - - <_> - 18 0 11 2 -1. - <_> - 18 1 11 1 2. - 0 - <_> - - <_> - 18 0 18 3 -1. - <_> - 18 1 18 1 3. - 0 - <_> - - <_> - 18 1 17 2 -1. - <_> - 18 2 17 1 2. - 0 - <_> - - <_> - 18 2 4 4 -1. - <_> - 19 2 2 4 2. - 0 - <_> - - <_> - 18 2 2 6 -1. - <_> - 16 4 2 2 3. - 1 - <_> - - <_> - 18 2 6 4 -1. - <_> - 20 2 2 4 3. - 0 - <_> - - <_> - 18 3 3 2 -1. - <_> - 19 3 1 2 3. - 0 - <_> - - <_> - 18 7 4 3 -1. - <_> - 19 7 2 3 2. - 0 - <_> - - <_> - 18 8 4 2 -1. - <_> - 19 8 2 2 2. - 0 - <_> - - <_> - 18 8 4 3 -1. - <_> - 19 8 2 3 2. - 0 - <_> - - <_> - 18 10 27 3 -1. - <_> - 18 11 27 1 3. - 0 - <_> - - <_> - 19 0 2 1 -1. - <_> - 20 0 1 1 2. - 0 - <_> - - <_> - 19 0 3 1 -1. - <_> - 20 0 1 1 3. - 0 - <_> - - <_> - 19 0 3 8 -1. - <_> - 20 1 1 8 3. - 1 - <_> - - <_> - 19 1 3 6 -1. - <_> - 20 3 1 2 9. - 0 - <_> - - <_> - 19 1 9 12 -1. - <_> - 22 1 3 12 3. - 0 - <_> - - <_> - 19 1 17 2 -1. - <_> - 19 2 17 1 2. - 0 - <_> - - <_> - 19 3 6 2 -1. - <_> - 21 3 2 2 3. - 0 - <_> - - <_> - 19 4 4 4 -1. - <_> - 19 4 2 2 2. - <_> - 21 6 2 2 2. - 0 - <_> - - <_> - 19 12 2 1 -1. - <_> - 20 12 1 1 2. - 0 - <_> - - <_> - 20 0 4 1 -1. - <_> - 21 0 2 1 2. - 0 - <_> - - <_> - 20 0 4 11 -1. - <_> - 21 0 2 11 2. - 0 - <_> - - <_> - 20 0 6 1 -1. - <_> - 22 0 2 1 3. - 0 - <_> - - <_> - 20 0 12 12 -1. - <_> - 24 0 4 12 3. - 0 - <_> - - <_> - 20 0 12 3 -1. - <_> - 26 0 6 3 2. - 0 - <_> - - <_> - 20 0 18 3 -1. - <_> - 26 0 6 3 3. - 0 - <_> - - <_> - 20 0 18 4 -1. - <_> - 29 0 9 4 2. - 0 - <_> - - <_> - 20 0 26 1 -1. - <_> - 33 0 13 1 2. - 0 - <_> - - <_> - 20 0 22 4 -1. - <_> - 20 1 22 2 2. - 0 - <_> - - <_> - 20 2 3 2 -1. - <_> - 21 3 1 2 3. - 1 - <_> - - <_> - 20 3 4 8 -1. - <_> - 21 3 2 8 2. - 0 - <_> - - <_> - 20 4 3 9 -1. - <_> - 21 7 1 3 9. - 0 - <_> - - <_> - 20 5 3 5 -1. - <_> - 21 5 1 5 3. - 0 - <_> - - <_> - 20 5 4 8 -1. - <_> - 22 5 2 8 2. - 0 - <_> - - <_> - 20 6 3 2 -1. - <_> - 21 7 1 2 3. - 1 - <_> - - <_> - 20 6 4 2 -1. - <_> - 21 7 2 2 2. - 1 - <_> - - <_> - 20 6 24 6 -1. - <_> - 20 9 24 3 2. - 0 - <_> - - <_> - 20 8 4 2 -1. - <_> - 21 8 2 2 2. - 0 - <_> - - <_> - 20 9 4 4 -1. - <_> - 20 9 2 2 2. - <_> - 22 11 2 2 2. - 0 - <_> - - <_> - 20 9 18 4 -1. - <_> - 26 9 6 4 3. - 0 - <_> - - <_> - 20 12 4 1 -1. - <_> - 21 12 2 1 2. - 0 - <_> - - <_> - 21 0 2 6 -1. - <_> - 21 0 1 3 2. - <_> - 22 3 1 3 2. - 0 - <_> - - <_> - 21 0 4 2 -1. - <_> - 21 1 4 1 2. - 0 - <_> - - <_> - 21 0 28 1 -1. - <_> - 28 0 14 1 2. - 0 - <_> - - <_> - 21 0 21 4 -1. - <_> - 28 0 7 4 3. - 0 - <_> - - <_> - 21 0 14 5 -1. - <_> - 28 0 7 5 2. - 0 - <_> - - <_> - 21 1 4 11 -1. - <_> - 22 1 2 11 2. - 0 - <_> - - <_> - 21 2 25 9 -1. - <_> - 21 5 25 3 3. - 0 - <_> - - <_> - 21 3 4 9 -1. - <_> - 22 3 2 9 2. - 0 - <_> - - <_> - 21 3 6 1 -1. - <_> - 23 3 2 1 3. - 0 - <_> - - <_> - 21 6 4 2 -1. - <_> - 22 7 2 2 2. - 1 - <_> - - <_> - 21 7 3 2 -1. - <_> - 22 8 1 2 3. - 1 - <_> - - <_> - 21 7 3 3 -1. - <_> - 22 8 1 3 3. - 1 - <_> - - <_> - 21 7 6 4 -1. - <_> - 23 7 2 4 3. - 0 - <_> - - <_> - 21 10 21 3 -1. - <_> - 28 10 7 3 3. - 0 - <_> - - <_> - 21 10 18 3 -1. - <_> - 21 11 18 1 3. - 0 - <_> - - <_> - 21 12 30 1 -1. - <_> - 36 12 15 1 2. - 0 - <_> - - <_> - 22 0 4 1 -1. - <_> - 23 0 2 1 2. - 0 - <_> - - <_> - 22 0 8 1 -1. - <_> - 24 0 4 1 2. - 0 - <_> - - <_> - 22 0 12 4 -1. - <_> - 25 0 6 4 2. - 0 - <_> - - <_> - 22 0 15 2 -1. - <_> - 27 0 5 2 3. - 0 - <_> - - <_> - 22 0 28 2 -1. - <_> - 36 0 14 2 2. - 0 - <_> - - <_> - 22 1 15 2 -1. - <_> - 27 1 5 2 3. - 0 - <_> - - <_> - 22 1 8 3 -1. - <_> - 21 2 8 1 3. - 1 - <_> - - <_> - 22 2 3 3 -1. - <_> - 23 2 1 3 3. - 0 - <_> - - <_> - 22 2 3 9 -1. - <_> - 23 2 1 9 3. - 0 - <_> - - <_> - 22 2 3 10 -1. - <_> - 23 2 1 10 3. - 0 - <_> - - <_> - 22 5 3 3 -1. - <_> - 22 6 3 1 3. - 0 - <_> - - <_> - 22 6 2 3 -1. - <_> - 22 7 2 1 3. - 0 - <_> - - <_> - 22 7 2 3 -1. - <_> - 22 8 2 1 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 8 1 2 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 9 1 2 3. - 1 - <_> - - <_> - 22 8 2 2 -1. - <_> - 22 9 2 1 2. - 0 - <_> - - <_> - 22 9 4 4 -1. - <_> - 22 9 2 2 2. - <_> - 24 11 2 2 2. - 0 - <_> - - <_> - 22 9 9 2 -1. - <_> - 25 9 3 2 3. - 0 - <_> - - <_> - 22 9 6 4 -1. - <_> - 25 9 3 4 2. - 0 - <_> - - <_> - 22 9 9 4 -1. - <_> - 25 9 3 4 3. - 0 - <_> - - <_> - 22 10 6 2 -1. - <_> - 22 10 3 1 2. - <_> - 25 11 3 1 2. - 0 - <_> - - <_> - 23 0 3 1 -1. - <_> - 24 0 1 1 3. - 0 - <_> - - <_> - 23 0 6 1 -1. - <_> - 25 0 2 1 3. - 0 - <_> - - <_> - 23 0 4 4 -1. - <_> - 23 0 2 2 2. - <_> - 25 2 2 2 2. - 0 - <_> - - <_> - 23 0 8 12 -1. - <_> - 25 0 4 12 2. - 0 - <_> - - <_> - 23 0 12 1 -1. - <_> - 26 0 6 1 2. - 0 - <_> - - <_> - 23 0 21 2 -1. - <_> - 23 1 21 1 2. - 0 - <_> - - <_> - 23 2 12 10 -1. - <_> - 29 2 6 10 2. - 0 - <_> - - <_> - 23 3 4 2 -1. - <_> - 24 3 2 2 2. - 0 - <_> - - <_> - 23 4 2 4 -1. - <_> - 22 5 2 2 2. - 1 - <_> - - <_> - 23 4 12 9 -1. - <_> - 27 4 4 9 3. - 0 - <_> - - <_> - 23 5 1 3 -1. - <_> - 23 6 1 1 3. - 0 - <_> - - <_> - 23 6 9 1 -1. - <_> - 26 6 3 1 3. - 0 - <_> - - <_> - 23 8 4 3 -1. - <_> - 24 8 2 3 2. - 0 - <_> - - <_> - 23 9 4 1 -1. - <_> - 24 9 2 1 2. - 0 - <_> - - <_> - 23 9 8 4 -1. - <_> - 25 9 4 4 2. - 0 - <_> - - <_> - 23 9 12 4 -1. - <_> - 26 9 6 4 2. - 0 - <_> - - <_> - 23 11 6 2 -1. - <_> - 23 11 3 1 2. - <_> - 26 12 3 1 2. - 0 - <_> - - <_> - 24 0 3 1 -1. - <_> - 25 0 1 1 3. - 0 - <_> - - <_> - 24 0 4 1 -1. - <_> - 25 0 2 1 2. - 0 - <_> - - <_> - 24 0 4 6 -1. - <_> - 24 0 2 3 2. - <_> - 26 3 2 3 2. - 0 - <_> - - <_> - 24 0 17 2 -1. - <_> - 24 1 17 1 2. - 0 - <_> - - <_> - 24 0 22 2 -1. - <_> - 24 1 22 1 2. - 0 - <_> - - <_> - 24 1 4 4 -1. - <_> - 24 1 2 2 2. - <_> - 26 3 2 2 2. - 0 - <_> - - <_> - 24 1 13 2 -1. - <_> - 24 2 13 1 2. - 0 - <_> - - <_> - 24 2 2 2 -1. - <_> - 24 2 1 1 2. - <_> - 25 3 1 1 2. - 0 - <_> - - <_> - 24 6 6 1 -1. - <_> - 26 6 2 1 3. - 0 - <_> - - <_> - 24 7 4 6 -1. - <_> - 24 7 2 3 2. - <_> - 26 10 2 3 2. - 0 - <_> - - <_> - 24 8 2 5 -1. - <_> - 25 8 1 5 2. - 0 - <_> - - <_> - 24 9 15 4 -1. - <_> - 29 9 5 4 3. - 0 - <_> - - <_> - 24 10 27 3 -1. - <_> - 24 11 27 1 3. - 0 - <_> - - <_> - 25 0 3 1 -1. - <_> - 26 0 1 1 3. - 0 - <_> - - <_> - 25 0 3 2 -1. - <_> - 26 1 1 2 3. - 1 - <_> - - <_> - 25 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 25 0 8 1 -1. - <_> - 27 0 4 1 2. - 0 - <_> - - <_> - 25 0 26 3 -1. - <_> - 25 1 26 1 3. - 0 - <_> - - <_> - 25 1 2 4 -1. - <_> - 25 1 1 2 2. - <_> - 26 3 1 2 2. - 0 - <_> - - <_> - 25 1 3 2 -1. - <_> - 26 2 1 2 3. - 1 - <_> - - <_> - 25 2 3 2 -1. - <_> - 26 3 1 2 3. - 1 - <_> - - <_> - 25 4 4 1 -1. - <_> - 26 4 2 1 2. - 0 - <_> - - <_> - 25 4 4 6 -1. - <_> - 25 4 2 3 2. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 25 6 3 6 -1. - <_> - 26 8 1 2 9. - 0 - <_> - - <_> - 25 7 4 2 -1. - <_> - 26 7 2 2 2. - 0 - <_> - - <_> - 25 8 4 2 -1. - <_> - 26 8 2 2 2. - 0 - <_> - - <_> - 25 9 3 3 -1. - <_> - 26 9 1 3 3. - 0 - <_> - - <_> - 25 9 13 4 -1. - <_> - 25 11 13 2 2. - 0 - <_> - - <_> - 25 10 2 2 -1. - <_> - 25 11 2 1 2. - 0 - <_> - - <_> - 26 0 3 1 -1. - <_> - 27 0 1 1 3. - 0 - <_> - - <_> - 26 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 26 0 1 12 -1. - <_> - 23 3 1 6 2. - 1 - <_> - - <_> - 26 0 18 13 -1. - <_> - 32 0 6 13 3. - 0 - <_> - - <_> - 26 0 18 2 -1. - <_> - 35 0 9 2 2. - 0 - <_> - - <_> - 26 2 1 6 -1. - <_> - 26 4 1 2 3. - 0 - <_> - - <_> - 26 2 2 2 -1. - <_> - 26 2 1 2 2. - 1 - <_> - - <_> - 26 2 3 2 -1. - <_> - 27 3 1 2 3. - 1 - <_> - - <_> - 26 2 5 3 -1. - <_> - 25 3 5 1 3. - 1 - <_> - - <_> - 26 2 10 4 -1. - <_> - 26 3 10 2 2. - 0 - <_> - - <_> - 26 3 4 6 -1. - <_> - 26 3 2 3 2. - <_> - 28 6 2 3 2. - 0 - <_> - - <_> - 26 3 5 3 -1. - <_> - 25 4 5 1 3. - 1 - <_> - - <_> - 26 4 4 6 -1. - <_> - 26 4 2 3 2. - <_> - 28 7 2 3 2. - 0 - <_> - - <_> - 26 5 4 2 -1. - <_> - 26 5 2 1 2. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 5 4 4 -1. - <_> - 26 5 2 2 2. - <_> - 28 7 2 2 2. - 0 - <_> - - <_> - 26 6 1 6 -1. - <_> - 26 8 1 2 3. - 0 - <_> - - <_> - 26 6 4 1 -1. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 7 4 3 -1. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 26 7 4 6 -1. - <_> - 26 7 2 3 2. - <_> - 28 10 2 3 2. - 0 - <_> - - <_> - 26 7 18 6 -1. - <_> - 32 7 6 6 3. - 0 - <_> - - <_> - 26 7 17 6 -1. - <_> - 26 10 17 3 2. - 0 - <_> - - <_> - 26 8 3 1 -1. - <_> - 27 8 1 1 3. - 0 - <_> - - <_> - 26 9 12 4 -1. - <_> - 29 9 6 4 2. - 0 - <_> - - <_> - 26 11 20 1 -1. - <_> - 36 11 10 1 2. - 0 - <_> - - <_> - 27 0 2 1 -1. - <_> - 28 0 1 1 2. - 0 - <_> - - <_> - 27 0 3 1 -1. - <_> - 28 0 1 1 3. - 0 - <_> - - <_> - 27 0 4 1 -1. - <_> - 29 0 2 1 2. - 0 - <_> - - <_> - 27 0 18 2 -1. - <_> - 27 0 9 1 2. - <_> - 36 1 9 1 2. - 0 - <_> - - <_> - 27 1 3 3 -1. - <_> - 28 2 1 3 3. - 1 - <_> - - <_> - 27 1 6 11 -1. - <_> - 29 1 2 11 3. - 0 - <_> - - <_> - 27 1 14 10 -1. - <_> - 34 1 7 10 2. - 0 - <_> - - <_> - 27 2 3 2 -1. - <_> - 28 3 1 2 3. - 1 - <_> - - <_> - 27 2 3 9 -1. - <_> - 28 2 1 9 3. - 0 - <_> - - <_> - 27 2 5 4 -1. - <_> - 26 3 5 2 2. - 1 - <_> - - <_> - 27 3 3 6 -1. - <_> - 28 3 1 6 3. - 0 - <_> - - <_> - 27 3 3 9 -1. - <_> - 28 3 1 9 3. - 0 - <_> - - <_> - 27 3 13 4 -1. - <_> - 27 5 13 2 2. - 0 - <_> - - <_> - 27 6 3 2 -1. - <_> - 28 7 1 2 3. - 1 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 7 1 2 3. - 0 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 8 1 2 3. - 1 - <_> - - <_> - 28 0 3 1 -1. - <_> - 29 0 1 1 3. - 0 - <_> - - <_> - 28 0 4 12 -1. - <_> - 29 0 2 12 2. - 0 - <_> - - <_> - 28 0 10 3 -1. - <_> - 28 0 5 3 2. - 1 - <_> - - <_> - 28 0 15 13 -1. - <_> - 33 0 5 13 3. - 0 - <_> - - <_> - 28 1 2 10 -1. - <_> - 29 1 1 10 2. - 0 - <_> - - <_> - 28 1 4 11 -1. - <_> - 29 1 2 11 2. - 0 - <_> - - <_> - 28 2 4 10 -1. - <_> - 29 2 2 10 2. - 0 - <_> - - <_> - 28 2 7 3 -1. - <_> - 27 3 7 1 3. - 1 - <_> - - <_> - 28 3 4 9 -1. - <_> - 29 3 2 9 2. - 0 - <_> - - <_> - 28 3 23 8 -1. - <_> - 28 5 23 4 2. - 0 - <_> - - <_> - 28 4 1 6 -1. - <_> - 28 7 1 3 2. - 0 - <_> - - <_> - 28 4 3 6 -1. - <_> - 28 6 3 2 3. - 0 - <_> - - <_> - 28 5 4 2 -1. - <_> - 30 5 2 2 2. - 0 - <_> - - <_> - 28 5 20 6 -1. - <_> - 28 8 20 3 2. - 0 - <_> - - <_> - 28 6 1 4 -1. - <_> - 27 7 1 2 2. - 1 - <_> - - <_> - 28 6 3 3 -1. - <_> - 29 7 1 3 3. - 1 - <_> - - <_> - 28 7 3 1 -1. - <_> - 29 8 1 1 3. - 1 - <_> - - <_> - 28 7 4 3 -1. - <_> - 28 8 4 1 3. - 0 - <_> - - <_> - 28 7 12 2 -1. - <_> - 28 8 12 1 2. - 0 - <_> - - <_> - 28 8 2 1 -1. - <_> - 28 8 1 1 2. - 1 - <_> - - <_> - 28 8 3 1 -1. - <_> - 29 9 1 1 3. - 1 - <_> - - <_> - 28 11 14 2 -1. - <_> - 28 11 7 1 2. - <_> - 35 12 7 1 2. - 0 - <_> - - <_> - 29 0 3 1 -1. - <_> - 30 0 1 1 3. - 0 - <_> - - <_> - 29 0 4 1 -1. - <_> - 30 0 2 1 2. - 0 - <_> - - <_> - 29 2 3 8 -1. - <_> - 30 2 1 8 3. - 0 - <_> - - <_> - 29 3 3 9 -1. - <_> - 30 3 1 9 3. - 0 - <_> - - <_> - 29 5 2 3 -1. - <_> - 29 6 2 1 3. - 0 - <_> - - <_> - 29 5 3 4 -1. - <_> - 29 6 3 2 2. - 0 - <_> - - <_> - 29 7 3 2 -1. - <_> - 30 8 1 2 3. - 1 - <_> - - <_> - 29 7 3 3 -1. - <_> - 30 8 1 3 3. - 1 - <_> - - <_> - 29 8 4 2 -1. - <_> - 30 8 2 2 2. - 0 - <_> - - <_> - 29 8 2 2 -1. - <_> - 29 8 1 2 2. - 1 - <_> - - <_> - 29 8 3 2 -1. - <_> - 30 9 1 2 3. - 1 - <_> - - <_> - 29 9 15 4 -1. - <_> - 34 9 5 4 3. - 0 - <_> - - <_> - 29 11 22 2 -1. - <_> - 40 11 11 2 2. - 0 - <_> - - <_> - 29 12 2 1 -1. - <_> - 30 12 1 1 2. - 0 - <_> - - <_> - 29 12 3 1 -1. - <_> - 30 12 1 1 3. - 0 - <_> - - <_> - 30 0 3 1 -1. - <_> - 31 0 1 1 3. - 0 - <_> - - <_> - 30 0 4 1 -1. - <_> - 31 0 2 1 2. - 0 - <_> - - <_> - 30 0 9 2 -1. - <_> - 33 3 3 2 3. - 1 - <_> - - <_> - 30 0 20 3 -1. - <_> - 35 0 10 3 2. - 0 - <_> - - <_> - 30 0 16 2 -1. - <_> - 30 1 16 1 2. - 0 - <_> - - <_> - 30 1 4 2 -1. - <_> - 30 1 2 1 2. - <_> - 32 2 2 1 2. - 0 - <_> - - <_> - 30 1 8 12 -1. - <_> - 32 1 4 12 2. - 0 - <_> - - <_> - 30 2 8 1 -1. - <_> - 32 2 4 1 2. - 0 - <_> - - <_> - 30 2 6 2 -1. - <_> - 32 2 2 2 3. - 0 - <_> - - <_> - 30 2 7 3 -1. - <_> - 29 3 7 1 3. - 1 - <_> - - <_> - 30 4 4 4 -1. - <_> - 31 4 2 4 2. - 0 - <_> - - <_> - 30 6 3 4 -1. - <_> - 30 6 3 2 2. - 1 - <_> - - <_> - 30 7 12 6 -1. - <_> - 33 7 6 6 2. - 0 - <_> - - <_> - 30 8 18 3 -1. - <_> - 36 9 6 1 9. - 0 - <_> - - <_> - 30 9 4 2 -1. - <_> - 31 9 2 2 2. - 0 - <_> - - <_> - 30 9 12 4 -1. - <_> - 33 9 6 4 2. - 0 - <_> - - <_> - 30 12 3 1 -1. - <_> - 31 12 1 1 3. - 0 - <_> - - <_> - 31 0 3 1 -1. - <_> - 32 0 1 1 3. - 0 - <_> - - <_> - 31 0 4 1 -1. - <_> - 32 0 2 1 2. - 0 - <_> - - <_> - 31 0 5 2 -1. - <_> - 31 1 5 1 2. - 0 - <_> - - <_> - 31 0 12 2 -1. - <_> - 31 0 6 1 2. - <_> - 37 1 6 1 2. - 0 - <_> - - <_> - 31 0 12 3 -1. - <_> - 31 1 12 1 3. - 0 - <_> - - <_> - 31 2 4 4 -1. - <_> - 31 2 2 2 2. - <_> - 33 4 2 2 2. - 0 - <_> - - <_> - 31 3 3 9 -1. - <_> - 31 6 3 3 3. - 0 - <_> - - <_> - 31 3 8 2 -1. - <_> - 31 3 4 2 2. - 1 - <_> - - <_> - 31 5 3 6 -1. - <_> - 32 7 1 2 9. - 0 - <_> - - <_> - 31 7 3 3 -1. - <_> - 32 7 1 3 3. - 0 - <_> - - <_> - 31 9 2 4 -1. - <_> - 31 9 1 2 2. - <_> - 32 11 1 2 2. - 0 - <_> - - <_> - 32 0 3 1 -1. - <_> - 33 0 1 1 3. - 0 - <_> - - <_> - 32 0 3 2 -1. - <_> - 33 0 1 2 3. - 0 - <_> - - <_> - 32 0 3 3 -1. - <_> - 33 1 1 3 3. - 1 - <_> - - <_> - 32 0 3 4 -1. - <_> - 32 1 3 2 2. - 0 - <_> - - <_> - 32 0 8 1 -1. - <_> - 36 0 4 1 2. - 0 - <_> - - <_> - 32 0 17 3 -1. - <_> - 32 1 17 1 3. - 0 - <_> - - <_> - 32 0 17 4 -1. - <_> - 32 1 17 2 2. - 0 - <_> - - <_> - 32 0 18 3 -1. - <_> - 32 1 18 1 3. - 0 - <_> - - <_> - 32 0 19 3 -1. - <_> - 32 1 19 1 3. - 0 - <_> - - <_> - 32 1 3 6 -1. - <_> - 33 3 1 2 9. - 0 - <_> - - <_> - 32 1 3 2 -1. - <_> - 33 2 1 2 3. - 1 - <_> - - <_> - 32 1 12 1 -1. - <_> - 36 1 4 1 3. - 0 - <_> - - <_> - 32 1 8 2 -1. - <_> - 32 1 4 1 2. - <_> - 36 2 4 1 2. - 0 - <_> - - <_> - 32 1 19 9 -1. - <_> - 32 4 19 3 3. - 0 - <_> - - <_> - 32 2 2 2 -1. - <_> - 32 3 2 1 2. - 0 - <_> - - <_> - 32 3 4 3 -1. - <_> - 33 3 2 3 2. - 0 - <_> - - <_> - 32 7 4 2 -1. - <_> - 33 7 2 2 2. - 0 - <_> - - <_> - 32 9 3 1 -1. - <_> - 33 9 1 1 3. - 0 - <_> - - <_> - 32 9 3 3 -1. - <_> - 33 10 1 1 9. - 0 - <_> - - <_> - 32 11 3 2 -1. - <_> - 32 12 3 1 2. - 0 - <_> - - <_> - 33 0 3 3 -1. - <_> - 34 1 1 3 3. - 1 - <_> - - <_> - 33 0 3 4 -1. - <_> - 34 1 1 4 3. - 1 - <_> - - <_> - 33 0 12 1 -1. - <_> - 37 0 4 1 3. - 0 - <_> - - <_> - 33 0 16 1 -1. - <_> - 37 0 8 1 2. - 0 - <_> - - <_> - 33 0 10 1 -1. - <_> - 38 0 5 1 2. - 0 - <_> - - <_> - 33 0 9 2 -1. - <_> - 33 1 9 1 2. - 0 - <_> - - <_> - 33 0 17 4 -1. - <_> - 33 1 17 2 2. - 0 - <_> - - <_> - 33 1 1 2 -1. - <_> - 33 2 1 1 2. - 0 - <_> - - <_> - 33 1 3 2 -1. - <_> - 34 2 1 2 3. - 1 - <_> - - <_> - 33 1 4 2 -1. - <_> - 34 2 2 2 2. - 1 - <_> - - <_> - 33 1 17 2 -1. - <_> - 33 2 17 1 2. - 0 - <_> - - <_> - 33 2 1 3 -1. - <_> - 33 3 1 1 3. - 0 - <_> - - <_> - 33 2 3 2 -1. - <_> - 34 3 1 2 3. - 1 - <_> - - <_> - 33 2 13 9 -1. - <_> - 33 5 13 3 3. - 0 - <_> - - <_> - 33 5 3 3 -1. - <_> - 34 6 1 1 9. - 0 - <_> - - <_> - 33 5 1 8 -1. - <_> - 33 7 1 4 2. - 0 - <_> - - <_> - 33 6 3 1 -1. - <_> - 34 7 1 1 3. - 1 - <_> - - <_> - 33 7 3 1 -1. - <_> - 34 8 1 1 3. - 1 - <_> - - <_> - 33 7 4 4 -1. - <_> - 33 7 2 2 2. - <_> - 35 9 2 2 2. - 0 - <_> - - <_> - 33 8 2 3 -1. - <_> - 32 9 2 1 3. - 1 - <_> - - <_> - 33 8 6 3 -1. - <_> - 35 8 2 3 3. - 0 - <_> - - <_> - 33 8 16 4 -1. - <_> - 33 10 16 2 2. - 0 - <_> - - <_> - 33 9 2 4 -1. - <_> - 33 11 2 2 2. - 0 - <_> - - <_> - 33 9 4 4 -1. - <_> - 33 9 2 2 2. - <_> - 35 11 2 2 2. - 0 - <_> - - <_> - 33 10 1 2 -1. - <_> - 33 11 1 1 2. - 0 - <_> - - <_> - 34 0 1 3 -1. - <_> - 33 1 1 1 3. - 1 - <_> - - <_> - 34 0 3 11 -1. - <_> - 35 0 1 11 3. - 0 - <_> - - <_> - 34 0 4 4 -1. - <_> - 34 0 2 4 2. - 1 - <_> - - <_> - 34 0 16 1 -1. - <_> - 38 0 8 1 2. - 0 - <_> - - <_> - 34 0 14 1 -1. - <_> - 41 0 7 1 2. - 0 - <_> - - <_> - 34 1 15 6 -1. - <_> - 39 1 5 6 3. - 0 - <_> - - <_> - 34 2 3 2 -1. - <_> - 35 3 1 2 3. - 1 - <_> - - <_> - 34 2 3 8 -1. - <_> - 35 2 1 8 3. - 0 - <_> - - <_> - 34 3 4 4 -1. - <_> - 35 3 2 4 2. - 0 - <_> - - <_> - 34 3 4 7 -1. - <_> - 35 3 2 7 2. - 0 - <_> - - <_> - 34 5 3 2 -1. - <_> - 35 6 1 2 3. - 1 - <_> - - <_> - 34 5 4 2 -1. - <_> - 35 6 2 2 2. - 1 - <_> - - <_> - 34 5 3 4 -1. - <_> - 35 5 1 4 3. - 0 - <_> - - <_> - 34 5 6 8 -1. - <_> - 36 5 2 8 3. - 0 - <_> - - <_> - 34 6 3 1 -1. - <_> - 35 7 1 1 3. - 1 - <_> - - <_> - 34 6 3 2 -1. - <_> - 35 7 1 2 3. - 1 - <_> - - <_> - 34 6 6 5 -1. - <_> - 36 6 2 5 3. - 0 - <_> - - <_> - 34 7 4 2 -1. - <_> - 35 7 2 2 2. - 0 - <_> - - <_> - 34 7 3 2 -1. - <_> - 35 8 1 2 3. - 1 - <_> - - <_> - 34 7 4 3 -1. - <_> - 35 7 2 3 2. - 0 - <_> - - <_> - 35 0 3 12 -1. - <_> - 36 0 1 12 3. - 0 - <_> - - <_> - 35 0 4 1 -1. - <_> - 37 0 2 1 2. - 0 - <_> - - <_> - 35 0 12 1 -1. - <_> - 41 0 6 1 2. - 0 - <_> - - <_> - 35 0 14 4 -1. - <_> - 35 0 7 2 2. - <_> - 42 2 7 2 2. - 0 - <_> - - <_> - 35 1 4 12 -1. - <_> - 36 1 2 12 2. - 0 - <_> - - <_> - 35 2 3 4 -1. - <_> - 36 3 1 4 3. - 1 - <_> - - <_> - 35 2 4 6 -1. - <_> - 36 2 2 6 2. - 0 - <_> - - <_> - 35 4 3 3 -1. - <_> - 35 5 3 1 3. - 0 - <_> - - <_> - 35 5 2 4 -1. - <_> - 36 5 1 4 2. - 0 - <_> - - <_> - 35 5 4 7 -1. - <_> - 36 5 2 7 2. - 0 - <_> - - <_> - 35 5 15 5 -1. - <_> - 40 5 5 5 3. - 0 - <_> - - <_> - 35 7 3 1 -1. - <_> - 36 8 1 1 3. - 1 - <_> - - <_> - 35 7 3 2 -1. - <_> - 36 8 1 2 3. - 1 - <_> - - <_> - 35 8 2 2 -1. - <_> - 35 8 1 2 2. - 1 - <_> - - <_> - 35 10 15 3 -1. - <_> - 35 11 15 1 3. - 0 - <_> - - <_> - 35 11 5 2 -1. - <_> - 35 12 5 1 2. - 0 - <_> - - <_> - 35 11 6 2 -1. - <_> - 35 12 6 1 2. - 0 - <_> - - <_> - 36 0 14 1 -1. - <_> - 43 0 7 1 2. - 0 - <_> - - <_> - 36 1 4 2 -1. - <_> - 36 1 2 1 2. - <_> - 38 2 2 1 2. - 0 - <_> - - <_> - 36 2 4 10 -1. - <_> - 37 2 2 10 2. - 0 - <_> - - <_> - 36 4 4 6 -1. - <_> - 37 4 2 6 2. - 0 - <_> - - <_> - 36 4 3 6 -1. - <_> - 36 4 3 3 2. - 1 - <_> - - <_> - 36 4 6 3 -1. - <_> - 35 5 6 1 3. - 1 - <_> - - <_> - 36 6 3 3 -1. - <_> - 37 7 1 3 3. - 1 - <_> - - <_> - 36 9 4 2 -1. - <_> - 38 9 2 2 2. - 0 - <_> - - <_> - 36 10 4 1 -1. - <_> - 37 10 2 1 2. - 0 - <_> - - <_> - 36 10 6 3 -1. - <_> - 39 10 3 3 2. - 0 - <_> - - <_> - 37 0 2 3 -1. - <_> - 36 1 2 1 3. - 1 - <_> - - <_> - 37 0 4 4 -1. - <_> - 37 0 2 2 2. - <_> - 39 2 2 2 2. - 0 - <_> - - <_> - 37 1 4 5 -1. - <_> - 38 2 2 5 2. - 1 - <_> - - <_> - 37 1 9 9 -1. - <_> - 37 4 9 3 3. - 0 - <_> - - <_> - 37 3 8 4 -1. - <_> - 37 5 8 2 2. - 0 - <_> - - <_> - 37 4 4 1 -1. - <_> - 38 4 2 1 2. - 0 - <_> - - <_> - 37 4 4 4 -1. - <_> - 38 4 2 4 2. - 0 - <_> - - <_> - 37 5 8 8 -1. - <_> - 39 5 4 8 2. - 0 - <_> - - <_> - 37 9 6 4 -1. - <_> - 37 9 3 2 2. - <_> - 40 11 3 2 2. - 0 - <_> - - <_> - 37 10 4 2 -1. - <_> - 37 10 2 1 2. - <_> - 39 11 2 1 2. - 0 - <_> - - <_> - 37 10 8 3 -1. - <_> - 39 10 4 3 2. - 0 - <_> - - <_> - 37 10 5 3 -1. - <_> - 37 11 5 1 3. - 0 - <_> - - <_> - 38 0 4 1 -1. - <_> - 40 0 2 1 2. - 0 - <_> - - <_> - 38 1 12 2 -1. - <_> - 38 2 12 1 2. - 0 - <_> - - <_> - 38 4 6 1 -1. - <_> - 40 4 2 1 3. - 0 - <_> - - <_> - 38 6 6 6 -1. - <_> - 40 8 2 2 9. - 0 - <_> - - <_> - 38 9 6 1 -1. - <_> - 40 9 2 1 3. - 0 - <_> - - <_> - 38 11 1 2 -1. - <_> - 38 12 1 1 2. - 0 - <_> - - <_> - 39 0 2 4 -1. - <_> - 39 1 2 2 2. - 0 - <_> - - <_> - 39 0 10 3 -1. - <_> - 39 1 10 1 3. - 0 - <_> - - <_> - 39 1 11 2 -1. - <_> - 39 2 11 1 2. - 0 - <_> - - <_> - 39 4 4 4 -1. - <_> - 40 4 2 4 2. - 0 - <_> - - <_> - 39 6 3 6 -1. - <_> - 40 8 1 2 9. - 0 - <_> - - <_> - 39 7 4 3 -1. - <_> - 40 7 2 3 2. - 0 - <_> - - <_> - 39 8 4 2 -1. - <_> - 40 8 2 2 2. - 0 - <_> - - <_> - 39 11 12 2 -1. - <_> - 45 11 6 2 2. - 0 - <_> - - <_> - 40 0 1 3 -1. - <_> - 40 1 1 1 3. - 0 - <_> - - <_> - 40 0 3 3 -1. - <_> - 40 1 3 1 3. - 0 - <_> - - <_> - 40 0 5 2 -1. - <_> - 40 1 5 1 2. - 0 - <_> - - <_> - 40 0 8 3 -1. - <_> - 40 1 8 1 3. - 0 - <_> - - <_> - 40 5 4 2 -1. - <_> - 42 5 2 2 2. - 0 - <_> - - <_> - 40 6 4 1 -1. - <_> - 41 7 2 1 2. - 1 - <_> - - <_> - 40 8 4 2 -1. - <_> - 41 8 2 2 2. - 0 - <_> - - <_> - 40 10 9 2 -1. - <_> - 40 11 9 1 2. - 0 - <_> - - <_> - 41 0 6 12 -1. - <_> - 43 0 2 12 3. - 0 - <_> - - <_> - 41 0 4 2 -1. - <_> - 41 1 4 1 2. - 0 - <_> - - <_> - 41 1 3 4 -1. - <_> - 42 2 1 4 3. - 1 - <_> - - <_> - 41 1 6 9 -1. - <_> - 41 4 6 3 3. - 0 - <_> - - <_> - 41 5 4 5 -1. - <_> - 42 5 2 5 2. - 0 - <_> - - <_> - 41 5 4 6 -1. - <_> - 42 5 2 6 2. - 0 - <_> - - <_> - 41 6 3 2 -1. - <_> - 42 7 1 2 3. - 1 - <_> - - <_> - 41 6 4 5 -1. - <_> - 42 6 2 5 2. - 0 - <_> - - <_> - 41 7 3 1 -1. - <_> - 42 8 1 1 3. - 1 - <_> - - <_> - 41 7 2 3 -1. - <_> - 41 8 2 1 3. - 0 - <_> - - <_> - 41 8 3 1 -1. - <_> - 42 8 1 1 3. - 0 - <_> - - <_> - 41 8 3 2 -1. - <_> - 42 9 1 2 3. - 1 - <_> - - <_> - 41 8 4 4 -1. - <_> - 41 8 2 2 2. - <_> - 43 10 2 2 2. - 0 - <_> - - <_> - 41 10 1 2 -1. - <_> - 41 11 1 1 2. - 0 - <_> - - <_> - 42 7 3 2 -1. - <_> - 43 8 1 2 3. - 1 - <_> - - <_> - 42 7 3 3 -1. - <_> - 43 8 1 3 3. - 1 - <_> - - <_> - 42 8 2 2 -1. - <_> - 42 8 1 2 2. - 1 - <_> - - <_> - 42 9 2 4 -1. - <_> - 42 9 1 2 2. - <_> - 43 11 1 2 2. - 0 - <_> - - <_> - 42 9 2 2 -1. - <_> - 42 9 1 2 2. - 1 - <_> - - <_> - 43 4 8 9 -1. - <_> - 47 4 4 9 2. - 0 - <_> - - <_> - 43 5 2 3 -1. - <_> - 43 6 2 1 3. - 0 - <_> - - <_> - 43 5 4 4 -1. - <_> - 43 5 4 2 2. - 1 - <_> - - <_> - 43 5 8 8 -1. - <_> - 47 5 4 8 2. - 0 - <_> - - <_> - 43 7 3 3 -1. - <_> - 44 8 1 3 3. - 1 - <_> - - <_> - 43 9 8 2 -1. - <_> - 45 9 4 2 2. - 0 - <_> - - <_> - 43 10 8 3 -1. - <_> - 45 10 4 3 2. - 0 - <_> - - <_> - 43 12 3 1 -1. - <_> - 44 12 1 1 3. - 0 - <_> - - <_> - 44 2 1 10 -1. - <_> - 44 7 1 5 2. - 0 - <_> - - <_> - 44 2 4 4 -1. - <_> - 44 2 2 2 2. - <_> - 46 4 2 2 2. - 0 - <_> - - <_> - 44 2 5 6 -1. - <_> - 44 5 5 3 2. - 0 - <_> - - <_> - 44 4 6 2 -1. - <_> - 46 4 2 2 3. - 0 - <_> - - <_> - 44 7 4 2 -1. - <_> - 45 7 2 2 2. - 0 - <_> - - <_> - 44 7 4 4 -1. - <_> - 45 7 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 46 5 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 45 5 2 2 2. - <_> - 47 7 2 2 2. - 0 - <_> - - <_> - 45 6 6 3 -1. - <_> - 47 7 2 1 9. - 0 - <_> - - <_> - 45 8 6 1 -1. - <_> - 47 8 2 1 3. - 0 - <_> - - <_> - 46 0 1 3 -1. - <_> - 46 1 1 1 3. - 0 - <_> - - <_> - 46 0 2 2 -1. - <_> - 46 1 2 1 2. - 0 - <_> - - <_> - 46 0 2 4 -1. - <_> - 46 2 2 2 2. - 0 - <_> - - <_> - 46 1 3 4 -1. - <_> - 46 2 3 2 2. - 0 - <_> - - <_> - 46 3 3 3 -1. - <_> - 47 4 1 1 9. - 0 - <_> - - <_> - 46 5 3 3 -1. - <_> - 47 6 1 1 9. - 0 - <_> - - <_> - 46 5 2 6 -1. - <_> - 46 7 2 2 3. - 0 - <_> - - <_> - 46 6 3 6 -1. - <_> - 47 8 1 2 9. - 0 - <_> - - <_> - 47 0 2 2 -1. - <_> - 47 1 2 1 2. - 0 - <_> - - <_> - 47 1 1 4 -1. - <_> - 47 2 1 2 2. - 0 - <_> - - <_> - 47 2 1 6 -1. - <_> - 47 4 1 2 3. - 0 - <_> - - <_> - 47 4 1 6 -1. - <_> - 47 6 1 2 3. - 0 - <_> - - <_> - 47 4 4 2 -1. - <_> - 49 4 2 2 2. - 0 - <_> - - <_> - 47 4 2 6 -1. - <_> - 47 6 2 2 3. - 0 - <_> - - <_> - 47 8 3 1 -1. - <_> - 48 9 1 1 3. - 1 - <_> - - <_> - 47 9 1 4 -1. - <_> - 47 11 1 2 2. - 0 - <_> - - <_> - 47 9 2 4 -1. - <_> - 47 11 2 2 2. - 0 - <_> - - <_> - 48 0 3 6 -1. - <_> - 48 3 3 3 2. - 0 - <_> - - <_> - 48 1 3 2 -1. - <_> - 49 2 1 2 3. - 1 - <_> - - <_> - 48 1 3 12 -1. - <_> - 49 1 1 12 3. - 0 - <_> - - <_> - 48 5 3 7 -1. - <_> - 49 5 1 7 3. - 0 - <_> - - <_> - 48 5 3 8 -1. - <_> - 49 5 1 8 3. - 0 - <_> - - <_> - 48 6 3 2 -1. - <_> - 49 7 1 2 3. - 1 - <_> - - <_> - 48 8 3 2 -1. - <_> - 49 9 1 2 3. - 1 - <_> - - <_> - 49 0 2 2 -1. - <_> - 50 0 1 2 2. - 0 - <_> - - <_> - 49 0 2 8 -1. - <_> - 50 0 1 8 2. - 0 - <_> - - <_> - 49 11 2 2 -1. - <_> - 50 11 1 2 2. - 0 - <_> - - <_> - 50 1 1 3 -1. - <_> - 50 2 1 1 3. - 0 - <_> - - <_> - 50 4 1 3 -1. - <_> - 50 5 1 1 3. - 0 - diff --git a/Prj-Linux/lpr/model/cascade_double.xml b/Prj-Linux/lpr/model/cascade_double.xml new file mode 100644 index 0000000..aacc045 --- /dev/null +++ b/Prj-Linux/lpr/model/cascade_double.xml @@ -0,0 +1,504 @@ + + + + BOOST + LBP + 24 + 44 + + GAB + 9.9599999189376831e-01 + 5.0000000000000000e-01 + 9.4999999999999996e-01 + 1 + 28 + + 256 + 1 + 11 + + + <_> + 3 + -1.1049392223358154e+00 + + <_> + + 0 -1 17 -3334 -513 -573452048 -1057 -1 -267777 -1 -1025 + + -9.4297146797180176e-01 7.8370976448059082e-01 + <_> + + 0 -1 36 -262198 -12062208 -169869377 -674954752 -7602177 + -16781941 -67109937 -1073 + + -8.8537323474884033e-01 7.2940820455551147e-01 + <_> + + 0 -1 9 1431697887 1431687647 -545270049 -262145 1413609965 + 1364250775 -1065985 -67108865 + + -8.3008646965026855e-01 7.2340542078018188e-01 + + <_> + 3 + -1.0404651165008545e+00 + + <_> + + 0 -1 19 -524289 -136314913 1360393719 -2097153 -134219777 + -4194817 274068735 -1 + + -8.5476654767990112e-01 8.4671354293823242e-01 + <_> + + 0 -1 29 -16515073 -150929664 -1 -8650881 -8388609 -11403265 + -1 -2097153 + + -7.7620923519134521e-01 7.8929436206817627e-01 + <_> + + 0 -1 1 2013233135 2147450879 -45760593 2147474943 2146959359 + 2104754047 2080374783 2147417087 + + -8.9144438505172729e-01 5.9051072597503662e-01 + + <_> + 3 + -1.1397969722747803e+00 + + <_> + + 0 -1 15 -1041 -8225 -546308113 -1 -33554433 -394753 -2359297 + -1 + + -8.5447394847869873e-01 7.4388968944549561e-01 + <_> + + 0 -1 27 -1053970 -17 -35651601 -1048625 -345331574 -5247030 + -74453009 -1 + + -8.6756819486618042e-01 6.3549250364303589e-01 + <_> + + 0 -1 43 -1050897 -1025 -71304209 -134219793 -1033 -559948801 + -67110929 1996976642 + + -8.6068797111511230e-01 5.8224511146545410e-01 + + <_> + 3 + -9.8026764392852783e-01 + + <_> + + 0 -1 12 -1077953601 -1 -1073758273 -16387 -147457 -1 + -1073758209 -1 + + -8.2477015256881714e-01 7.1671992540359497e-01 + <_> + + 0 -1 47 -4345 -989855745 -271062524 -319815697 -134742265 + 1423962843 -134218173 -1 + + -7.4230498075485229e-01 7.3275351524353027e-01 + <_> + + 0 -1 37 -22347778 -3477554 -33554433 -2066 -9438209 -65537 + -1 -1048577 + + -8.3125960826873779e-01 5.8680748939514160e-01 + + <_> + 5 + -1.2986627817153931e+00 + + <_> + + 0 -1 4 -8388737 -262273 -10485761 -137 -8388745 -129 -262273 + -1 + + -8.7727063894271851e-01 6.1173391342163086e-01 + <_> + + 0 -1 20 -1 -10241 1431688703 -1 -1 -1042 1163263999 + 2002780159 + + -8.2954949140548706e-01 5.9151750802993774e-01 + <_> + + 0 -1 3 -44786212 -33726467 -268509185 -17409 -657175332 + -2270500 -1198986500 -1148450934 + + -7.6026451587677002e-01 5.8319890499114990e-01 + <_> + + 0 -1 28 -15794258 -78643282 -821817846 -552742962 -653344834 + -91750417 -1622147105 -7340065 + + -7.6077878475189209e-01 5.5891805887222290e-01 + <_> + + 0 -1 30 1427232247 357954767 1971310559 2012602108 + -202375953 -44049 -4456789 -18 + + -6.7643576860427856e-01 6.0950380563735962e-01 + + <_> + 5 + -1.3029408454895020e+00 + + <_> + + 0 -1 39 -134218753 -1 -1 -202899593 -1 -4194305 -67108865 + -527497 + + -7.5626724958419800e-01 7.5137990713119507e-01 + <_> + + 0 -1 6 -8388737 -8388737 -1 -1 -8421505 -129 -8388737 -1 + + -7.7118909358978271e-01 6.3570922613143921e-01 + <_> + + 0 -1 45 -825233914 -654313761 -589830738 -35651585 -16778427 + -83886281 -151000316 -1056964737 + + -7.2490030527114868e-01 5.7298541069030762e-01 + <_> + + 0 -1 18 2002780159 2136866815 -67109377 -19969 2147344383 + 2101472763 2108680957 2147450607 + + -8.5162043571472168e-01 4.5608481764793396e-01 + <_> + + 0 -1 16 -7472470 -3505654 -29841 -65536 -1166086177 + -67109121 -288690177 -32085 + + -7.9073858261108398e-01 5.0315058231353760e-01 + + <_> + 5 + -1.3164747953414917e+00 + + <_> + + 0 -1 41 -1 -1025 -1 -2228225 -8432299 -571189899 -139265 -1 + + -7.8127676248550415e-01 6.5899217128753662e-01 + <_> + + 0 -1 2 -34275329 -198665 -2113 -12289 -573243396 -590292744 + -1049857 -277 + + -7.3563832044601440e-01 6.3897633552551270e-01 + <_> + + 0 -1 14 -1565523969 -1347420193 -277086209 -1342177313 + -134217729 -263169 -285212673 -1459618305 + + -8.1234931945800781e-01 4.9628043174743652e-01 + <_> + + 0 -1 33 -1079312417 -83826176 -33686017 -570426508 + -1627464961 -5377 -277761 -17 + + -7.0463657379150391e-01 5.2093976736068726e-01 + <_> + + 0 -1 25 -66 -4116 1607291240 -5298489 -9847160 2011036101 + 357852669 1476259327 + + -8.2066470384597778e-01 4.9184983968734741e-01 + + <_> + 5 + -1.1098697185516357e+00 + + <_> + + 0 -1 44 -134217949 -167773185 -404750589 -1 -134744525 + -1846018321 -2097357 -1 + + -7.6240319013595581e-01 6.8946647644042969e-01 + <_> + + 0 -1 7 -12633797 -524321 1058880319 -129 -50790401 -262405 + -1075052545 -5 + + -7.1431988477706909e-01 6.2125796079635620e-01 + <_> + + 0 -1 24 -144703501 -10486797 -134217729 -136317057 + -271646721 -174069583 -168952849 -1072726014 + + -6.5710061788558960e-01 6.1531358957290649e-01 + <_> + + 0 -1 38 -134218774 -149487872 -33554433 -537927872 -69209089 + -145228029 -2360849 -524449 + + -7.3570650815963745e-01 4.9681660532951355e-01 + <_> + + 0 -1 5 -136380419 -8390657 -2228225 -196707 1565810157 + 2147048386 -268702725 2080373485 + + -7.2735637426376343e-01 5.2713739871978760e-01 + + <_> + 5 + -2.0547957420349121e+00 + + <_> + + 0 -1 13 -11141121 -44695553 -1 -11144193 -9217 -321 + -335811841 -4216577 + + -7.3916637897491455e-01 6.7595410346984863e-01 + <_> + + 0 -1 26 -369104657 -4194321 -1061429013 -67114529 -251662085 + -138412033 3334395 -234882305 + + -6.9217604398727417e-01 5.4744583368301392e-01 + <_> + + 0 -1 11 1373590751 1373632511 -262169 -33859589 -572533249 + -572524625 -135266305 -32833 + + -7.1100026369094849e-01 5.3469187021255493e-01 + <_> + + 0 -1 23 -3148053 -1054802 -1 -5 -7340125 -3689942 -74448917 + -687087094 + + -5.6383520364761353e-01 6.3540917634963989e-01 + <_> + + 0 -1 8 245501180 -1615197700 -46219265 -1075925028 + -307580929 -373826 -1076187139 -1343746644 + + -5.8823972940444946e-01 6.1824375391006470e-01 + + <_> + 6 + -1.6300759315490723e+00 + + <_> + + 0 -1 42 -1 -4129 -8193 -135795737 -1 -6417 -1 -137887866 + + -7.7990013360977173e-01 6.1912822723388672e-01 + <_> + + 0 -1 31 -12845643 -1934361103 -581837313 -1644167171 + -1175537153 -1392516625 -1681655299 -1358963807 + + -7.1357387304306030e-01 5.6909996271133423e-01 + <_> + + 0 -1 34 288428543 -34262659 1976906747 -42117703 858797567 + -4965441 2008290292 -1146080848 + + -6.7784935235977173e-01 5.4983222484588623e-01 + <_> + + 0 -1 22 -25297611 -100663553 -9830515 -570556417 -53741251 + -36570627 -67437302 -12583252 + + -6.3567954301834106e-01 5.9044981002807617e-01 + <_> + + 0 -1 46 -403706354 82769839 -446830048 -989858098 -8921600 + 1087893408 -100663520 -134217729 + + -7.0569902658462524e-01 5.4874616861343384e-01 + <_> + + 0 -1 0 -965744853 -420544541 -8392718 -1569784218 -192940313 + 1744830335 -9 -1003227661 + + -5.7118493318557739e-01 6.4167028665542603e-01 + + <_> + 5 + -2.1370947360992432e+00 + + <_> + + 0 -1 40 -673196033 -2144789 287251423 -538968593 -1399068449 + -73535505 -13631489 -526857 + + -7.2344118356704712e-01 6.8316829204559326e-01 + <_> + + 0 -1 32 -214216429 -2112561 -445819937 1964790555 -17185861 + -303183720 -357832229 -3148837 + + -7.1031409502029419e-01 5.4083776473999023e-01 + <_> + + 0 -1 10 -9043969 -36118539 2147450623 -4194305 -2246657 + -102721404 1073685759 -1366622208 + + -5.8772116899490356e-01 6.4753490686416626e-01 + <_> + + 0 -1 35 1167938037 16237049 -1120535169 1029034397 9567155 + -2001626128 -1146622977 -1142248004 + + -6.4004391431808472e-01 5.6415843963623047e-01 + <_> + + 0 -1 21 -70126622 -134227061 -536243648 188013035 + -1234960385 1416625375 -486868997 62913535 + + -8.8218396902084351e-01 4.1129270195960999e-01 + + <_> + + 0 1 1 6 + <_> + + 1 0 8 3 + <_> + + 1 4 8 3 + <_> + + 1 6 13 2 + <_> + + 2 1 5 2 + <_> + + 2 4 9 2 + <_> + + 3 2 5 2 + <_> + + 4 0 11 3 + <_> + + 4 21 9 1 + <_> + + 7 1 5 5 + <_> + + 7 7 6 2 + <_> + + 10 0 3 5 + <_> + + 11 1 9 3 + <_> + + 11 2 11 4 + <_> + + 12 0 4 3 + <_> + + 14 2 5 2 + <_> + + 14 6 3 3 + <_> + + 15 1 5 4 + <_> + + 16 0 9 4 + <_> + + 17 3 4 5 + <_> + + 17 6 4 3 + <_> + + 18 12 3 2 + <_> + + 19 0 3 3 + <_> + + 19 3 2 6 + <_> + + 19 4 2 4 + <_> + + 19 12 2 4 + <_> + + 21 2 2 5 + <_> + + 22 5 3 4 + <_> + + 22 14 3 3 + <_> + + 24 1 6 5 + <_> + + 25 3 4 5 + <_> + + 25 6 6 1 + <_> + + 26 1 2 5 + <_> + + 26 3 5 4 + <_> + + 26 21 6 1 + <_> + + 27 1 5 1 + <_> + + 29 3 4 6 + <_> + + 30 0 4 5 + <_> + + 30 2 3 7 + <_> + + 34 1 3 7 + <_> + + 34 8 3 2 + <_> + + 34 15 3 3 + <_> + + 35 3 2 5 + <_> + + 35 5 2 5 + <_> + + 39 12 1 3 + <_> + + 41 0 1 7 + <_> + + 41 10 1 4 + <_> + + 41 11 1 3 + diff --git a/Prj-Linux/lpr/model/mininet_ssd_v1.caffemodel b/Prj-Linux/lpr/model/mininet_ssd_v1.caffemodel new file mode 100644 index 0000000..6bbc358 Binary files /dev/null and b/Prj-Linux/lpr/model/mininet_ssd_v1.caffemodel differ diff --git a/Prj-Linux/lpr/model/mininet_ssd_v1.prototxt b/Prj-Linux/lpr/model/mininet_ssd_v1.prototxt new file mode 100644 index 0000000..3e5c355 --- /dev/null +++ b/Prj-Linux/lpr/model/mininet_ssd_v1.prototxt @@ -0,0 +1,1462 @@ +layer { + name: "data" + type: "Input" + top: "data" + input_param { + shape { + dim: 1 + dim: 3 + dim: 512 + dim: 512 + } + } +} +layer { + name: "ssd0_mobilenet0_conv0" + type: "Convolution" + bottom: "data" + top: "ssd0_mobilenet0_conv0" + convolution_param { + num_output: 8 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm0/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv0" + top: "ssd0_mobilenet0_conv0" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv1" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv0" + top: "ssd0_mobilenet0_conv1" + convolution_param { + num_output: 8 + bias_term: true + pad: 1 + kernel_size: 3 + group: 8 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm1/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv1" + top: "ssd0_mobilenet0_conv1" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv2" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv1" + top: "ssd0_mobilenet0_conv2" + convolution_param { + num_output: 16 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm2/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv2" + top: "ssd0_mobilenet0_conv2" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv3" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv2" + top: "ssd0_mobilenet0_conv3" + convolution_param { + num_output: 16 + bias_term: true + pad: 1 + kernel_size: 3 + group: 16 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm3/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv3" + top: "ssd0_mobilenet0_conv3" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv4" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv3" + top: "ssd0_mobilenet0_conv4" + convolution_param { + num_output: 32 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm4/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv4" + top: "ssd0_mobilenet0_conv4" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv5" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv4" + top: "ssd0_mobilenet0_conv5" + convolution_param { + num_output: 32 + bias_term: true + pad: 1 + kernel_size: 3 + group: 32 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm5/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv5" + top: "ssd0_mobilenet0_conv5" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv6" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv5" + top: "ssd0_mobilenet0_conv6" + convolution_param { + num_output: 32 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm6/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv6" + top: "ssd0_mobilenet0_conv6" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv7" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv6" + top: "ssd0_mobilenet0_conv7" + convolution_param { + num_output: 32 + bias_term: true + pad: 1 + kernel_size: 3 + group: 32 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm7/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv7" + top: "ssd0_mobilenet0_conv7" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv8" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv7" + top: "ssd0_mobilenet0_conv8" + convolution_param { + num_output: 64 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm8/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv8" + top: "ssd0_mobilenet0_conv8" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv9" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv8" + top: "ssd0_mobilenet0_conv9" + convolution_param { + num_output: 64 + bias_term: true + pad: 1 + kernel_size: 3 + group: 64 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm9/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv9" + top: "ssd0_mobilenet0_conv9" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv10" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv9" + top: "ssd0_mobilenet0_conv10" + convolution_param { + num_output: 64 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm10/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv10" + top: "ssd0_mobilenet0_conv10" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv11" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv10" + top: "ssd0_mobilenet0_conv11" + convolution_param { + num_output: 64 + bias_term: true + pad: 1 + kernel_size: 3 + group: 64 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm11/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv11" + top: "ssd0_mobilenet0_conv11" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv12" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv11" + top: "ssd0_mobilenet0_conv12" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm12/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv12" + top: "ssd0_mobilenet0_conv12" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv13" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv12" + top: "ssd0_mobilenet0_conv13" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm13/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv13" + top: "ssd0_mobilenet0_conv13" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv14" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv13" + top: "ssd0_mobilenet0_conv14" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm14/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv14" + top: "ssd0_mobilenet0_conv14" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv15" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv14" + top: "ssd0_mobilenet0_conv15" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm15/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv15" + top: "ssd0_mobilenet0_conv15" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv16" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv15" + top: "ssd0_mobilenet0_conv16" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm16/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv16" + top: "ssd0_mobilenet0_conv16" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv17" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv16" + top: "ssd0_mobilenet0_conv17" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm17/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv17" + top: "ssd0_mobilenet0_conv17" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv18" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv17" + top: "ssd0_mobilenet0_conv18" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm18/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv18" + top: "ssd0_mobilenet0_conv18" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv19" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv18" + top: "ssd0_mobilenet0_conv19" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm19/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv19" + top: "ssd0_mobilenet0_conv19" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv20" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv19" + top: "ssd0_mobilenet0_conv20" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm20/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv20" + top: "ssd0_mobilenet0_conv20" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv21" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv20" + top: "ssd0_mobilenet0_conv21" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm21/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv21" + top: "ssd0_mobilenet0_conv21" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv22" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv21" + top: "ssd0_mobilenet0_conv22" + convolution_param { + num_output: 128 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm22/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv22" + top: "ssd0_mobilenet0_conv22" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor1_conv0" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv22" + top: "ssd0_convpredictor1_conv0" + convolution_param { + num_output: 12 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose6" + type: "Permute" + bottom: "ssd0_convpredictor1_conv0" + top: "ssd0_transpose6" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten6" + type: "Flatten" + bottom: "ssd0_transpose6" + top: "ssd0_flatten6" +} +layer { + name: "ssd0_mobilenet0_conv23" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv22" + top: "ssd0_mobilenet0_conv23" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 128 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm23/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv23" + top: "ssd0_mobilenet0_conv23" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv24" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv23" + top: "ssd0_mobilenet0_conv24" + convolution_param { + num_output: 256 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm24/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv24" + top: "ssd0_mobilenet0_conv24" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv25" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv24" + top: "ssd0_mobilenet0_conv25" + convolution_param { + num_output: 256 + bias_term: true + pad: 1 + kernel_size: 3 + group: 256 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm25/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv25" + top: "ssd0_mobilenet0_conv25" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_mobilenet0_conv26" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv25" + top: "ssd0_mobilenet0_conv26" + convolution_param { + num_output: 256 + bias_term: true + pad: 0 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_mobilenet0_batchnorm26/relu" + type: "ReLU" + bottom: "ssd0_mobilenet0_conv26" + top: "ssd0_mobilenet0_conv26" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor3_conv0" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv26" + top: "ssd0_convpredictor3_conv0" + convolution_param { + num_output: 16 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose7" + type: "Permute" + bottom: "ssd0_convpredictor3_conv0" + top: "ssd0_transpose7" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten7" + type: "Flatten" + bottom: "ssd0_transpose7" + top: "ssd0_flatten7" +} +layer { + name: "ssd0_expand_trans_conv0" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv26" + top: "ssd0_expand_trans_conv0" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_expand_trans_bn0/relu" + type: "ReLU" + bottom: "ssd0_expand_trans_conv0" + top: "ssd0_expand_trans_conv0" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_expand_conv0" + type: "Convolution" + bottom: "ssd0_expand_trans_conv0" + top: "ssd0_expand_conv0" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_expand_bn0/relu" + type: "ReLU" + bottom: "ssd0_expand_conv0" + top: "ssd0_expand_conv0" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor5_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv0" + top: "ssd0_convpredictor5_conv0" + convolution_param { + num_output: 16 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose8" + type: "Permute" + bottom: "ssd0_convpredictor5_conv0" + top: "ssd0_transpose8" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten8" + type: "Flatten" + bottom: "ssd0_transpose8" + top: "ssd0_flatten8" +} +layer { + name: "ssd0_expand_trans_conv1" + type: "Convolution" + bottom: "ssd0_expand_conv0" + top: "ssd0_expand_trans_conv1" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_expand_trans_bn1/relu" + type: "ReLU" + bottom: "ssd0_expand_trans_conv1" + top: "ssd0_expand_trans_conv1" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_expand_conv1" + type: "Convolution" + bottom: "ssd0_expand_trans_conv1" + top: "ssd0_expand_conv1" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_expand_bn1/relu" + type: "ReLU" + bottom: "ssd0_expand_conv1" + top: "ssd0_expand_conv1" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor7_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv1" + top: "ssd0_convpredictor7_conv0" + convolution_param { + num_output: 16 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose9" + type: "Permute" + bottom: "ssd0_convpredictor7_conv0" + top: "ssd0_transpose9" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten9" + type: "Flatten" + bottom: "ssd0_transpose9" + top: "ssd0_flatten9" +} +layer { + name: "ssd0_expand_trans_conv2" + type: "Convolution" + bottom: "ssd0_expand_conv1" + top: "ssd0_expand_trans_conv2" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_expand_trans_bn2/relu" + type: "ReLU" + bottom: "ssd0_expand_trans_conv2" + top: "ssd0_expand_trans_conv2" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_expand_conv2" + type: "Convolution" + bottom: "ssd0_expand_trans_conv2" + top: "ssd0_expand_conv2" + convolution_param { + num_output: 64 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_expand_bn2/relu" + type: "ReLU" + bottom: "ssd0_expand_conv2" + top: "ssd0_expand_conv2" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor9_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv2" + top: "ssd0_convpredictor9_conv0" + convolution_param { + num_output: 12 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose10" + type: "Permute" + bottom: "ssd0_convpredictor9_conv0" + top: "ssd0_transpose10" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten10" + type: "Flatten" + bottom: "ssd0_transpose10" + top: "ssd0_flatten10" +} +layer { + name: "ssd0_expand_trans_conv3" + type: "Convolution" + bottom: "ssd0_expand_conv2" + top: "ssd0_expand_trans_conv3" + convolution_param { + num_output: 128 + bias_term: true + pad: 1 + kernel_size: 1 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_expand_trans_bn3/relu" + type: "ReLU" + bottom: "ssd0_expand_trans_conv3" + top: "ssd0_expand_trans_conv3" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_expand_conv3" + type: "Convolution" + bottom: "ssd0_expand_trans_conv3" + top: "ssd0_expand_conv3" + convolution_param { + num_output: 64 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 2 + dilation: 1 + } +} +layer { + name: "ssd0_expand_bn3/relu" + type: "ReLU" + bottom: "ssd0_expand_conv3" + top: "ssd0_expand_conv3" + relu_param { + negative_slope: 0.0 + } +} +layer { + name: "ssd0_convpredictor11_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv3" + top: "ssd0_convpredictor11_conv0" + convolution_param { + num_output: 12 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose11" + type: "Permute" + bottom: "ssd0_convpredictor11_conv0" + top: "ssd0_transpose11" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten11" + type: "Flatten" + bottom: "ssd0_transpose11" + top: "ssd0_flatten11" +} +layer { + name: "ssd0_concat1" + type: "Concat" + bottom: "ssd0_flatten6" + bottom: "ssd0_flatten7" + bottom: "ssd0_flatten8" + bottom: "ssd0_flatten9" + bottom: "ssd0_flatten10" + bottom: "ssd0_flatten11" + top: "ssd0_concat1" + concat_param { + axis: 1 + } +} +layer { + name: "ssd0_convpredictor0_conv0" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv22" + top: "ssd0_convpredictor0_conv0" + convolution_param { + num_output: 6 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose0" + type: "Permute" + bottom: "ssd0_convpredictor0_conv0" + top: "ssd0_transpose0" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten0" + type: "Flatten" + bottom: "ssd0_transpose0" + top: "ssd0_flatten0" +} +layer { + name: "ssd0_convpredictor2_conv0" + type: "Convolution" + bottom: "ssd0_mobilenet0_conv26" + top: "ssd0_convpredictor2_conv0" + convolution_param { + num_output: 8 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose1" + type: "Permute" + bottom: "ssd0_convpredictor2_conv0" + top: "ssd0_transpose1" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten1" + type: "Flatten" + bottom: "ssd0_transpose1" + top: "ssd0_flatten1" +} +layer { + name: "ssd0_convpredictor4_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv0" + top: "ssd0_convpredictor4_conv0" + convolution_param { + num_output: 8 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose2" + type: "Permute" + bottom: "ssd0_convpredictor4_conv0" + top: "ssd0_transpose2" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten2" + type: "Flatten" + bottom: "ssd0_transpose2" + top: "ssd0_flatten2" +} +layer { + name: "ssd0_convpredictor6_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv1" + top: "ssd0_convpredictor6_conv0" + convolution_param { + num_output: 8 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose3" + type: "Permute" + bottom: "ssd0_convpredictor6_conv0" + top: "ssd0_transpose3" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten3" + type: "Flatten" + bottom: "ssd0_transpose3" + top: "ssd0_flatten3" +} +layer { + name: "ssd0_convpredictor8_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv2" + top: "ssd0_convpredictor8_conv0" + convolution_param { + num_output: 6 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose4" + type: "Permute" + bottom: "ssd0_convpredictor8_conv0" + top: "ssd0_transpose4" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten4" + type: "Flatten" + bottom: "ssd0_transpose4" + top: "ssd0_flatten4" +} +layer { + name: "ssd0_convpredictor10_conv0" + type: "Convolution" + bottom: "ssd0_expand_conv3" + top: "ssd0_convpredictor10_conv0" + convolution_param { + num_output: 6 + bias_term: true + pad: 1 + kernel_size: 3 + group: 1 + stride: 1 + dilation: 1 + } +} +layer { + name: "ssd0_transpose5" + type: "Permute" + bottom: "ssd0_convpredictor10_conv0" + top: "ssd0_transpose5" + permute_param { + order: 0 + order: 2 + order: 3 + order: 1 + } +} +layer { + name: "ssd0_flatten5" + type: "Flatten" + bottom: "ssd0_transpose5" + top: "ssd0_flatten5" +} +layer { + name: "ssd0_concat0" + type: "Concat" + bottom: "ssd0_flatten0" + bottom: "ssd0_flatten1" + bottom: "ssd0_flatten2" + bottom: "ssd0_flatten3" + bottom: "ssd0_flatten4" + bottom: "ssd0_flatten5" + top: "ssd0_concat0" + concat_param { + axis: 1 + } +} +layer { + name: "ssd0_reshape6" + type: "Reshape" + bottom: "ssd0_concat0" + top: "ssd0_reshape6" + reshape_param { + shape { + dim: 0 + dim: -1 + dim: 2 + } + } +} +layer { + name: "softmax0" + type: "Softmax" + bottom: "ssd0_reshape6" + top: "softmax0" + softmax_param { + axis: 2 + } +} +layer { + name: "flatten0" + type: "Flatten" + bottom: "softmax0" + top: "flatten0" +} +layer { + name: "ssd0_mobilenet0_relu22_fwd_priorbox" + type: "PriorBox" + bottom: "ssd0_mobilenet0_conv22" + bottom: "data" + top: "ssd0_mobilenet0_relu22_fwd_priorbox" + prior_box_param { + min_size: 51.20000076293945 + max_size: 102.4000015258789 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "ssd0_mobilenet0_relu26_fwd_priorbox" + type: "PriorBox" + bottom: "ssd0_mobilenet0_conv26" + bottom: "data" + top: "ssd0_mobilenet0_relu26_fwd_priorbox" + prior_box_param { + min_size: 102.4000015258789 + max_size: 189.39999389648438 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "ssd0_expand_reu0_priorbox" + type: "PriorBox" + bottom: "ssd0_expand_conv0" + bottom: "data" + top: "ssd0_expand_reu0_priorbox" + prior_box_param { + min_size: 189.39999389648438 + max_size: 276.3999938964844 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "ssd0_expand_reu1_priorbox" + type: "PriorBox" + bottom: "ssd0_expand_conv1" + bottom: "data" + top: "ssd0_expand_reu1_priorbox" + prior_box_param { + min_size: 276.3999938964844 + max_size: 363.5199890136719 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + aspect_ratio: 3.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "ssd0_expand_reu2_priorbox" + type: "PriorBox" + bottom: "ssd0_expand_conv2" + bottom: "data" + top: "ssd0_expand_reu2_priorbox" + prior_box_param { + min_size: 363.5199890136719 + max_size: 450.6000061035156 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "ssd0_expand_reu3_priorbox" + type: "PriorBox" + bottom: "ssd0_expand_conv3" + bottom: "data" + top: "ssd0_expand_reu3_priorbox" + prior_box_param { + min_size: 450.6000061035156 + max_size: 492.0 + aspect_ratio: 1.0 + aspect_ratio: 2.0 + flip: false + clip: false + variance: 0.10000000149011612 + variance: 0.10000000149011612 + variance: 0.20000000298023224 + variance: 0.20000000298023224 + offset: 0.5 + } +} +layer { + name: "concat0" + type: "Concat" + bottom: "ssd0_mobilenet0_relu22_fwd_priorbox" + bottom: "ssd0_mobilenet0_relu26_fwd_priorbox" + bottom: "ssd0_expand_reu0_priorbox" + bottom: "ssd0_expand_reu1_priorbox" + bottom: "ssd0_expand_reu2_priorbox" + bottom: "ssd0_expand_reu3_priorbox" + top: "concat0" + concat_param { + axis: 2 + } +} +layer { + name: "detection_out" + type: "DetectionOutput" + bottom: "ssd0_concat1" + bottom: "flatten0" + bottom: "concat0" + top: "detection_out" + detection_output_param { + num_classes: 2 + share_location: true + background_label_id: 0 + nms_param { + nms_threshold: 0.44999998807907104 + top_k: 400 + } + code_type: CENTER_SIZE + keep_top_k: 100 + confidence_threshold: 0.009999999776482582 + } +} diff --git a/Prj-Linux/lpr/model/refinenet.caffemodel b/Prj-Linux/lpr/model/refinenet.caffemodel new file mode 100644 index 0000000..d02bcab Binary files /dev/null and b/Prj-Linux/lpr/model/refinenet.caffemodel differ diff --git a/Prj-Linux/lpr/model/refinenet.prototxt b/Prj-Linux/lpr/model/refinenet.prototxt new file mode 100644 index 0000000..5ef8e75 --- /dev/null +++ b/Prj-Linux/lpr/model/refinenet.prototxt @@ -0,0 +1,300 @@ +name: "ONet" +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 48 +input_dim: 120 + +################################## +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + convolution_param { + num_output: 32 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "prelu1" + type: "PReLU" + bottom: "conv1" + top: "conv1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv2" + type: "Convolution" + bottom: "pool1" + top: "conv2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + convolution_param { + num_output: 64 + kernel_size: 3 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + name: "prelu2" + type: "PReLU" + bottom: "conv2" + top: "conv2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "conv2" + top: "pool2" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + convolution_param { + num_output: 64 + kernel_size: 3 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "prelu3" + type: "PReLU" + bottom: "conv3" + top: "conv3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "conv3" + top: "pool3" + pooling_param { + pool: MAX + kernel_size: 2 + stride: 2 + } +} +layer { + name: "conv4" + type: "Convolution" + bottom: "pool3" + top: "conv4" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + convolution_param { + num_output: 128 + kernel_size: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} +layer { + name: "prelu4" + type: "PReLU" + bottom: "conv4" + top: "conv4" +} + + +layer { + name: "conv5i" + type: "InnerProduct" + bottom: "conv4" + top: "conv5" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + inner_product_param { + #kernel_size: 3 + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + name: "drop5i" + type: "Dropout" + bottom: "conv5" + top: "conv5" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "prelu5" + type: "PReLU" + bottom: "conv5" + top: "conv5" +} + + +layer { + name: "conv6i-1" + type: "InnerProduct" + bottom: "conv5" + top: "conv6-1" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + inner_product_param { + #kernel_size: 1 + num_output: 2 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + + +layer { + name: "conv6i-2" + type: "InnerProduct" + bottom: "conv5" + top: "conv6-2" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + inner_product_param { + #kernel_size: 1 + num_output: 4 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + +layer { + name: "conv6-3" + type: "InnerProduct" + bottom: "conv5" + top: "conv6-3" + param { + lr_mult: 1 + decay_mult: 1 + } + param { + lr_mult: 2 + decay_mult: 1 + } + inner_product_param { + #kernel_size: 1 + num_output: 8 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0 + } + } +} + + +layer { + name: "prob1" + type: "Softmax" + bottom: "conv6-1" + top: "prob1" +} \ No newline at end of file diff --git a/Prj-Linux/lpr/res/test.jpg b/Prj-Linux/lpr/res/test.jpg new file mode 100644 index 0000000..bc425cf Binary files /dev/null and b/Prj-Linux/lpr/res/test.jpg differ diff --git a/Prj-Linux/lpr/res/test_db1.jpg b/Prj-Linux/lpr/res/test_db1.jpg new file mode 100644 index 0000000..13aada0 Binary files /dev/null and b/Prj-Linux/lpr/res/test_db1.jpg differ diff --git a/Prj-Linux/lpr/src/CNNRecognizer.cpp b/Prj-Linux/lpr/src/CNNRecognizer.cpp deleted file mode 100644 index 252bd7c..0000000 --- a/Prj-Linux/lpr/src/CNNRecognizer.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by Jack Yu on 21/10/2017. -// - -#include "../include/CNNRecognizer.h" - -namespace pr{ - CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){ - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - - label CNNRecognizer::recognizeCharacter(cv::Mat charImage){ - if(charImage.channels()== 3) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); - cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } -} diff --git a/Prj-Linux/lpr/src/FastDeskew.cpp b/Prj-Linux/lpr/src/FastDeskew.cpp deleted file mode 100644 index 58c8eb3..0000000 --- a/Prj-Linux/lpr/src/FastDeskew.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by Jack Yu on 02/10/2017. -// - - - -#include <../include/FastDeskew.h> - -namespace pr{ - const int ANGLE_MIN = 30 ; - const int ANGLE_MAX = 150 ; - const int PLATE_H = 36; - const int PLATE_W = 136; - - int angle(float x,float y) - { - return atan2(x,y)*180/3.1415; - } - - std::vector avgfilter(std::vector angle_list,int windowsSize) { - std::vector angle_list_filtered(angle_list.size() - windowsSize + 1); - for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) { - float avg = 0.00f; - for (int j = 0; j < windowsSize; j++) { - avg += angle_list[i + j]; - } - avg = avg / windowsSize; - angle_list_filtered[i] = avg; - } - - return angle_list_filtered; - } - - - void drawHist(std::vector seq){ - cv::Mat image(300,seq.size(),CV_8U); - image.setTo(0); - - for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) ); - cv::Size size(skewPlate.cols + extend_padding ,skewPlate.rows); - float interval = abs(sin((angle /180) * 3.14)* skewPlate.rows); - cv::Point2f pts1[4] = {cv::Point2f(0,0),cv::Point2f(0,size_o.height),cv::Point2f(size_o.width,0),cv::Point2f(size_o.width,size_o.height)}; - if(angle>0) { - cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height), - cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size); - } - else { - cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0), - cv::Point2f(size_o.width, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC); - } - return dst; - } - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){ - const int FILTER_WINDOWS_SIZE = 5; - std::vector angle_list(180); - memset(angle_list.data(),0,angle_list.size()*sizeof(int)); - cv::Mat bak; - skewImage.copyTo(bak); - if(skewImage.channels() == 3) - cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY); - if(skewImage.channels() == 1) - { - cv::Mat eigen; - cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5); - for( int j = 0; j < skewImage.rows; j+=blockSize ) - { for( int i = 0; i < skewImage.cols; i+=blockSize ) - { - float x2 = eigen.at(j, i)[4]; - float y2 = eigen.at(j, i)[5]; - int angle_cell = angle(x2,y2); - angle_list[(angle_cell + 180)%180]+=1.0; - } - } - } - std::vector filtered = avgfilter(angle_list,5); - int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2; - if(maxPos>ANGLE_MAX) - maxPos = (-maxPos+90+180)%180; - if(maxPos(maxPos),60.0f); - return deskewed; - } - - - -}//namespace pr diff --git a/Prj-Linux/lpr/src/FineMapping.cpp b/Prj-Linux/lpr/src/FineMapping.cpp deleted file mode 100644 index f2505e9..0000000 --- a/Prj-Linux/lpr/src/FineMapping.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include "FineMapping.h" -namespace pr{ - const int FINEMAPPING_H = 60 ; - const int FINEMAPPING_W = 140; - const int PADDING_UP_DOWN = 30; - void drawRect(cv::Mat image,cv::Rect rect) - { - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); - } - - - FineMapping::FineMapping(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - - cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding) - { - cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16), - cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - cv::Mat prob = net.forward(); - int front = static_cast(prob.at(0,0)*FinedVertical.cols); - int back = static_cast(prob.at(0,1)*FinedVertical.cols); - front -= leftPadding ; - if(front<0) front = 0; - back +=rightPadding; - if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1; - cv::Mat cropped = FinedVertical.colRange(front,back).clone(); - return cropped; - } - - std::pair FitLineRansac(std::vector pts,int zeroadd = 0 ) - { - std::pair res; - if(pts.size()>2) - { - cv::Vec4f line; - cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01); - float vx = line[0]; - float vy = line[1]; - float x = line[2]; - float y = line[3]; - int lefty = static_cast((-x * vy / vx) + y); - int righty = static_cast(((136- x) * vy / vx) + y); - res.first = lefty+PADDING_UP_DOWN+zeroadd; - res.second = righty+PADDING_UP_DOWN+zeroadd; - return res; - } - res.first = zeroadd; - res.second = zeroadd; - return res; - } - - cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ - cv::Mat PreInputProposal; - cv::Mat proposal; - cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - if(InputProposal.channels() == 3) - cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); - else - PreInputProposal.copyTo(proposal); - // this will improve some sen - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); - float diff = static_cast(upper-lower); - diff/=static_cast(sliceNum-1); - cv::Mat binary_adaptive; - std::vector line_upper; - std::vector line_lower; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - if(contours_nums<41) - { - cv::bitwise_not(InputProposal,InputProposal); - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,5)); - cv::Mat bak; - cv::resize(InputProposal,bak,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - cv::erode(bak,bak,kernal); - if(InputProposal.channels() == 3) - cv::cvtColor(bak,proposal,cv::COLOR_BGR2GRAY); - else - proposal = bak; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - } - cv::Mat rgb; - cv::copyMakeBorder(PreInputProposal, rgb, PADDING_UP_DOWN, PADDING_UP_DOWN, 0, 0, cv::BORDER_REPLICATE); - std::pair A; - std::pair B; - A = FitLineRansac(line_upper, -1); - B = FitLineRansac(line_lower, 1); - int leftyB = A.first; - int rightyB = A.second; - int leftyA = B.first; - int rightyA = B.second; - int cols = rgb.cols; - int rows = rgb.rows; - std::vector corners(4); - corners[0] = cv::Point2f(cols - 1, rightyA); - corners[1] = cv::Point2f(0, leftyA); - corners[2] = cv::Point2f(cols - 1, rightyB); - corners[3] = cv::Point2f(0, leftyB); - std::vector corners_trans(4); - corners_trans[0] = cv::Point2f(136, 36); - corners_trans[1] = cv::Point2f(0, 36); - corners_trans[2] = cv::Point2f(136, 0); - corners_trans[3] = cv::Point2f(0, 0); - cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans); - cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); - cv::warpPerspective(rgb, quad, transform, quad.size()); - return quad; - } -} - - diff --git a/Prj-Linux/lpr/src/FineTune.cpp b/Prj-Linux/lpr/src/FineTune.cpp new file mode 100644 index 0000000..463365b --- /dev/null +++ b/Prj-Linux/lpr/src/FineTune.cpp @@ -0,0 +1,67 @@ +#include "../include/Finetune.h" +using namespace std; +using namespace cv; + +namespace pr { + FineTune::FineTune(string finetune_prototxt, string finetune_caffemodel) { + FTNet = dnn::readNetFromCaffe(finetune_prototxt, finetune_caffemodel); + } + void FineTune::affine_crop(Mat src, vector pts, Mat &crop) + { + Point2f dst[4] = { Point2f(0,0),Point2f(160,0),Point2f(160,40),Point2f(0,40) }; + Point2f srcpt[4] = { Point2f(pts[0]),Point2f(pts[1]) ,Point2f(pts[2]) ,Point2f(pts[3]) }; + Mat _mat = getPerspectiveTransform(srcpt, dst); + warpPerspective(src, crop, _mat, Size(160, 40)); + } + void FineTune::to_refine(Mat src, vectorpts, Mat& crop) + { + float scale = 3.f; + int cx = 64; int cy = 24; + int cw = 64; int ch = 24; + int tx1 = cx - cw / 2; + int ty1 = cy - ch / 2; + int tx2 = cx + cw / 2; + int ty2 = cy - ch / 2; + int tx3 = cx + cw / 2; + int ty3 = cy + ch / 2; + int tx4 = cx - cw / 2; + int ty4 = cy + ch / 2; + vector dstp(4); + Point2f dst[4] = { (Point2f(tx1*scale, ty1*scale)) ,(Point2f(tx2*scale, ty2*scale)) ,(Point2f(tx3*scale, ty3*scale)) ,(Point2f(tx4*scale, ty4*scale)) }; + Point2f pt[4] = { Point2f(pts[0]),Point2f(pts[1]) ,Point2f(pts[2]) ,Point2f(pts[3]) }; + //estimater + Mat _mat = getPerspectiveTransform(pt, dst); + warpPerspective(src, crop, _mat, Size(120 * scale, 48 * scale)); + } + void FineTune::Finetune(Mat src, Mat& dst) + { + Mat tof;// = src.clone(); + resize(src, tof, Size(120, 48)); + Mat blob = dnn::blobFromImage(tof, 0.0078125, Size(120, 48), Scalar(127.5, 127.5, 127.5), false, false); + FTNet.setInput(blob); + Mat outblob = FTNet.forward("conv6-3"); + + float *data = outblob.ptr(); + vector pts(4); + Mat fineMat(Size(2, 4), CV_32F, data); + for (int i = 0; i < fineMat.rows; i++) + { + pts[i].x = fineMat.at(i, 0)*src.cols; + pts[i].y = fineMat.at(i, 1)*src.rows; + } + Mat crop; + to_refine(src, pts, crop); + blob = dnn::blobFromImage(crop, 0.0078128, Size(120, 48), Scalar(127.5, 127.5, 127.5), false, false); + FTNet.setInput(blob); + outblob = FTNet.forward("conv6-3"); + data = outblob.ptr(); + Mat fineMat2(Size(2, 4), CV_32F, data); + for (int i = 0; i < fineMat.rows; i++) + { + pts[i].x = fineMat2.at(i, 0)*crop.cols; + pts[i].y = fineMat2.at(i, 1)*crop.rows; + } + affine_crop(crop, pts, crop); + dst = crop.clone(); + } +} \ No newline at end of file diff --git a/Prj-Linux/lpr/src/Pipeline.cpp b/Prj-Linux/lpr/src/Pipeline.cpp index f34a09e..b965c30 100644 --- a/Prj-Linux/lpr/src/Pipeline.cpp +++ b/Prj-Linux/lpr/src/Pipeline.cpp @@ -1,74 +1,70 @@ -// -// Created by Jack Yu on 23/10/2017. -// - #include "../include/Pipeline.h" - namespace pr { + PipelinePR::PipelinePR(std::string detect_prototxt, std::string detect_caffemodel, + std::string finetune_prototxt, std::string finetune_caffemodel, + std::string platerec_prototxt, std::string platerec_caffemodel, + std::string dbstring) + { + platedetection = new PlateDetection(detect_prototxt, detect_caffemodel); + finetune = new FineTune(finetune_prototxt, finetune_caffemodel); + platerecognation = new PlateRecognation(platerec_prototxt, platerec_caffemodel); + dbdetection = new DBDetection(dbstring); + } + PipelinePR::~PipelinePR() + { + delete platedetection; + delete finetune; + delete platerecognation; + delete dbdetection; + } + cv::Mat DBcropFromImage(const cv::Mat &image){ + cv::Mat cropped; + image.copyTo(cropped); + int cropped_w = cropped.cols; + int cropped_h = cropped.rows; + cv::Rect up,down; + up.y = cropped_h*0.05;up.x = cropped_w*0.2;up.height = cropped_h*0.35;up.width = cropped_w*0.55; + down.y = cropped_h*0.4;down.x = cropped_w*0.05;down.height = cropped_h*0.6;down.width = cropped_w*0.95; + cv::Mat cropUp,cropDown; + cropped(up).copyTo(cropUp); + cropped(down).copyTo(cropDown); + cv::resize(cropUp,cropUp,cv::Size(64,40)); + cv::resize(cropDown,cropDown,cv::Size(96,40)); + cv::Mat crop = cv::Mat(40,160,CV_8UC3); + cropUp.copyTo(crop(cv::Rect(0,0,64,40))); + cropDown.copyTo(crop(cv::Rect(64,0,96,40))); + return crop; - const int HorizontalPadding = 4; - PipelinePR::PipelinePR(std::string detector_filename, - std::string finemapping_prototxt, std::string finemapping_caffemodel, - std::string segmentation_prototxt, std::string segmentation_caffemodel, - std::string charRecognization_proto, std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel) { - plateDetection = new PlateDetection(detector_filename); - fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel); - plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel); - generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel); - segmentationFreeRecognizer = new SegmentationFreeRecognizer(segmentationfree_proto,segmentationfree_caffemodel); - } - - PipelinePR::~PipelinePR() { - delete plateDetection; - delete fineMapping; - delete plateSegmentation; - delete generalRecognizer; - delete segmentationFreeRecognizer; } - - std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage,int method) { - std::vector results; - std::vector plates; - plateDetection->plateDetectionRough(plateImage,plates,36,700); - for (pr::PlateInfo plateinfo:plates) { - - cv::Mat image_finemapping = plateinfo.getPlateImage(); - image_finemapping = fineMapping->FineMappingVertical(image_finemapping); - image_finemapping = pr::fastdeskew(image_finemapping, 5); - //Segmentation-based - if(method==SEGMENTATION_BASED_METHOD) - { - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, HorizontalPadding); - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); - plateinfo.setPlateImage(image_finemapping); - std::vector rects; - plateSegmentation->segmentPlatePipline(plateinfo, 1, rects); - plateSegmentation->ExtractRegions(plateinfo, rects); - cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE); - plateinfo.setPlateImage(image_finemapping); - generalRecognizer->SegmentBasedSequenceRecognition(plateinfo); - plateinfo.decodePlateNormal(pr::CH_PLATE_CODE); - - } - //Segmentation-free - else if(method==SEGMENTATION_FREE_METHOD) - { - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 4, HorizontalPadding+3); - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); - plateinfo.setPlateImage(image_finemapping); - std::pair res = segmentationFreeRecognizer->SegmentationFreeForSinglePlate(plateinfo.getPlateImage(),pr::CH_PLATE_CODE); - plateinfo.confidence = res.second; - plateinfo.setPlateName(res.first); - } - results.push_back(plateinfo); - } - - return results; - - }//namespace pr - - - + std::vector PipelinePR::RunPiplineAsImage(cv::Mat plateimg,int IsDB) + { + std::vector plates; + std::vector plateres; + if(IsDB==1) + { + dbdetection->DBDetect(plateimg,plates,30,1280); + } + else + { + platedetection->Detectssd(plateimg, plates); + } + for (pr::PlateInfo plateinfo : plates) { + cv::Mat image = plateinfo.getPlateImage(); + cv::Mat CropImg; + + if(IsDB==1) + { + CropImg = DBcropFromImage(image); + platerecognation->segmentation_free_recognation(CropImg, plateinfo); + } + else + { + finetune->Finetune(image, CropImg); + platerecognation->segmentation_free_recognation(CropImg, plateinfo); + } + plateres.push_back(plateinfo); + } + return plateres; + } } diff --git a/Prj-Linux/lpr/src/PlateDetection.cpp b/Prj-Linux/lpr/src/PlateDetection.cpp index 9d0e6e2..ff9c214 100644 --- a/Prj-Linux/lpr/src/PlateDetection.cpp +++ b/Prj-Linux/lpr/src/PlateDetection.cpp @@ -1,34 +1,103 @@ -#include "../include/PlateDetection.h" -#include "util.h" -namespace pr{ - PlateDetection::PlateDetection(std::string filename_cascade){ - cascade.load(filename_cascade); +#include "../include/Platedetect.h" - }; - void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ - cv::Mat processImage; +using namespace cv; +using namespace std; +namespace pr { + + PlateDetection::PlateDetection(std::string ssd_prototxt, std::string ssd_caffemodel) + { + ssdNet = cv::dnn::readNetFromCaffe(ssd_prototxt, ssd_caffemodel); + } + DBDetection::DBDetection(std::string cascadestring) + { + dbcascade.load(cascadestring); + } + void PlateDetection::Detectssd(cv::Mat img, std::vector &plateInfos) + { + int cols = img.cols; + int rows = img.rows; + Mat in; + img.convertTo(in, CV_32F); + Mat input(img.size(), CV_32FC3); + Mat inputblob1 = input.reshape(1, { 1, 3,rows,cols }); + Mat input_blob = dnn::blobFromImages(in, 0.225, Size(), Scalar(103.53, 116.28, 123.675), false); + float *blobdata = input_blob.ptr(); + float *blobdata2 = inputblob1.ptr(); + { + for (int i = 0; i < rows; i++) + { + memcpy(blobdata2 + i * cols, blobdata + 3 * i * cols, cols * sizeof(float)); + memcpy(blobdata2 + i * cols + rows * cols, blobdata + (1 + 3 * i) * cols, cols * sizeof(float)); + memcpy(blobdata2 + i * cols + rows * cols * 2, blobdata + (2 + 3 * i) * cols, cols * sizeof(float)); + } + } + ssdNet.setInput(inputblob1); + + Mat outputBlob = ssdNet.forward("detection_out"); + + Mat detectmat(outputBlob.size[2], outputBlob.size[3], CV_32F, outputBlob.ptr()); + vector recs; + vectorscs; + for (int i = 0; i < detectmat.rows; i++) + { + float confidence = detectmat.at(i, 2); + if (confidence > 0.5) + { + int x1, x2, y1, y2; + Rect rec; + Mat cimg; + x1 = int(detectmat.at(i, 3) * cols); + y1 = int(detectmat.at(i, 4) * rows); + x2 = int(detectmat.at(i, 5) * cols); + y2 = int(detectmat.at(i, 6) * rows); + x1 = max(x1, 0); + y1 = max(y1, 0); + x2 = min(x2, cols - 1); + y2 = min(y2, rows - 1); + rec.x = x1; rec.y = y1; rec.width = (x2 - x1 + 1); rec.height = (y2 - y1 + 1); + img(rec).copyTo(cimg); + PlateInfo plateInfo(cimg, rec); + plateInfos.push_back(plateInfo); + } + } + } + cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ + int w = image.cols-1; + int h = image.rows-1; + rect.x = std::max(rect.x,0); + rect.y = std::max(rect.y,0); + rect.height = std::min(rect.height,h-rect.y); + rect.width = std::min(rect.width,w-rect.x); + cv::Mat temp(rect.size(), image.type()); + cv::Mat cropped; + temp = image(rect); + temp.copyTo(cropped); + return cropped; + } + void DBDetection::DBDetect(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w) + { + cv::Mat processImage; cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); std::vector platesRegions; cv::Size minSize(min_w,min_w/4); cv::Size maxSize(max_w,max_w/4); if (&processImage == NULL) return; - cascade.detectMultiScale( processImage, platesRegions, + dbcascade.detectMultiScale( processImage, platesRegions, 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); for(auto plate:platesRegions) { - int zeroadd_w = static_cast(plate.width*0.30); - int zeroadd_h = static_cast(plate.height*2); - int zeroadd_x = static_cast(plate.width*0.15); - int zeroadd_y = static_cast(plate.height*1); + int zeroadd_w = static_cast(plate.width*0.28); + int zeroadd_h = static_cast(plate.height*0.35); + int zeroadd_x = static_cast(plate.width*0.14); + int zeroadd_y = static_cast(plate.height*0.15); plate.x-=zeroadd_x; plate.y-=zeroadd_y; plate.height += zeroadd_h; plate.width += zeroadd_w; - cv::Mat plateImage = util::cropFromImage(InputImage,plate); + cv::Mat plateImage = cropFromImage(InputImage,plate); PlateInfo plateInfo(plateImage,plate); plateInfos.push_back(plateInfo); - } } -}//namespace pr +} diff --git a/Prj-Linux/lpr/src/PlateRecognation.cpp b/Prj-Linux/lpr/src/PlateRecognation.cpp new file mode 100644 index 0000000..40919d9 --- /dev/null +++ b/Prj-Linux/lpr/src/PlateRecognation.cpp @@ -0,0 +1,61 @@ +#include "../include/PlateRecognation.h" +#include "../include/Pipeline.h" +using namespace std; +using namespace cv; +namespace pr { + + PlateRecognation::PlateRecognation(std::string rec_prototxt, std::string rec_caffemodel) + { + RecNet = cv::dnn::readNetFromCaffe(rec_prototxt, rec_caffemodel); + } + void PlateRecognation::segmentation_free_recognation(cv::Mat src, pr::PlateInfo &plateinfo) + { + float score = 0; + string text = ""; + Mat src1 = src.clone(); + Mat inputMat(Size(40, 160), CV_8UC3); + + for (int j = 0; j < src.rows; j++) + { + for (int i = 0; i < src.cols; i++) + { + inputMat.at(i, j) = src1.at(j, i); + } + } + Mat blob = dnn::blobFromImage(inputMat, 1 / 255.f, Size(40, 160), Scalar(0, 0, 0), false, false); + RecNet.setInput(blob); + Mat outblob = RecNet.forward(); + int x = outblob.size[2]; + int y = outblob.size[0]; + float *data = outblob.ptr(); + vector scores(84); + vectormaxidxs; + vector maxscore; + for (int i = 2; i < 20; i++) + { + for (int j = 0; j < 84; j++) + { + scores[j] = data[j * 20 + i]; + } + int idx = max_element(scores.begin(), scores.end()) - scores.begin(); + maxidxs.push_back(idx); + maxscore.push_back(scores[idx]); + } + int charnum = 0; + for (int i = 0; i < maxidxs.size(); i++) + { + if (maxidxs[i] < pr::CH_PLATE_CODE.size() && (i == 0 || (maxidxs[i - 1] != maxidxs[i]))) + { + text += pr::CH_PLATE_CODE[maxidxs[i]]; + score += maxscore[i]; + charnum++; + } + } + if (charnum > 0) + { + score /= charnum; + } + plateinfo.setPlateName(text); + plateinfo.confidence = score; + } +} \ No newline at end of file diff --git a/Prj-Linux/lpr/src/PlateSegmentation.cpp b/Prj-Linux/lpr/src/PlateSegmentation.cpp deleted file mode 100644 index c0f5e65..0000000 --- a/Prj-Linux/lpr/src/PlateSegmentation.cpp +++ /dev/null @@ -1,404 +0,0 @@ -// -// Created by Jack Yu on 16/10/2017. -// - -#include "../include/PlateSegmentation.h" -#include "../include/niBlackThreshold.h" - - -//#define DEBUG -namespace pr{ - - PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){ - cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } - - void drawHist(float* seq,int size,const char* name){ - cv::Mat image(300,size,CV_8U); - image.setTo(0); - float* start =seq; - float* end = seq+size; - float l = *std::max_element(start,end); - for(int i = 0;i>1),rect.y + (rect.height>>1)); - int rebuildLeft = (rect.width>>1 )+ left; - int rebuildRight = (rect.width>>1 )+ right; - int rebuildTop = (rect.height>>1 )+ top; - int rebuildBottom = (rect.height>>1 )+ bottom; - return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize); - - } - - - - void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){ - int w = candidatePts[5] - candidatePts[4]; - int cols = plateImage.cols; - int rows = plateImage.rows; - for(int i = 0 ; i < candidatePts.size() ; i++) - { - int left = 0; - int right = 0 ; - - if(i == 0 ){ - left= candidatePts[i]; - right = left+w+padding; - } - else { - left = candidatePts[i] - padding; - right = left + w + padding * 2; - } - - computeSafeMargin(right,cols); - computeSafeMargin(left,cols); - cv::Rect roi(left,0,right - left,rows-1); - cv::Mat roiImage; - plateImage(roi).copyTo(roiImage); - - if (i>=1) - { - - cv::Mat roi_thres; -// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY); - - niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.27,BINARIZATION_NIBLACK); - - std::vector> contours; - cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE); - cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1); - - cv::Rect final_bdbox; - cv::Point final_center; - int final_dist = INT_MAX; - - - for(auto contour:contours) - { - cv::Rect bdbox = cv::boundingRect(contour); - cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1)); - int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x); - if(dist rows>>1) - { final_dist =dist; - final_center = center; - final_bdbox = bdbox; - } - } - - //rebuild box - if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10) - final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size()); - else { - if(i == candidatePts.size()-1) - final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size()); - else - final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size()); - - -// std::cout<0&&i+j+r> &candidatePts){ - int rows = respones.rows; - int cols = respones.cols; - - - - float *data = (float*)respones.data; - float *engNum_prob = data; - float *false_prob = data+cols; - float *ch_prob = data+cols*2; - - avgfilter(engNum_prob,cols,5); - avgfilter(false_prob,cols,5); -// avgfilter(ch_prob,cols,5); - std::vector candidate_pts(7); -#ifdef DEBUG - drawHist(engNum_prob,cols,"engNum_prob"); - drawHist(false_prob,cols,"false_prob"); - drawHist(ch_prob,cols,"ch_prob"); - cv::waitKey(0); -#endif - - - - - int cp_list[7]; - float loss_selected = -10; - - for(int start = 0 ; start < 20 ; start+=2) - for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){ - for(int interval = windowsWidth/2; interval < windowsWidth; interval++) - { - int cp1_ch = start; - int cp2_p0 = cp1_ch+ width; - int cp3_p1 = cp2_p0+ width + interval; - int cp4_p2 = cp3_p1 + width; - int cp5_p3 = cp4_p2 + width+1; - int cp6_p4 = cp5_p3 + width+2; - int cp7_p5= cp6_p4+ width+2; - - int md1 = (cp1_ch+cp2_p0)>>1; - int md2 = (cp2_p0+cp3_p1)>>1; - int md3 = (cp3_p1+cp4_p2)>>1; - int md4 = (cp4_p2+cp5_p3)>>1; - int md5 = (cp5_p3+cp6_p4)>>1; - int md6 = (cp6_p4+cp7_p5)>>1; - - - - - if(cp7_p5>=cols) - continue; -// float loss = ch_prob[cp1_ch]+ -// engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5] -// + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]); - float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]); - - if(loss>loss_selected) - { - loss_selected = loss; - cp_list[0]= cp1_ch; - cp_list[1]= cp2_p0; - cp_list[2]= cp3_p1; - cp_list[3]= cp4_p2; - cp_list[4]= cp5_p3; - cp_list[5]= cp6_p4; - cp_list[6]= cp7_p5; - } - } - } - candidate_pts[0] = cp_list[0]; - candidate_pts[1] = cp_list[1]; - candidate_pts[2] = cp_list[2]; - candidate_pts[3] = cp_list[3]; - candidate_pts[4] = cp_list[4]; - candidate_pts[5] = cp_list[5]; - candidate_pts[6] = cp_list[6]; - - candidatePts.first = loss_selected; - candidatePts.second = candidate_pts; - - }; - - - void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){ - - -// cv::resize(plateImage,plateImage,cv::Size(136,36)); - - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - int padding = plateImage.cols-136 ; -// int padding = 0 ; - int height = plateImage.rows - 1; - int width = plateImage.cols - 1 - padding; - for(int i = 0 ; i < width - windowsWidth +1 ; i +=stride) - { - cv::Rect roi(i,0,windowsWidth,height); - cv::Mat roiImage = plateImageGray(roi); - cv::Mat response = classifyResponse(roiImage); - respones.push_back(response); - } - - - - - respones = respones.t(); -// std::pair> images ; -// -// -// std::cout< &Char_rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); // get src image . - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - //do binarzation - // - std::pair> sections ; // segment points variables . - - cv::Mat respones; //three response of every sub region from origin image . - segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones); - templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections); - for(int i = 0; i < sections.second.size() ; i++) - { - sections.second[i]*=stride; - - } - -// std::cout< &rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); - for(int i = 0 ; i < rects.size() ; i++){ - cv::Mat charImage; - plateImage(rects[i]).copyTo(charImage); - if(charImage.channels()) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); -// cv::imshow("image",charImage); -// cv::waitKey(0); - cv::equalizeHist(charImage,charImage); -// - -// - - - std::pair char_instance; - if(i == 0 ){ - - char_instance.first = CHINESE; - - - } else if(i == 1){ - char_instance.first = LETTER; - } - else{ - char_instance.first = LETTER_NUMS; - } - char_instance.second = charImage; - plateInfo.appendPlateChar(char_instance); - - } - - } - -}//namespace pr diff --git a/Prj-Linux/lpr/src/Recognizer.cpp b/Prj-Linux/lpr/src/Recognizer.cpp deleted file mode 100644 index 07fdfb0..0000000 --- a/Prj-Linux/lpr/src/Recognizer.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by Jack Yu on 22/10/2017. -// - -#include "../include/Recognizer.h" - -namespace pr{ - void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){ - for(auto char_instance:plateinfo.plateChars) - { - std::pair res; - if(char_instance.second.rows*char_instance.second.cols>40) { - label code_table = recognizeCharacter(char_instance.second); - res.first = char_instance.first; - code_table.copyTo(res.second); - plateinfo.appendPlateCoding(res); - } else{ - res.first = INVALID; - plateinfo.appendPlateCoding(res); - } - } - } -} diff --git a/Prj-Linux/lpr/src/SegmentationFreeRecognizer.cpp b/Prj-Linux/lpr/src/SegmentationFreeRecognizer.cpp deleted file mode 100644 index 369f63b..0000000 --- a/Prj-Linux/lpr/src/SegmentationFreeRecognizer.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// Created by Jack Yu on 28/11/2017. -// -#include "../include/SegmentationFreeRecognizer.h" - -namespace pr { - SegmentationFreeRecognizer::SegmentationFreeRecognizer(std::string prototxt, std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - inline int judgeCharRange(int id) - {return id<31 || id>63; - } - std::pair decodeResults(cv::Mat code_table,std::vector mapping_table,float thres) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - std::vector> seq_decode_res; - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - - float sum_confidence = 0; - int plate_lenghth = 0 ; - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - { - float *fstart = ((float *) (code_table.data) + i * labellength ); - float confidence = *(fstart+seq[i]); - std::pair pair_(seq[i],confidence); - seq_decode_res.push_back(pair_); - } - } - int i = 0; - if (seq_decode_res.size()>1 && judgeCharRange(seq_decode_res[0].first) && judgeCharRange(seq_decode_res[1].first)) - { - i=2; - int c = seq_decode_res[0].second res; - res.second = sum_confidence/plate_lenghth; - res.first = name; - return res; - - } - std::string decodeResults(cv::Mat code_table,std::vector mapping_table) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - name+=mapping_table[seq[i]]; - } - return name; - } - std::pair SegmentationFreeRecognizer::SegmentationFreeForSinglePlate(cv::Mat Image,std::vector mapping_table) { - cv::transpose(Image,Image); - cv::Mat inputBlob = cv::dnn::blobFromImage(Image, 1 / 255.0, cv::Size(40,160)); - net.setInput(inputBlob, "data"); - cv::Mat char_prob_mat = net.forward(); - return decodeResults(char_prob_mat,mapping_table,0.00); - } -} diff --git a/Prj-Linux/lpr/src/util.h b/Prj-Linux/lpr/src/util.h deleted file mode 100644 index 3f9f52c..0000000 --- a/Prj-Linux/lpr/src/util.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// Created by Jack Yu on 04/04/2017. -// - -#include -namespace util{ - template void swap ( T& a, T& b ) - { - T c(a); a=b; b=c; - } - template T min(T& a,T& b ) - { - return a>b?b:a; - } - - cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ - int w = image.cols-1; - int h = image.rows-1; - rect.x = std::max(rect.x,0); - rect.y = std::max(rect.y,0); - rect.height = std::min(rect.height,h-rect.y); - rect.width = std::min(rect.width,w-rect.x); - cv::Mat temp(rect.size(), image.type()); - cv::Mat cropped; - temp = image(rect); - temp.copyTo(cropped); - return cropped; - - } - - cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect) - { - cv::Mat M, rotated, cropped; - float angle = rect.angle; - cv::Size rect_size(rect.size.width,rect.size.height); - if (rect.angle < -45.) { - angle += 90.0; - swap(rect_size.width, rect_size.height); - } - M = cv::getRotationMatrix2D(rect.center, angle, 1.0); - cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC); - cv::getRectSubPix(rotated, rect_size, rect.center, cropped); - return cropped; - } - - cv::Mat calcHist(const cv::Mat &image) - { - cv::Mat hsv; - std::vector hsv_planes; - cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV); - cv::split(hsv,hsv_planes); - cv::Mat hist; - int histSize = 256; - float range[] = {0,255}; - const float* histRange = {range}; - cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true); - return hist; - } - - float computeSimilir(const cv::Mat &A,const cv::Mat &B) - { - cv::Mat histA,histB; - histA = calcHist(A); - histB = calcHist(B); - return cv::compareHist(histA,histB,CV_COMP_CORREL); - } -}//namespace util diff --git a/Prj-Linux/lpr/tests/testPipeLine.cpp b/Prj-Linux/lpr/tests/testPipeLine.cpp new file mode 100644 index 0000000..a604dbb --- /dev/null +++ b/Prj-Linux/lpr/tests/testPipeLine.cpp @@ -0,0 +1,28 @@ +#include"../include/Pipeline.h" + +void TEST_PIPELINE() +{ + pr::PipelinePR prc("../lpr/model/mininet_ssd_v1.prototxt", "../lpr/model/mininet_ssd_v1.caffemodel", + "../lpr/model/refinenet.prototxt", "../lpr/model/refinenet.caffemodel", + "../lpr/model/SegmenationFree-Inception.prototxt", "../lpr/model/SegmenationFree-Inception.caffemodel", + "../lpr/model/cascade_double.xml"); + cv::Mat img = cv::imread("../lpr//res//test.jpg"); + std::vector res = prc.RunPiplineAsImage(img,0); + for (auto st : res) { + if (st.confidence > 0.75) { + std::cout << st.getPlateName() << " " << st.confidence << std::endl; + cv::Rect region = st.getPlateRect(); + + cv::rectangle(img, cv::Point(region.x, region.y), cv::Point(region.x + region.width, region.y + region.height), cv::Scalar(255, 255, 0), 2); + } + } + + //cv::imshow("image", img); + //cv::waitKey(0); + +} +int main() +{ + TEST_PIPELINE(); + return 0; +} diff --git a/Prj-Linux/lpr/tests/test_detection.cpp b/Prj-Linux/lpr/tests/test_detection.cpp deleted file mode 100644 index db6c0a7..0000000 --- a/Prj-Linux/lpr/tests/test_detection.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#include <../include/PlateDetection.h> - - -void drawRect(cv::Mat image,cv::Rect rect) -{ - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); -} - - -int main() -{ - cv::Mat image = cv::imread("res/test1.jpg"); - pr::PlateDetection plateDetection("model/cascade.xml"); - std::vector plates; - plateDetection.plateDetectionRough(image,plates); - for(pr::PlateInfo platex:plates) - { - drawRect(image,platex.getPlateRect()); - cv::imwrite("res/cache/test.png",platex.getPlateImage()); - cv::imshow("image",platex.getPlateImage()); - cv::waitKey(0); - } - cv::imshow("image",image); - cv::waitKey(0); - return 0 ; -} diff --git a/Prj-Linux/lpr/tests/test_fastdeskew.cpp b/Prj-Linux/lpr/tests/test_fastdeskew.cpp deleted file mode 100644 index 3740147..0000000 --- a/Prj-Linux/lpr/tests/test_fastdeskew.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// Created by Jack Yu on 02/10/2017. -// - - -#include <../include/FastDeskew.h> - - -void drawRect(cv::Mat image,cv::Rect rect) -{ - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); -} -void TEST_DESKEW(){ - - cv::Mat image = cv::imread("res/3.png",cv::IMREAD_GRAYSCALE); -// cv::resize(image,image,cv::Size(136*2,36*2)); - cv::Mat deskewed = pr::fastdeskew(image,12); -// cv::imwrite("./res/4.png",deskewed); -// cv::Mat deskewed2 = pr::fastdeskew(deskewed,12); -// - cv::imshow("image",deskewed); - cv::waitKey(0); - -} -int main() -{ - - TEST_DESKEW(); - return 0 ; - - -} diff --git a/Prj-Linux/lpr/tests/test_finemapping.cpp b/Prj-Linux/lpr/tests/test_finemapping.cpp deleted file mode 100644 index dd7e26f..0000000 --- a/Prj-Linux/lpr/tests/test_finemapping.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// Created by Jack Yu on 24/09/2017. -// - -#include "FineMapping.h" - - - - - - -int main() -{ - cv::Mat image = cv::imread("res/cache/test.png"); - cv::Mat image_finemapping = pr::FineMapping::FineMappingVertical(image); - pr::FineMapping finemapper = pr::FineMapping("model/HorizonalFinemapping.prototxt","model/HorizonalFinemapping.caffemodel"); - image_finemapping = finemapper.FineMappingHorizon(image_finemapping,0,-3); - cv::imwrite("res/cache/finemappingres.png",image_finemapping); - cv::imshow("image",image_finemapping); - cv::waitKey(0); - - - return 0 ; - -} diff --git a/Prj-Linux/lpr/tests/test_pipeline.cpp b/Prj-Linux/lpr/tests/test_pipeline.cpp deleted file mode 100644 index b2b6a37..0000000 --- a/Prj-Linux/lpr/tests/test_pipeline.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// -// Created by Jack Yu on 23/10/2017. -// - -#include "../include/Pipeline.h" - - - - -using namespace std; - -template -static unsigned int levenshtein_distance(const T &s1, const T &s2) { - const size_t len1 = s1.size(), len2 = s2.size(); - std::vector col(len2 + 1), prevCol(len2 + 1); - - for (unsigned int i = 0; i < prevCol.size(); i++) prevCol[i] = i; - for (unsigned int i = 0; i < len1; i++) { - col[0] = i + 1; - for (unsigned int j = 0; j < len2; j++) - col[j + 1] = min( - min(prevCol[1 + j] + 1, col[j] + 1), - prevCol[j] + (s1[i] == s2[j] ? 0 : 1)); - col.swap(prevCol); - } - return prevCol[len2]; -} - - - - -void TEST_ACC(){ - - pr::PipelinePR prc("model/cascade.xml", - "model/HorizonalFinemapping.prototxt","model/HorizonalFinemapping.caffemodel", - "model/Segmentation.prototxt","model/Segmentation.caffemodel", - "model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel", - "model/SegmenationFree-Inception.prototxt","model/SegmenationFree-Inception.caffemodel" - ); - - ifstream file; - string imagename; - int n = 0,correct = 0,j = 0,sum = 0; - char filename[] = "/Users/yujinke/Downloads/general_test/1.txt"; - string pathh = "/Users/yujinke/Downloads/general_test/"; - file.open(filename, ios::in); - while (!file.eof()) - { - file >> imagename; - string imgpath = pathh + imagename; - std::cout << "------------------------------------------------" << endl; - cout << "图片名:" << imagename << endl; - cv::Mat image = cv::imread(imgpath); -// cv::imshow("image", image); -// cv::waitKey(0); - - std::vector res = prc.RunPiplineAsImage(image,pr::SEGMENTATION_FREE_METHOD); - - float conf = 0; - vector con ; - vector name; - for (auto st : res) { - if (st.confidence > 0.1) { - //std::cout << st.getPlateName() << " " << st.confidence << std::endl; - con.push_back(st.confidence); - name.push_back(st.getPlateName()); - //conf += st.confidence; - } - else - cout << "no string" << endl; - } - // std::cout << conf << std::endl; - int num = con.size(); - float max = 0; - string platestr, chpr, ch; - int diff = 0,dif = 0; - for (int i = 0; i < num; i++) { - - if (con.at(i) > max) - { - max = con.at(i); - platestr = name.at(i); - } - - } - // cout << "max:"< res = prc.RunPiplineAsImage(image,pr::SEGMENTATION_FREE_METHOD); - - for(auto st:res) { - if(st.confidence>0.75) { - std::cout << st.getPlateName() << " " << st.confidence << std::endl; - cv::Rect region = st.getPlateRect(); - - cv::rectangle(image,cv::Point(region.x,region.y),cv::Point(region.x+region.width,region.y+region.height),cv::Scalar(255,255,0),2); - } - } - - cv::imshow("image",image); - cv::waitKey(0); - -} - - -void TEST_CAM() -{ - cv::VideoCapture capture("test1.mp4"); - cv::Mat frame; - pr::PipelinePR prc("model/cascade.xml", - "model/HorizonalFinemapping.prototxt","model/HorizonalFinemapping.caffemodel", - "model/Segmentation.prototxt","model/Segmentation.caffemodel", - "model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel", - "model/SegmenationFree-Inception.prototxt","model/SegmenationFree-Inception.caffemodel" - ); - while(1) { - //读取下一帧 - if (!capture.read(frame)) { - std::cout << "读取视频失败" << std::endl; - exit(1); - } - std::vector res = prc.RunPiplineAsImage(frame,pr::SEGMENTATION_FREE_METHOD); - - for(auto st:res) { - if(st.confidence>0.75) { - std::cout << st.getPlateName() << " " << st.confidence << std::endl; - cv::Rect region = st.getPlateRect(); - cv::rectangle(frame,cv::Point(region.x,region.y),cv::Point(region.x+region.width,region.y+region.height),cv::Scalar(255,255,0),2); - } - } - cv::imshow("image",frame); - cv::waitKey(1); - } - -} - - -int main() -{ - TEST_ACC(); - -// TEST_CAM(); -// TEST_PIPELINE(); - - return 0 ; - - -} diff --git a/Prj-Linux/lpr/tests/test_recognization.cpp b/Prj-Linux/lpr/tests/test_recognization.cpp deleted file mode 100644 index 9244f95..0000000 --- a/Prj-Linux/lpr/tests/test_recognization.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// -// Created by Jack Yu on 23/10/2017. -// - -#include "../include/CNNRecognizer.h" - -std::vector chars{"京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"}; - -#include -using namespace cv::dnn; - - -void getMaxClass(cv::Mat &probBlob, int *classId, double *classProb) -{ -// cv::Mat probMat = probBlob.matRefConst().reshape(1, 1); //reshape the blob to 1x1000 matrix - cv::Point classNumber; - - cv::minMaxLoc(probBlob, NULL, classProb, NULL, &classNumber); - - *classId = classNumber.x; -} - -void TEST_RECOGNIZATION(){ -// pr::CNNRecognizer instance("model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel"); - Net net = cv::dnn::readNetFromCaffe("model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel"); - cv::Mat image = cv::imread("res/char1.png",cv::IMREAD_GRAYSCALE); - cv::resize(image,image,cv::Size(14,30)); - cv::equalizeHist(image,image); - cv::Mat inputBlob = cv::dnn::blobFromImage(image, 1/255.0, cv::Size(14,30), false); - - net.setInput(inputBlob,"data"); - - cv::Mat res = net.forward(); - std::cout< chars{"京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"}; - - -void TEST_SLIDINGWINDOWS_EVAL(){ - cv::Mat demo = cv::imread("res/cache/finemappingres.png"); - cv::resize(demo,demo,cv::Size(136,36)); - - cv::Mat respones; - pr::PlateSegmentation plateSegmentation("model/Segmentation.prototxt","model/Segmentation.caffemodel"); - pr::PlateInfo plate; - plate.setPlateImage(demo); - std::vector rects; - plateSegmentation.segmentPlatePipline(plate,1,rects); - plateSegmentation.ExtractRegions(plate,rects); - - pr::GeneralRecognizer *recognizer = new pr::CNNRecognizer("model/CharacterRecognization.prototxt","model/CharacterRecognization.caffemodel"); - recognizer->SegmentBasedSequenceRecognition(plate); - std::cout< mapping_table) -{ - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - name+=mapping_table[seq[i]]; - } - std::cout< res = recognizr.SegmentationFreeForSinglePlate(image,pr::CH_PLATE_CODE); - std::cout< -#include -namespace pr{ - - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize); -// cv::Mat spatialTransformer(cv::Mat skewImage); - -}//namepace pr - - -#endif //SWIFTPR_FASTDESKEW_H diff --git a/Prj-PHP/include/FineMapping.h b/Prj-PHP/include/FineMapping.h deleted file mode 100644 index 352202e..0000000 --- a/Prj-PHP/include/FineMapping.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FINEMAPPING_H -#define SWIFTPR_FINEMAPPING_H - -#include -#include - -#include -namespace pr{ - class FineMapping{ - public: - FineMapping(); - - - FineMapping(std::string prototxt,std::string caffemodel); - static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17); - cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding); - - - private: - cv::dnn::Net net; - - }; - - - - -} -#endif //SWIFTPR_FINEMAPPING_H diff --git a/Prj-PHP/include/Pipeline.h b/Prj-PHP/include/Pipeline.h deleted file mode 100644 index 4e82955..0000000 --- a/Prj-PHP/include/Pipeline.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// Created by 庾金科 on 22/10/2017. -// - -#ifndef SWIFTPR_PIPLINE_H -#define SWIFTPR_PIPLINE_H - -#include "PlateDetection.h" -#include "PlateSegmentation.h" -#include "CNNRecognizer.h" -#include "PlateInfo.h" -#include "FastDeskew.h" -#include "FineMapping.h" -#include "Recognizer.h" -#include "SegmentationFreeRecognizer.h" - -namespace pr{ - - const std::vector CH_PLATE_CODE{"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", - "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", - "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", - "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"}; - - - - const int SEGMENTATION_FREE_METHOD = 0; - const int SEGMENTATION_BASED_METHOD = 1; - - class PipelinePR{ - public: - GeneralRecognizer *generalRecognizer; - PlateDetection *plateDetection; - PlateSegmentation *plateSegmentation; - FineMapping *fineMapping; - SegmentationFreeRecognizer *segmentationFreeRecognizer; - - PipelinePR(std::string detector_filename, - std::string finemapping_prototxt,std::string finemapping_caffemodel, - std::string segmentation_prototxt,std::string segmentation_caffemodel, - std::string charRecognization_proto,std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel - ); - ~PipelinePR(); - - - - std::vector plateRes; - std::vector RunPiplineAsImage(cv::Mat plateImage,int method); - - - - - - - - }; - - -} -#endif //SWIFTPR_PIPLINE_H diff --git a/Prj-PHP/include/PlateDetection.h b/Prj-PHP/include/PlateDetection.h deleted file mode 100644 index 71ad9af..0000000 --- a/Prj-PHP/include/PlateDetection.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEDETECTION_H -#define SWIFTPR_PLATEDETECTION_H - -#include -#include -#include -namespace pr{ - class PlateDetection{ - public: - PlateDetection(std::string filename_cascade); - PlateDetection(); - void LoadModel(std::string filename_cascade); - void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800); -// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400); - - -// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage); - - - - private: - cv::CascadeClassifier cascade; - - - }; - -}// namespace pr - -#endif //SWIFTPR_PLATEDETECTION_H diff --git a/Prj-PHP/include/PlateInfo.h b/Prj-PHP/include/PlateInfo.h deleted file mode 100644 index f500bb5..0000000 --- a/Prj-PHP/include/PlateInfo.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEINFO_H -#define SWIFTPR_PLATEINFO_H -#include -namespace pr { - - typedef std::vector Character; - - enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; - enum CharType {CHINESE,LETTER,LETTER_NUMS,INVALID}; - - - class PlateInfo { - public: - std::vector> plateChars; - std::vector> plateCoding; - float confidence = 0; - PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - name = plateName; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) { - licensePlate = plateData; - ROI = plateRect; - } - PlateInfo() { - - } - - cv::Mat getPlateImage() { - return licensePlate; - } - - void setPlateImage(cv::Mat plateImage){ - licensePlate = plateImage; - } - - cv::Rect getPlateRect() { - return ROI; - } - - void setPlateRect(cv::Rect plateRect) { - ROI = plateRect; - } - cv::String getPlateName() { - return name; - - } - void setPlateName(cv::String plateName) { - name = plateName; - } - int getPlateType() { - return Type; - } - - void appendPlateChar(const std::pair &plateChar) - { - plateChars.push_back(plateChar); - } - - void appendPlateCoding(const std::pair &charProb){ - plateCoding.push_back(charProb); - } - - // cv::Mat getPlateChars(int id) { - // if(id mappingTable) { - std::string decode; - for(auto plate:plateCoding) { - float *prob = (float *)plate.second.data; - if(plate.first == CHINESE) { - - decode += mappingTable[std::max_element(prob,prob+31) - prob]; - confidence+=*std::max_element(prob,prob+31); - - -// std::cout<<*std::max_element(prob,prob+31)< -#include "PlateInfo.h" - -namespace pr{ - - - class PlateSegmentation{ - public: - const int PLATE_NORMAL = 6; - const int PLATE_NORMAL_GREEN = 7; - const int DEFAULT_WIDTH = 20; - PlateSegmentation(std::string phototxt,std::string caffemodel); - PlateSegmentation(){} - void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects); - - void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones); - void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair> &candidatePts); - void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects); - void ExtractRegions(PlateInfo &plateInfo,std::vector &rects); - cv::Mat classifyResponse(const cv::Mat &cropped); - private: - cv::dnn::Net net; - - -// RefineRegion() - - }; - -}//namespace pr - -#endif //SWIFTPR_PLATESEGMENTATION_H diff --git a/Prj-PHP/include/Recognizer.h b/Prj-PHP/include/Recognizer.h deleted file mode 100644 index 556e42e..0000000 --- a/Prj-PHP/include/Recognizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by 庾金科 on 20/10/2017. -// - - -#ifndef SWIFTPR_RECOGNIZER_H -#define SWIFTPR_RECOGNIZER_H - -#include "PlateInfo.h" -#include "opencv2/dnn.hpp" -namespace pr{ - typedef cv::Mat label; - class GeneralRecognizer{ - public: - virtual label recognizeCharacter(cv::Mat character) = 0; -// virtual cv::Mat SegmentationFreeForSinglePlate(cv::Mat plate) = 0; - void SegmentBasedSequenceRecognition(PlateInfo &plateinfo); - void SegmentationFreeSequenceRecognition(PlateInfo &plateInfo); - - }; - -} -#endif //SWIFTPR_RECOGNIZER_H diff --git a/Prj-PHP/include/SegmentationFreeRecognizer.h b/Prj-PHP/include/SegmentationFreeRecognizer.h deleted file mode 100644 index 583899e..0000000 --- a/Prj-PHP/include/SegmentationFreeRecognizer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// Created by 庾金科 on 28/11/2017. -// - -#ifndef SWIFTPR_SEGMENTATIONFREERECOGNIZER_H -#define SWIFTPR_SEGMENTATIONFREERECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - - - class SegmentationFreeRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - const int CHAR_LEN = 84; - - SegmentationFreeRecognizer(std::string prototxt,std::string caffemodel); - std::pair SegmentationFreeForSinglePlate(cv::Mat plate,std::vector mapping_table); - - - private: - cv::dnn::Net net; - - }; - -} -#endif //SWIFTPR_SEGMENTATIONFREERECOGNIZER_H diff --git a/Prj-PHP/include/niBlackThreshold.h b/Prj-PHP/include/niBlackThreshold.h deleted file mode 100644 index 5ad7e14..0000000 --- a/Prj-PHP/include/niBlackThreshold.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// Created by 庾金科 on 26/10/2017. -// - -#ifndef SWIFTPR_NIBLACKTHRESHOLD_H -#define SWIFTPR_NIBLACKTHRESHOLD_H - - -#include -using namespace cv; - -enum LocalBinarizationMethods{ - BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 . - BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 . - BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 . - BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 . -}; - - -void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue, - int type, int blockSize, double k, int binarizationMethod ) -{ - // Input grayscale image - Mat src = _src.getMat(); - CV_Assert(src.channels() == 1); - CV_Assert(blockSize % 2 == 1 && blockSize > 1); - if (binarizationMethod == BINARIZATION_SAUVOLA) { - CV_Assert(src.depth() == CV_8U); - } - type &= THRESH_MASK; - // Compute local threshold (T = mean + k * stddev) - // using mean and standard deviation in the neighborhood of each pixel - // (intermediate calculations are done with floating-point precision) - Mat test; - Mat thresh; - { - // note that: Var[X] = E[X^2] - E[X]^2 - Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum; - double srcMin, stddevMax; - boxFilter(src, mean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - variance = sqmean - mean.mul(mean); - sqrt(variance, stddev); - switch (binarizationMethod) - { - case BINARIZATION_NIBLACK: - thresh = mean + stddev * static_cast(k); - - break; - case BINARIZATION_SAUVOLA: - thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.)); - break; - case BINARIZATION_WOLF: - minMaxIdx(src, &srcMin,NULL); - minMaxIdx(stddev, NULL, &stddevMax); - thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax); - break; - case BINARIZATION_NICK: - sqrt(variance + sqmean, sqrtVarianceMeanSum); - thresh = mean + static_cast(k) * sqrtVarianceMeanSum; - break; - default: - CV_Error( CV_StsBadArg, "Unknown binarization method" ); - break; - } - thresh.convertTo(thresh, src.depth()); - - thresh.convertTo(test, src.depth()); -// -// cv::imshow("imagex",test); -// cv::waitKey(0); - - } - // Prepare output image - _dst.create(src.size(), src.type()); - Mat dst = _dst.getMat(); - CV_Assert(src.data != dst.data); // no inplace processing - // Apply thresholding: ( pixel > threshold ) ? foreground : background - Mat mask; - switch (type) - { - case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0 - case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval - compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE)); - dst.setTo(0); - dst.setTo(maxValue, mask); - break; - case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src - compare(src, thresh, mask, CMP_GT); - src.copyTo(dst); - thresh.copyTo(dst, mask); - break; - case THRESH_TOZERO: // dst = (src > thresh) ? src : 0 - case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src - compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE)); - dst.setTo(0); - src.copyTo(dst, mask); - break; - default: - CV_Error( CV_StsBadArg, "Unknown threshold type" ); - break; - } -} - -#endif //SWIFTPR_NIBLACKTHRESHOLD_H diff --git a/Prj-PHP/lpr/CNNRecognizer.cpp b/Prj-PHP/lpr/CNNRecognizer.cpp deleted file mode 100644 index ff0991e..0000000 --- a/Prj-PHP/lpr/CNNRecognizer.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by 庾金科 on 21/10/2017. -// - -#include "CNNRecognizer.h" - -namespace pr{ - CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){ - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - - label CNNRecognizer::recognizeCharacter(cv::Mat charImage){ - if(charImage.channels()== 3) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); - cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } -} \ No newline at end of file diff --git a/Prj-PHP/lpr/FastDeskew.cpp b/Prj-PHP/lpr/FastDeskew.cpp deleted file mode 100644 index 5da3644..0000000 --- a/Prj-PHP/lpr/FastDeskew.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by Jack Yu on 02/10/2017. -// - - - -#include "FastDeskew.h" - -namespace pr{ - const int ANGLE_MIN = 30 ; - const int ANGLE_MAX = 150 ; - const int PLATE_H = 36; - const int PLATE_W = 136; - - int angle(float x,float y) - { - return atan2(x,y)*180/3.1415; - } - - std::vector avgfilter(std::vector angle_list,int windowsSize) { - std::vector angle_list_filtered(angle_list.size() - windowsSize + 1); - for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) { - float avg = 0.00f; - for (int j = 0; j < windowsSize; j++) { - avg += angle_list[i + j]; - } - avg = avg / windowsSize; - angle_list_filtered[i] = avg; - } - - return angle_list_filtered; - } - - - void drawHist(std::vector seq){ - cv::Mat image(300,seq.size(),CV_8U); - image.setTo(0); - - for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) ); - cv::Size size(skewPlate.cols + extend_padding ,skewPlate.rows); - float interval = abs(sin((angle /180) * 3.14)* skewPlate.rows); - cv::Point2f pts1[4] = {cv::Point2f(0,0),cv::Point2f(0,size_o.height),cv::Point2f(size_o.width,0),cv::Point2f(size_o.width,size_o.height)}; - if(angle>0) { - cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height), - cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size); - } - else { - cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0), - cv::Point2f(size_o.width, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC); - } - return dst; - } - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){ - const int FILTER_WINDOWS_SIZE = 5; - std::vector angle_list(180); - memset(angle_list.data(),0,angle_list.size()*sizeof(int)); - cv::Mat bak; - skewImage.copyTo(bak); - if(skewImage.channels() == 3) - cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY); - if(skewImage.channels() == 1) - { - cv::Mat eigen; - cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5); - for( int j = 0; j < skewImage.rows; j+=blockSize ) - { for( int i = 0; i < skewImage.cols; i+=blockSize ) - { - float x2 = eigen.at(j, i)[4]; - float y2 = eigen.at(j, i)[5]; - int angle_cell = angle(x2,y2); - angle_list[(angle_cell + 180)%180]+=1.0; - } - } - } - std::vector filtered = avgfilter(angle_list,5); - int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2; - if(maxPos>ANGLE_MAX) - maxPos = (-maxPos+90+180)%180; - if(maxPos(maxPos),60.0f); - return deskewed; - } - - - -}//namespace pr diff --git a/Prj-PHP/lpr/FineMapping.cpp b/Prj-PHP/lpr/FineMapping.cpp deleted file mode 100644 index 2032b15..0000000 --- a/Prj-PHP/lpr/FineMapping.cpp +++ /dev/null @@ -1,170 +0,0 @@ -#include "FineMapping.h" -namespace pr{ - - const int FINEMAPPING_H = 60 ; - const int FINEMAPPING_W = 140; - const int PADDING_UP_DOWN = 30; - void drawRect(cv::Mat image,cv::Rect rect) - { - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); - } - - - FineMapping::FineMapping(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - - } - - cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding) - { - -// if(FinedVertical.channels()==1) -// cv::cvtColor(FinedVertical,FinedVertical,cv::COLOR_GRAY2BGR); - cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16), - cv::Scalar(0,0,0),false); - - net.setInput(inputBlob,"data"); - cv::Mat prob = net.forward(); - int front = static_cast(prob.at(0,0)*FinedVertical.cols); - int back = static_cast(prob.at(0,1)*FinedVertical.cols); - front -= leftPadding ; - if(front<0) front = 0; - back +=rightPadding; - if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1; - cv::Mat cropped = FinedVertical.colRange(front,back).clone(); - return cropped; - - - } - std::pair FitLineRansac(std::vector pts,int zeroadd = 0 ) - { - std::pair res; - if(pts.size()>2) - { - cv::Vec4f line; - cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01); - float vx = line[0]; - float vy = line[1]; - float x = line[2]; - float y = line[3]; - int lefty = static_cast((-x * vy / vx) + y); - int righty = static_cast(((136- x) * vy / vx) + y); - res.first = lefty+PADDING_UP_DOWN+zeroadd; - res.second = righty+PADDING_UP_DOWN+zeroadd; - return res; - } - res.first = zeroadd; - res.second = zeroadd; - return res; - } - - cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ - cv::Mat PreInputProposal; - cv::Mat proposal; - cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - if(InputProposal.channels() == 3) - cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); - else - PreInputProposal.copyTo(proposal); - // this will improve some sen - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); - float diff = static_cast(upper-lower); - diff/=static_cast(sliceNum-1); - cv::Mat binary_adaptive; - std::vector line_upper; - std::vector line_lower; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - if(contours_nums<41) - { - cv::bitwise_not(InputProposal,InputProposal); - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,5)); - cv::Mat bak; - cv::resize(InputProposal,bak,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - cv::erode(bak,bak,kernal); - if(InputProposal.channels() == 3) - cv::cvtColor(bak,proposal,cv::COLOR_BGR2GRAY); - else - proposal = bak; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - } - cv::Mat rgb; - cv::copyMakeBorder(PreInputProposal, rgb, PADDING_UP_DOWN, PADDING_UP_DOWN, 0, 0, cv::BORDER_REPLICATE); - std::pair A; - std::pair B; - A = FitLineRansac(line_upper, -1); - B = FitLineRansac(line_lower, 1); - int leftyB = A.first; - int rightyB = A.second; - int leftyA = B.first; - int rightyA = B.second; - int cols = rgb.cols; - int rows = rgb.rows; - std::vector corners(4); - corners[0] = cv::Point2f(cols - 1, rightyA); - corners[1] = cv::Point2f(0, leftyA); - corners[2] = cv::Point2f(cols - 1, rightyB); - corners[3] = cv::Point2f(0, leftyB); - std::vector corners_trans(4); - corners_trans[0] = cv::Point2f(136, 36); - corners_trans[1] = cv::Point2f(0, 36); - corners_trans[2] = cv::Point2f(136, 0); - corners_trans[3] = cv::Point2f(0, 0); - cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans); - cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); - cv::warpPerspective(rgb, quad, transform, quad.size()); - return quad; - } -} - - diff --git a/Prj-PHP/lpr/Pipeline.cpp b/Prj-PHP/lpr/Pipeline.cpp deleted file mode 100644 index f4eb8b2..0000000 --- a/Prj-PHP/lpr/Pipeline.cpp +++ /dev/null @@ -1,101 +0,0 @@ -// -// Created by 庾金科 on 23/10/2017. -// - -#include "Pipeline.h" - - -namespace pr { - - - - const int HorizontalPadding = 4; - PipelinePR::PipelinePR(std::string detector_filename, - std::string finemapping_prototxt, std::string finemapping_caffemodel, - std::string segmentation_prototxt, std::string segmentation_caffemodel, - std::string charRecognization_proto, std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel) { - plateDetection = new PlateDetection(detector_filename); - fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel); - plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel); - generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel); - segmentationFreeRecognizer = new SegmentationFreeRecognizer(segmentationfree_proto,segmentationfree_caffemodel); - - } - - PipelinePR::~PipelinePR() { - - delete plateDetection; - delete fineMapping; - delete plateSegmentation; - delete generalRecognizer; - delete segmentationFreeRecognizer; - - - } - - std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage,int method) { - std::vector results; - std::vector plates; - plateDetection->plateDetectionRough(plateImage,plates,36,700); - - for (pr::PlateInfo plateinfo:plates) { - - cv::Mat image_finemapping = plateinfo.getPlateImage(); - image_finemapping = fineMapping->FineMappingVertical(image_finemapping); - image_finemapping = pr::fastdeskew(image_finemapping, 5); - - - - //Segmentation-based - - if(method==SEGMENTATION_BASED_METHOD) - { - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, HorizontalPadding); - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); -// cv::imshow("image_finemapping",image_finemapping); -// cv::waitKey(0); - plateinfo.setPlateImage(image_finemapping); - std::vector rects; - - plateSegmentation->segmentPlatePipline(plateinfo, 1, rects); - plateSegmentation->ExtractRegions(plateinfo, rects); - cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE); - plateinfo.setPlateImage(image_finemapping); - generalRecognizer->SegmentBasedSequenceRecognition(plateinfo); - plateinfo.decodePlateNormal(pr::CH_PLATE_CODE); - - } - //Segmentation-free - else if(method==SEGMENTATION_FREE_METHOD) - { - - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 4, HorizontalPadding+3); - - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); -// cv::imwrite("./test.png",image_finemapping); -// cv::imshow("image_finemapping",image_finemapping); -// cv::waitKey(0); - plateinfo.setPlateImage(image_finemapping); -// std::vector rects; - - std::pair res = segmentationFreeRecognizer->SegmentationFreeForSinglePlate(plateinfo.getPlateImage(),pr::CH_PLATE_CODE); - plateinfo.confidence = res.second; - plateinfo.setPlateName(res.first); - } - - - - results.push_back(plateinfo); - } - -// for (auto str:results) { -// std::cout << str << std::endl; -// } - return results; - - }//namespace pr - - - -} \ No newline at end of file diff --git a/Prj-PHP/lpr/PlateDetection.cpp b/Prj-PHP/lpr/PlateDetection.cpp deleted file mode 100644 index cb3eeef..0000000 --- a/Prj-PHP/lpr/PlateDetection.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "PlateDetection.h" -#include "util.h" -namespace pr{ - PlateDetection::PlateDetection(std::string filename_cascade){ - cascade.load(filename_cascade); - - }; - void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ - cv::Mat processImage; - cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); - std::vector platesRegions; - cv::Size minSize(min_w,min_w/4); - cv::Size maxSize(max_w,max_w/4); - cascade.detectMultiScale( processImage, platesRegions, - 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); - for(auto plate:platesRegions) - { - int zeroadd_w = static_cast(plate.width*0.30); - int zeroadd_h = static_cast(plate.height*2); - int zeroadd_x = static_cast(plate.width*0.15); - int zeroadd_y = static_cast(plate.height*1); - plate.x-=zeroadd_x; - plate.y-=zeroadd_y; - plate.height += zeroadd_h; - plate.width += zeroadd_w; - cv::Mat plateImage = util::cropFromImage(InputImage,plate); - PlateInfo plateInfo(plateImage,plate); - plateInfos.push_back(plateInfo); - - } - } -}//namespace pr diff --git a/Prj-PHP/lpr/PlateSegmentation.cpp b/Prj-PHP/lpr/PlateSegmentation.cpp deleted file mode 100644 index 69e1aeb..0000000 --- a/Prj-PHP/lpr/PlateSegmentation.cpp +++ /dev/null @@ -1,404 +0,0 @@ -// -// Created by 庾金科 on 16/10/2017. -// - -#include "PlateSegmentation.h" -#include "niBlackThreshold.h" - - -//#define DEBUG -namespace pr{ - - PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){ - cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } - - void drawHist(float* seq,int size,const char* name){ - cv::Mat image(300,size,CV_8U); - image.setTo(0); - float* start =seq; - float* end = seq+size; - float l = *std::max_element(start,end); - for(int i = 0;i>1),rect.y + (rect.height>>1)); - int rebuildLeft = (rect.width>>1 )+ left; - int rebuildRight = (rect.width>>1 )+ right; - int rebuildTop = (rect.height>>1 )+ top; - int rebuildBottom = (rect.height>>1 )+ bottom; - return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize); - - } - - - - void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){ - int w = candidatePts[5] - candidatePts[4]; - int cols = plateImage.cols; - int rows = plateImage.rows; - for(int i = 0 ; i < candidatePts.size() ; i++) - { - int left = 0; - int right = 0 ; - - if(i == 0 ){ - left= candidatePts[i]; - right = left+w+padding; - } - else { - left = candidatePts[i] - padding; - right = left + w + padding * 2; - } - - computeSafeMargin(right,cols); - computeSafeMargin(left,cols); - cv::Rect roi(left,0,right - left,rows-1); - cv::Mat roiImage; - plateImage(roi).copyTo(roiImage); - - if (i>=1) - { - - cv::Mat roi_thres; -// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY); - - niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.27,BINARIZATION_NIBLACK); - - std::vector> contours; - cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE); - cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1); - - cv::Rect final_bdbox; - cv::Point final_center; - int final_dist = INT_MAX; - - - for(auto contour:contours) - { - cv::Rect bdbox = cv::boundingRect(contour); - cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1)); - int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x); - if(dist rows>>1) - { final_dist =dist; - final_center = center; - final_bdbox = bdbox; - } - } - - //rebuild box - if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10) - final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size()); - else { - if(i == candidatePts.size()-1) - final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size()); - else - final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size()); - - -// std::cout<0&&i+j+r> &candidatePts){ - int rows = respones.rows; - int cols = respones.cols; - - - - float *data = (float*)respones.data; - float *engNum_prob = data; - float *false_prob = data+cols; - float *ch_prob = data+cols*2; - - avgfilter(engNum_prob,cols,5); - avgfilter(false_prob,cols,5); -// avgfilter(ch_prob,cols,5); - std::vector candidate_pts(7); -#ifdef DEBUG - drawHist(engNum_prob,cols,"engNum_prob"); - drawHist(false_prob,cols,"false_prob"); - drawHist(ch_prob,cols,"ch_prob"); - cv::waitKey(0); -#endif - - - - - int cp_list[7]; - float loss_selected = -10; - - for(int start = 0 ; start < 20 ; start+=2) - for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){ - for(int interval = windowsWidth/2; interval < windowsWidth; interval++) - { - int cp1_ch = start; - int cp2_p0 = cp1_ch+ width; - int cp3_p1 = cp2_p0+ width + interval; - int cp4_p2 = cp3_p1 + width; - int cp5_p3 = cp4_p2 + width+1; - int cp6_p4 = cp5_p3 + width+2; - int cp7_p5= cp6_p4+ width+2; - - int md1 = (cp1_ch+cp2_p0)>>1; - int md2 = (cp2_p0+cp3_p1)>>1; - int md3 = (cp3_p1+cp4_p2)>>1; - int md4 = (cp4_p2+cp5_p3)>>1; - int md5 = (cp5_p3+cp6_p4)>>1; - int md6 = (cp6_p4+cp7_p5)>>1; - - - - - if(cp7_p5>=cols) - continue; -// float loss = ch_prob[cp1_ch]+ -// engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5] -// + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]); - float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]); - - if(loss>loss_selected) - { - loss_selected = loss; - cp_list[0]= cp1_ch; - cp_list[1]= cp2_p0; - cp_list[2]= cp3_p1; - cp_list[3]= cp4_p2; - cp_list[4]= cp5_p3; - cp_list[5]= cp6_p4; - cp_list[6]= cp7_p5; - } - } - } - candidate_pts[0] = cp_list[0]; - candidate_pts[1] = cp_list[1]; - candidate_pts[2] = cp_list[2]; - candidate_pts[3] = cp_list[3]; - candidate_pts[4] = cp_list[4]; - candidate_pts[5] = cp_list[5]; - candidate_pts[6] = cp_list[6]; - - candidatePts.first = loss_selected; - candidatePts.second = candidate_pts; - - }; - - - void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){ - - -// cv::resize(plateImage,plateImage,cv::Size(136,36)); - - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - int padding = plateImage.cols-136 ; -// int padding = 0 ; - int height = plateImage.rows - 1; - int width = plateImage.cols - 1 - padding; - for(int i = 0 ; i < width - windowsWidth +1 ; i +=stride) - { - cv::Rect roi(i,0,windowsWidth,height); - cv::Mat roiImage = plateImageGray(roi); - cv::Mat response = classifyResponse(roiImage); - respones.push_back(response); - } - - - - - respones = respones.t(); -// std::pair> images ; -// -// -// std::cout< &Char_rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); // get src image . - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - //do binarzation - // - std::pair> sections ; // segment points variables . - - cv::Mat respones; //three response of every sub region from origin image . - segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones); - templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections); - for(int i = 0; i < sections.second.size() ; i++) - { - sections.second[i]*=stride; - - } - -// std::cout< &rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); - for(int i = 0 ; i < rects.size() ; i++){ - cv::Mat charImage; - plateImage(rects[i]).copyTo(charImage); - if(charImage.channels()) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); -// cv::imshow("image",charImage); -// cv::waitKey(0); - cv::equalizeHist(charImage,charImage); -// - -// - - - std::pair char_instance; - if(i == 0 ){ - - char_instance.first = CHINESE; - - - } else if(i == 1){ - char_instance.first = LETTER; - } - else{ - char_instance.first = LETTER_NUMS; - } - char_instance.second = charImage; - plateInfo.appendPlateChar(char_instance); - - } - - } - -}//namespace pr diff --git a/Prj-PHP/lpr/Recognizer.cpp b/Prj-PHP/lpr/Recognizer.cpp deleted file mode 100644 index 3bfafef..0000000 --- a/Prj-PHP/lpr/Recognizer.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by Jack Yu on 22/10/2017. -// - -#include "Recognizer.h" - -namespace pr{ - void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){ - for(auto char_instance:plateinfo.plateChars) - { - std::pair res; - if(char_instance.second.rows*char_instance.second.cols>40) { - label code_table = recognizeCharacter(char_instance.second); - res.first = char_instance.first; - code_table.copyTo(res.second); - plateinfo.appendPlateCoding(res); - } else{ - res.first = INVALID; - plateinfo.appendPlateCoding(res); - } - } - } -} diff --git a/Prj-PHP/lpr/SegmentationFreeRecognizer.cpp b/Prj-PHP/lpr/SegmentationFreeRecognizer.cpp deleted file mode 100644 index ec0f7e9..0000000 --- a/Prj-PHP/lpr/SegmentationFreeRecognizer.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// Created by Jack Yu on 28/11/2017. -// -#include "SegmentationFreeRecognizer.h" - -namespace pr { - SegmentationFreeRecognizer::SegmentationFreeRecognizer(std::string prototxt, std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - inline int judgeCharRange(int id) - {return id<31 || id>63; - } - std::pair decodeResults(cv::Mat code_table,std::vector mapping_table,float thres) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - std::vector> seq_decode_res; - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - - float sum_confidence = 0; - int plate_lenghth = 0 ; - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - { - float *fstart = ((float *) (code_table.data) + i * labellength ); - float confidence = *(fstart+seq[i]); - std::pair pair_(seq[i],confidence); - seq_decode_res.push_back(pair_); - } - } - int i = 0; - if (seq_decode_res.size()>1 && judgeCharRange(seq_decode_res[0].first) && judgeCharRange(seq_decode_res[1].first)) - { - i=2; - int c = seq_decode_res[0].second res; - res.second = sum_confidence/plate_lenghth; - res.first = name; - return res; - - } - std::string decodeResults(cv::Mat code_table,std::vector mapping_table) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - name+=mapping_table[seq[i]]; - } - return name; - } - std::pair SegmentationFreeRecognizer::SegmentationFreeForSinglePlate(cv::Mat Image,std::vector mapping_table) { - cv::transpose(Image,Image); - cv::Mat inputBlob = cv::dnn::blobFromImage(Image, 1 / 255.0, cv::Size(40,160)); - net.setInput(inputBlob, "data"); - cv::Mat char_prob_mat = net.forward(); - return decodeResults(char_prob_mat,mapping_table,0.00); - } -} diff --git a/Prj-PHP/lpr/util.h b/Prj-PHP/lpr/util.h deleted file mode 100644 index 3f9f52c..0000000 --- a/Prj-PHP/lpr/util.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// Created by Jack Yu on 04/04/2017. -// - -#include -namespace util{ - template void swap ( T& a, T& b ) - { - T c(a); a=b; b=c; - } - template T min(T& a,T& b ) - { - return a>b?b:a; - } - - cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ - int w = image.cols-1; - int h = image.rows-1; - rect.x = std::max(rect.x,0); - rect.y = std::max(rect.y,0); - rect.height = std::min(rect.height,h-rect.y); - rect.width = std::min(rect.width,w-rect.x); - cv::Mat temp(rect.size(), image.type()); - cv::Mat cropped; - temp = image(rect); - temp.copyTo(cropped); - return cropped; - - } - - cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect) - { - cv::Mat M, rotated, cropped; - float angle = rect.angle; - cv::Size rect_size(rect.size.width,rect.size.height); - if (rect.angle < -45.) { - angle += 90.0; - swap(rect_size.width, rect_size.height); - } - M = cv::getRotationMatrix2D(rect.center, angle, 1.0); - cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC); - cv::getRectSubPix(rotated, rect_size, rect.center, cropped); - return cropped; - } - - cv::Mat calcHist(const cv::Mat &image) - { - cv::Mat hsv; - std::vector hsv_planes; - cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV); - cv::split(hsv,hsv_planes); - cv::Mat hist; - int histSize = 256; - float range[] = {0,255}; - const float* histRange = {range}; - cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true); - return hist; - } - - float computeSimilir(const cv::Mat &A,const cv::Mat &B) - { - cv::Mat histA,histB; - histA = calcHist(A); - histB = calcHist(B); - return cv::compareHist(histA,histB,CV_COMP_CORREL); - } -}//namespace util diff --git a/Prj-PHP/main.cpp b/Prj-PHP/main.cpp deleted file mode 100644 index 43e3378..0000000 --- a/Prj-PHP/main.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// -// Created by Coleflowers on 20/06/2018. -// Updated by Justid on 02/07/2018. -// -#include -#include - -#include "PlateSegmentation.h" -#include "CNNRecognizer.h" -#include "Recognizer.h" -#include "PlateDetection.h" -#include "FastDeskew.h" -#include "FineMapping.h" -#include "Pipeline.h" - -/* 关闭原opencv报错输出 */ -int handleError( int status, const char* func_name, - const char* err_msg, const char* file_name, - int line, void* userdata ) -{ - //Do nothing -- will suppress console output - return 0; //Return value is not used -} - -/** - * 车牌图片识别 - * @params imgpath 图片的绝对路径 - * @params modelpath 识别模型所在文件夹路径 - * @params confidence 可信度要求,可选参数,默认值0.75 - * @return 车牌号 图片路径的图片不存在的话 返回空值 - */ -cv::String scan(std::string imgpath, std::string modelpath, double confidence){ - cv::redirectError(handleError); - try { - pr::PipelinePR prc(modelpath+"/cascade.xml", - modelpath+"/HorizonalFinemapping.prototxt",modelpath+"/HorizonalFinemapping.caffemodel", - modelpath+"/Segmentation.prototxt",modelpath+"/Segmentation.caffemodel", - modelpath+"/CharacterRecognization.prototxt",modelpath+"/CharacterRecognization.caffemodel", - modelpath+"/SegmenationFree-Inception.prototxt",modelpath+"/SegmenationFree-Inception.caffemodel" - ); - cv::Mat image = cv::imread(imgpath); - std::vector res = prc.RunPiplineAsImage(image,pr::SEGMENTATION_FREE_METHOD); - - cv::String platenum = ""; - for(auto st:res) { - if(st.confidence>confidence) { - platenum = st.getPlateName(); - break; - } - } - - return platenum; - } - catch( cv::Exception& e ) - { - const char* err_msg = e.what(); - throw Php::Exception(err_msg); - } - -} - - -Php::Value funcWrapper(Php::Parameters ¶ms) { - // 图片路径 - std::string img = params[0]; - // 模型路径(文件夹) - std::string model = params[1]; - // 可信度要求 - double confidence = 0.75; - - if (params.size() == 3){ - confidence = (double)params[2]; - } - - cv::String res = scan(img, model, confidence); - return res.c_str(); -} - - -/** - * tell the compiler that the get_module is a pure C function - */ -extern "C" { - - /** - * Function that is called by PHP right after the PHP process - * has started, and that returns an address of an internal PHP - * strucure with all the details and features of your extension - * - * @return void* a pointer to an address that is understood by PHP - */ - PHPCPP_EXPORT void *get_module() { - // static(!) Php::Extension object that should stay in memory - // for the entire duration of the process (that's why it's static) - static Php::Extension extension("platescan", "1.0"); - - // @todo add your own functions, classes, namespaces to the extension - extension.add("platescan", { - Php::ByVal("imgpath", Php::Type::String, true), - Php::ByVal("modelpath", Php::Type::String, true), - Php::ByVal("confidence", Php::Type::Float, false) - }); - - // return the extension - return extension; - } -} diff --git a/Prj-PHP/platescan.ini b/Prj-PHP/platescan.ini deleted file mode 100644 index aca617e..0000000 --- a/Prj-PHP/platescan.ini +++ /dev/null @@ -1,2 +0,0 @@ -extension=platescan.so - diff --git a/Prj-PHP/tests/demo.png b/Prj-PHP/tests/demo.png deleted file mode 100644 index e1dd608..0000000 Binary files a/Prj-PHP/tests/demo.png and /dev/null differ diff --git a/Prj-PHP/tests/model/README.md b/Prj-PHP/tests/model/README.md deleted file mode 100644 index 326c563..0000000 --- a/Prj-PHP/tests/model/README.md +++ /dev/null @@ -1,21 +0,0 @@ -将/Prj-Linux/lpr/model目录下的 - -cascade.xml - -CharacterRecognization.caffemodel - -CharacterRecognization.prototxt - -HorizonalFinemapping.caffemodel - -HorizonalFinemapping.prototxt - -SegmenationFree-Inception.caffemodel - -SegmenationFree-Inception.prototxt - -Segmentation.caffemodel - -Segmentation.prototxt - -放置在该目录 \ No newline at end of file diff --git a/Prj-PHP/tests/platescan.php b/Prj-PHP/tests/platescan.php deleted file mode 100644 index 7206faa..0000000 --- a/Prj-PHP/tests/platescan.php +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/Prj-Win/lpr/include/Pipeline.h b/Prj-Win/lpr/include/Pipeline.h index 22d0f7d..6c464ee 100644 --- a/Prj-Win/lpr/include/Pipeline.h +++ b/Prj-Win/lpr/include/Pipeline.h @@ -22,18 +22,18 @@ namespace pr PlateDetection *platedetection; FineTune *finetune; PlateRecognation *platerecognation; - //PlateColorClass *platecolorclass; + DBDetection *dbdetection; PipelinePR(std::string detect_prototxt, std::string detect_caffemodel, std::string finetune_prototxt, std::string finetune_caffemodel, - std::string platerec_prototxt, std::string platerec_caffemodel/*, - std::string platecolor_mnn*/); + std::string platerec_prototxt, std::string platerec_caffemodel, + std::string dbstring); ~PipelinePR(); std::vector plateRes; - std::vector RunPiplineAsImage(cv::Mat srcImage); + std::vector RunPiplineAsImage(cv::Mat srcImage,int IsDB); }; } diff --git a/Prj-Win/lpr/include/Platedetect.h b/Prj-Win/lpr/include/Platedetect.h index 51de7ac..2894393 100644 --- a/Prj-Win/lpr/include/Platedetect.h +++ b/Prj-Win/lpr/include/Platedetect.h @@ -12,5 +12,12 @@ namespace pr private: cv::dnn::Net ssdNet; }; + class DBDetection{ + public: + DBDetection(std::string cascadestring); + void DBDetect(cv::Mat inputImg,std::vector &plateInfos,int min_w,int max_w); + private: + cv::CascadeClassifier dbcascade; + }; }//namespace pr #endif // !_PLATEDETECT_H_ diff --git a/Prj-Win/lpr/model/cascade_double.xml b/Prj-Win/lpr/model/cascade_double.xml new file mode 100644 index 0000000..aacc045 --- /dev/null +++ b/Prj-Win/lpr/model/cascade_double.xml @@ -0,0 +1,504 @@ + + + + BOOST + LBP + 24 + 44 + + GAB + 9.9599999189376831e-01 + 5.0000000000000000e-01 + 9.4999999999999996e-01 + 1 + 28 + + 256 + 1 + 11 + + + <_> + 3 + -1.1049392223358154e+00 + + <_> + + 0 -1 17 -3334 -513 -573452048 -1057 -1 -267777 -1 -1025 + + -9.4297146797180176e-01 7.8370976448059082e-01 + <_> + + 0 -1 36 -262198 -12062208 -169869377 -674954752 -7602177 + -16781941 -67109937 -1073 + + -8.8537323474884033e-01 7.2940820455551147e-01 + <_> + + 0 -1 9 1431697887 1431687647 -545270049 -262145 1413609965 + 1364250775 -1065985 -67108865 + + -8.3008646965026855e-01 7.2340542078018188e-01 + + <_> + 3 + -1.0404651165008545e+00 + + <_> + + 0 -1 19 -524289 -136314913 1360393719 -2097153 -134219777 + -4194817 274068735 -1 + + -8.5476654767990112e-01 8.4671354293823242e-01 + <_> + + 0 -1 29 -16515073 -150929664 -1 -8650881 -8388609 -11403265 + -1 -2097153 + + -7.7620923519134521e-01 7.8929436206817627e-01 + <_> + + 0 -1 1 2013233135 2147450879 -45760593 2147474943 2146959359 + 2104754047 2080374783 2147417087 + + -8.9144438505172729e-01 5.9051072597503662e-01 + + <_> + 3 + -1.1397969722747803e+00 + + <_> + + 0 -1 15 -1041 -8225 -546308113 -1 -33554433 -394753 -2359297 + -1 + + -8.5447394847869873e-01 7.4388968944549561e-01 + <_> + + 0 -1 27 -1053970 -17 -35651601 -1048625 -345331574 -5247030 + -74453009 -1 + + -8.6756819486618042e-01 6.3549250364303589e-01 + <_> + + 0 -1 43 -1050897 -1025 -71304209 -134219793 -1033 -559948801 + -67110929 1996976642 + + -8.6068797111511230e-01 5.8224511146545410e-01 + + <_> + 3 + -9.8026764392852783e-01 + + <_> + + 0 -1 12 -1077953601 -1 -1073758273 -16387 -147457 -1 + -1073758209 -1 + + -8.2477015256881714e-01 7.1671992540359497e-01 + <_> + + 0 -1 47 -4345 -989855745 -271062524 -319815697 -134742265 + 1423962843 -134218173 -1 + + -7.4230498075485229e-01 7.3275351524353027e-01 + <_> + + 0 -1 37 -22347778 -3477554 -33554433 -2066 -9438209 -65537 + -1 -1048577 + + -8.3125960826873779e-01 5.8680748939514160e-01 + + <_> + 5 + -1.2986627817153931e+00 + + <_> + + 0 -1 4 -8388737 -262273 -10485761 -137 -8388745 -129 -262273 + -1 + + -8.7727063894271851e-01 6.1173391342163086e-01 + <_> + + 0 -1 20 -1 -10241 1431688703 -1 -1 -1042 1163263999 + 2002780159 + + -8.2954949140548706e-01 5.9151750802993774e-01 + <_> + + 0 -1 3 -44786212 -33726467 -268509185 -17409 -657175332 + -2270500 -1198986500 -1148450934 + + -7.6026451587677002e-01 5.8319890499114990e-01 + <_> + + 0 -1 28 -15794258 -78643282 -821817846 -552742962 -653344834 + -91750417 -1622147105 -7340065 + + -7.6077878475189209e-01 5.5891805887222290e-01 + <_> + + 0 -1 30 1427232247 357954767 1971310559 2012602108 + -202375953 -44049 -4456789 -18 + + -6.7643576860427856e-01 6.0950380563735962e-01 + + <_> + 5 + -1.3029408454895020e+00 + + <_> + + 0 -1 39 -134218753 -1 -1 -202899593 -1 -4194305 -67108865 + -527497 + + -7.5626724958419800e-01 7.5137990713119507e-01 + <_> + + 0 -1 6 -8388737 -8388737 -1 -1 -8421505 -129 -8388737 -1 + + -7.7118909358978271e-01 6.3570922613143921e-01 + <_> + + 0 -1 45 -825233914 -654313761 -589830738 -35651585 -16778427 + -83886281 -151000316 -1056964737 + + -7.2490030527114868e-01 5.7298541069030762e-01 + <_> + + 0 -1 18 2002780159 2136866815 -67109377 -19969 2147344383 + 2101472763 2108680957 2147450607 + + -8.5162043571472168e-01 4.5608481764793396e-01 + <_> + + 0 -1 16 -7472470 -3505654 -29841 -65536 -1166086177 + -67109121 -288690177 -32085 + + -7.9073858261108398e-01 5.0315058231353760e-01 + + <_> + 5 + -1.3164747953414917e+00 + + <_> + + 0 -1 41 -1 -1025 -1 -2228225 -8432299 -571189899 -139265 -1 + + -7.8127676248550415e-01 6.5899217128753662e-01 + <_> + + 0 -1 2 -34275329 -198665 -2113 -12289 -573243396 -590292744 + -1049857 -277 + + -7.3563832044601440e-01 6.3897633552551270e-01 + <_> + + 0 -1 14 -1565523969 -1347420193 -277086209 -1342177313 + -134217729 -263169 -285212673 -1459618305 + + -8.1234931945800781e-01 4.9628043174743652e-01 + <_> + + 0 -1 33 -1079312417 -83826176 -33686017 -570426508 + -1627464961 -5377 -277761 -17 + + -7.0463657379150391e-01 5.2093976736068726e-01 + <_> + + 0 -1 25 -66 -4116 1607291240 -5298489 -9847160 2011036101 + 357852669 1476259327 + + -8.2066470384597778e-01 4.9184983968734741e-01 + + <_> + 5 + -1.1098697185516357e+00 + + <_> + + 0 -1 44 -134217949 -167773185 -404750589 -1 -134744525 + -1846018321 -2097357 -1 + + -7.6240319013595581e-01 6.8946647644042969e-01 + <_> + + 0 -1 7 -12633797 -524321 1058880319 -129 -50790401 -262405 + -1075052545 -5 + + -7.1431988477706909e-01 6.2125796079635620e-01 + <_> + + 0 -1 24 -144703501 -10486797 -134217729 -136317057 + -271646721 -174069583 -168952849 -1072726014 + + -6.5710061788558960e-01 6.1531358957290649e-01 + <_> + + 0 -1 38 -134218774 -149487872 -33554433 -537927872 -69209089 + -145228029 -2360849 -524449 + + -7.3570650815963745e-01 4.9681660532951355e-01 + <_> + + 0 -1 5 -136380419 -8390657 -2228225 -196707 1565810157 + 2147048386 -268702725 2080373485 + + -7.2735637426376343e-01 5.2713739871978760e-01 + + <_> + 5 + -2.0547957420349121e+00 + + <_> + + 0 -1 13 -11141121 -44695553 -1 -11144193 -9217 -321 + -335811841 -4216577 + + -7.3916637897491455e-01 6.7595410346984863e-01 + <_> + + 0 -1 26 -369104657 -4194321 -1061429013 -67114529 -251662085 + -138412033 3334395 -234882305 + + -6.9217604398727417e-01 5.4744583368301392e-01 + <_> + + 0 -1 11 1373590751 1373632511 -262169 -33859589 -572533249 + -572524625 -135266305 -32833 + + -7.1100026369094849e-01 5.3469187021255493e-01 + <_> + + 0 -1 23 -3148053 -1054802 -1 -5 -7340125 -3689942 -74448917 + -687087094 + + -5.6383520364761353e-01 6.3540917634963989e-01 + <_> + + 0 -1 8 245501180 -1615197700 -46219265 -1075925028 + -307580929 -373826 -1076187139 -1343746644 + + -5.8823972940444946e-01 6.1824375391006470e-01 + + <_> + 6 + -1.6300759315490723e+00 + + <_> + + 0 -1 42 -1 -4129 -8193 -135795737 -1 -6417 -1 -137887866 + + -7.7990013360977173e-01 6.1912822723388672e-01 + <_> + + 0 -1 31 -12845643 -1934361103 -581837313 -1644167171 + -1175537153 -1392516625 -1681655299 -1358963807 + + -7.1357387304306030e-01 5.6909996271133423e-01 + <_> + + 0 -1 34 288428543 -34262659 1976906747 -42117703 858797567 + -4965441 2008290292 -1146080848 + + -6.7784935235977173e-01 5.4983222484588623e-01 + <_> + + 0 -1 22 -25297611 -100663553 -9830515 -570556417 -53741251 + -36570627 -67437302 -12583252 + + -6.3567954301834106e-01 5.9044981002807617e-01 + <_> + + 0 -1 46 -403706354 82769839 -446830048 -989858098 -8921600 + 1087893408 -100663520 -134217729 + + -7.0569902658462524e-01 5.4874616861343384e-01 + <_> + + 0 -1 0 -965744853 -420544541 -8392718 -1569784218 -192940313 + 1744830335 -9 -1003227661 + + -5.7118493318557739e-01 6.4167028665542603e-01 + + <_> + 5 + -2.1370947360992432e+00 + + <_> + + 0 -1 40 -673196033 -2144789 287251423 -538968593 -1399068449 + -73535505 -13631489 -526857 + + -7.2344118356704712e-01 6.8316829204559326e-01 + <_> + + 0 -1 32 -214216429 -2112561 -445819937 1964790555 -17185861 + -303183720 -357832229 -3148837 + + -7.1031409502029419e-01 5.4083776473999023e-01 + <_> + + 0 -1 10 -9043969 -36118539 2147450623 -4194305 -2246657 + -102721404 1073685759 -1366622208 + + -5.8772116899490356e-01 6.4753490686416626e-01 + <_> + + 0 -1 35 1167938037 16237049 -1120535169 1029034397 9567155 + -2001626128 -1146622977 -1142248004 + + -6.4004391431808472e-01 5.6415843963623047e-01 + <_> + + 0 -1 21 -70126622 -134227061 -536243648 188013035 + -1234960385 1416625375 -486868997 62913535 + + -8.8218396902084351e-01 4.1129270195960999e-01 + + <_> + + 0 1 1 6 + <_> + + 1 0 8 3 + <_> + + 1 4 8 3 + <_> + + 1 6 13 2 + <_> + + 2 1 5 2 + <_> + + 2 4 9 2 + <_> + + 3 2 5 2 + <_> + + 4 0 11 3 + <_> + + 4 21 9 1 + <_> + + 7 1 5 5 + <_> + + 7 7 6 2 + <_> + + 10 0 3 5 + <_> + + 11 1 9 3 + <_> + + 11 2 11 4 + <_> + + 12 0 4 3 + <_> + + 14 2 5 2 + <_> + + 14 6 3 3 + <_> + + 15 1 5 4 + <_> + + 16 0 9 4 + <_> + + 17 3 4 5 + <_> + + 17 6 4 3 + <_> + + 18 12 3 2 + <_> + + 19 0 3 3 + <_> + + 19 3 2 6 + <_> + + 19 4 2 4 + <_> + + 19 12 2 4 + <_> + + 21 2 2 5 + <_> + + 22 5 3 4 + <_> + + 22 14 3 3 + <_> + + 24 1 6 5 + <_> + + 25 3 4 5 + <_> + + 25 6 6 1 + <_> + + 26 1 2 5 + <_> + + 26 3 5 4 + <_> + + 26 21 6 1 + <_> + + 27 1 5 1 + <_> + + 29 3 4 6 + <_> + + 30 0 4 5 + <_> + + 30 2 3 7 + <_> + + 34 1 3 7 + <_> + + 34 8 3 2 + <_> + + 34 15 3 3 + <_> + + 35 3 2 5 + <_> + + 35 5 2 5 + <_> + + 39 12 1 3 + <_> + + 41 0 1 7 + <_> + + 41 10 1 4 + <_> + + 41 11 1 3 + diff --git a/Prj-Win/lpr/src/Pipeline.cpp b/Prj-Win/lpr/src/Pipeline.cpp index acfe1c4..b965c30 100644 --- a/Prj-Win/lpr/src/Pipeline.cpp +++ b/Prj-Win/lpr/src/Pipeline.cpp @@ -3,35 +3,68 @@ namespace pr { PipelinePR::PipelinePR(std::string detect_prototxt, std::string detect_caffemodel, std::string finetune_prototxt, std::string finetune_caffemodel, - std::string platerec_prototxt, std::string platerec_caffemodel/*, - std::string platecolor_color*/) + std::string platerec_prototxt, std::string platerec_caffemodel, + std::string dbstring) { platedetection = new PlateDetection(detect_prototxt, detect_caffemodel); finetune = new FineTune(finetune_prototxt, finetune_caffemodel); platerecognation = new PlateRecognation(platerec_prototxt, platerec_caffemodel); - //platecolorclass = new PlateColorClass(platecolor_color); + dbdetection = new DBDetection(dbstring); } PipelinePR::~PipelinePR() { delete platedetection; delete finetune; delete platerecognation; - //delete platecolorclass; + delete dbdetection; } - std::vector PipelinePR::RunPiplineAsImage(cv::Mat plateimg) + cv::Mat DBcropFromImage(const cv::Mat &image){ + cv::Mat cropped; + image.copyTo(cropped); + int cropped_w = cropped.cols; + int cropped_h = cropped.rows; + cv::Rect up,down; + up.y = cropped_h*0.05;up.x = cropped_w*0.2;up.height = cropped_h*0.35;up.width = cropped_w*0.55; + down.y = cropped_h*0.4;down.x = cropped_w*0.05;down.height = cropped_h*0.6;down.width = cropped_w*0.95; + cv::Mat cropUp,cropDown; + cropped(up).copyTo(cropUp); + cropped(down).copyTo(cropDown); + cv::resize(cropUp,cropUp,cv::Size(64,40)); + cv::resize(cropDown,cropDown,cv::Size(96,40)); + cv::Mat crop = cv::Mat(40,160,CV_8UC3); + cropUp.copyTo(crop(cv::Rect(0,0,64,40))); + cropDown.copyTo(crop(cv::Rect(64,0,96,40))); + return crop; + + } + std::vector PipelinePR::RunPiplineAsImage(cv::Mat plateimg,int IsDB) { std::vector plates; std::vector plateres; - - platedetection->Detectssd(plateimg, plates); + if(IsDB==1) + { + dbdetection->DBDetect(plateimg,plates,30,1280); + } + else + { + platedetection->Detectssd(plateimg, plates); + } for (pr::PlateInfo plateinfo : plates) { cv::Mat image = plateinfo.getPlateImage(); cv::Mat CropImg; - finetune->Finetune(image, CropImg); - platerecognation->segmentation_free_recognation(CropImg, plateinfo); - //platecolorclass->plateColor(CropImg, plateinfo); + + if(IsDB==1) + { + CropImg = DBcropFromImage(image); + platerecognation->segmentation_free_recognation(CropImg, plateinfo); + } + else + { + finetune->Finetune(image, CropImg); + platerecognation->segmentation_free_recognation(CropImg, plateinfo); + } plateres.push_back(plateinfo); } return plateres; } -} \ No newline at end of file +} diff --git a/Prj-Win/lpr/src/PlateDetection.cpp b/Prj-Win/lpr/src/PlateDetection.cpp index 2b71e8b..54b8b3b 100644 --- a/Prj-Win/lpr/src/PlateDetection.cpp +++ b/Prj-Win/lpr/src/PlateDetection.cpp @@ -8,6 +8,10 @@ namespace pr { { ssdNet = cv::dnn::readNetFromCaffe(ssd_prototxt, ssd_caffemodel); } + DBDetection::DBDetection(std::string cascadestring) + { + dbcascade.load(cascadestring); + } void PlateDetection::Detectssd(cv::Mat img, std::vector &plateInfos) { int cols = img.cols; @@ -57,4 +61,43 @@ namespace pr { } } } + cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ + int w = image.cols-1; + int h = image.rows-1; + rect.x = std::max(rect.x,0); + rect.y = std::max(rect.y,0); + rect.height = std::min(rect.height,h-rect.y); + rect.width = std::min(rect.width,w-rect.x); + cv::Mat temp(rect.size(), image.type()); + cv::Mat cropped; + temp = image(rect); + temp.copyTo(cropped); + return cropped; + } + void DBDetection::DBDetect(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w) + { + cv::Mat processImage; + cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); + std::vector platesRegions; + cv::Size minSize(min_w,min_w/4); + cv::Size maxSize(max_w,max_w/4); + if (&processImage == NULL) + return; + dbcascade.detectMultiScale( processImage, platesRegions, + 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); + for(auto plate:platesRegions) + { + int zeroadd_w = static_cast(plate.width*0.28); + int zeroadd_h = static_cast(plate.height*0.35); + int zeroadd_x = static_cast(plate.width*0.14); + int zeroadd_y = static_cast(plate.height*0.15); + plate.x-=zeroadd_x; + plate.y-=zeroadd_y; + plate.height += zeroadd_h; + plate.width += zeroadd_w; + cv::Mat plateImage = cropFromImage(InputImage,plate); + PlateInfo plateInfo(plateImage,plate); + plateInfos.push_back(plateInfo); + } + } } \ No newline at end of file diff --git a/Prj-Win/lpr/tests/testPipeLine.cpp b/Prj-Win/lpr/tests/testPipeLine.cpp index 7c9217f..1dcfe03 100644 --- a/Prj-Win/lpr/tests/testPipeLine.cpp +++ b/Prj-Win/lpr/tests/testPipeLine.cpp @@ -4,9 +4,10 @@ void TEST_PIPELINE() { pr::PipelinePR prc("../lpr\\model\\mininet_ssd_v1.prototxt", "../lpr\\model\\mininet_ssd_v1.caffemodel", "../lpr\\model\\refinenet.prototxt", "../lpr\\model\\refinenet.caffemodel", - "../lpr\\model\\SegmenationFree-Inception.prototxt", "../lpr\\model\\SegmenationFree-Inception.caffemodel"); + "../lpr\\model\\SegmenationFree-Inception.prototxt", "../lpr\\model\\SegmenationFree-Inception.caffemodel", + "../lpr\\model\\cascade_double.xml"); cv::Mat img = cv::imread("../lpr\\res\\test.jpg"); - std::vector res = prc.RunPiplineAsImage(img); + std::vector res = prc.RunPiplineAsImage(img,0); for (auto st : res) { if (st.confidence > 0.75) { std::cout << st.getPlateName() << " " << st.confidence << std::endl; @@ -16,12 +17,12 @@ void TEST_PIPELINE() } } - cv::imshow("image", img); - cv::waitKey(0); + //cv::imshow("image", img); + //cv::waitKey(0); } int main() { TEST_PIPELINE(); return 0; -} \ No newline at end of file +} diff --git a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png b/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png deleted file mode 100755 index 4f5befc..0000000 Binary files a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png and /dev/null differ diff --git a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png b/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png deleted file mode 100755 index c6028ea..0000000 Binary files a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png and /dev/null differ diff --git a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png b/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png deleted file mode 100755 index b3fa038..0000000 Binary files a/Prj-iOS/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png and /dev/null differ diff --git a/Prj-iOS/Podfile b/Prj-iOS/Podfile deleted file mode 100755 index 00459e4..0000000 --- a/Prj-iOS/Podfile +++ /dev/null @@ -1,8 +0,0 @@ -platform :ios, '10.1' - -target "lpr" do - -pod 'OpenCV', '~> 3.4.2' -pod 'Masonry' - -end diff --git a/Prj-iOS/Podfile.lock b/Prj-iOS/Podfile.lock deleted file mode 100755 index e4511f2..0000000 --- a/Prj-iOS/Podfile.lock +++ /dev/null @@ -1,20 +0,0 @@ -PODS: - - Masonry (1.1.0) - - OpenCV (3.4.2) - -DEPENDENCIES: - - Masonry - - OpenCV (~> 3.4.2) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - Masonry - - OpenCV - -SPEC CHECKSUMS: - Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 - OpenCV: 452909747854c92e0f59670961ed5131f5286cb5 - -PODFILE CHECKSUM: 94db02cda76a5ac6371a03e6e2ca4e9035fc0da6 - -COCOAPODS: 1.5.3 diff --git a/Prj-iOS/README.md b/Prj-iOS/README.md deleted file mode 100755 index 404c617..0000000 --- a/Prj-iOS/README.md +++ /dev/null @@ -1,4 +0,0 @@ - -Depency Library: -- Masonry, 1.1.0 -- OpenCV, 3.4.2 diff --git a/Prj-iOS/Resource/README.md b/Prj-iOS/Resource/README.md deleted file mode 100755 index 2c524eb..0000000 --- a/Prj-iOS/Resource/README.md +++ /dev/null @@ -1,17 +0,0 @@ -将/Prj-Linux/lpr/model目录下的 - -cascade.xml - -CharacterRecognization.caffemodel - -CharacterRecognization.prototxt - -HorizonalFinemapping.caffemodel - -HorizonalFinemapping.prototxt - -Segmentation.caffemodel - -Segmentation.prototxt - -放置在该目录 \ No newline at end of file diff --git a/Prj-iOS/lpr.xcodeproj/project.pbxproj b/Prj-iOS/lpr.xcodeproj/project.pbxproj deleted file mode 100755 index e9f6167..0000000 --- a/Prj-iOS/lpr.xcodeproj/project.pbxproj +++ /dev/null @@ -1,530 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDD02182DD9300B162D4 /* AppDelegate.m */; }; - 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDD82182DD9400B162D4 /* Assets.xcassets */; }; - 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */; }; - 34ECFDDF2182DD9400B162D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDDE2182DD9400B162D4 /* main.m */; }; - 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */; }; - 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */; }; - 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */; }; - 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */; }; - 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE112182DEF500B162D4 /* Recognizer.cpp */; }; - 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE122182DEF500B162D4 /* FineMapping.cpp */; }; - 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */; }; - 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */; }; - 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */; }; - 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1F2182DF2E00B162D4 /* cascade.xml */; }; - 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */; }; - 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */; }; - 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */; }; - 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */; }; - 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE2C2182E10700B162D4 /* RootViewController.mm */; }; - 34ECFE332182E51200B162D4 /* CameraViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE322182E51100B162D4 /* CameraViewController.mm */; }; - 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE342182E56900B162D4 /* AVFoundation.framework */; }; - 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE372182E5F100B162D4 /* Utility.mm */; }; - 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE392182FAB700B162D4 /* CoreImage.framework */; }; - A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A33861A99BC945120023AC25 /* libPods-lpr.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 34ECFDCC2182DD9300B162D4 /* lpr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lpr.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 34ECFDD02182DD9300B162D4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 34ECFDD82182DD9400B162D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 34ECFDDB2182DD9400B162D4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 34ECFDDD2182DD9400B162D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 34ECFDDE2182DD9400B162D4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateSegmentation.h; sourceTree = ""; }; - 34ECFE042182DEF500B162D4 /* Recognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Recognizer.h; sourceTree = ""; }; - 34ECFE052182DEF500B162D4 /* PlateDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateDetection.h; sourceTree = ""; }; - 34ECFE062182DEF500B162D4 /* PlateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateInfo.h; sourceTree = ""; }; - 34ECFE072182DEF500B162D4 /* FineMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FineMapping.h; sourceTree = ""; }; - 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = niBlackThreshold.h; sourceTree = ""; }; - 34ECFE092182DEF500B162D4 /* FastDeskew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastDeskew.h; sourceTree = ""; }; - 34ECFE0A2182DEF500B162D4 /* Pipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pipeline.h; sourceTree = ""; }; - 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNNRecognizer.h; sourceTree = ""; }; - 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateSegmentation.cpp; sourceTree = ""; }; - 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateDetection.cpp; sourceTree = ""; }; - 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Pipeline.cpp; sourceTree = ""; }; - 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastDeskew.cpp; sourceTree = ""; }; - 34ECFE112182DEF500B162D4 /* Recognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Recognizer.cpp; sourceTree = ""; }; - 34ECFE122182DEF500B162D4 /* FineMapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FineMapping.cpp; sourceTree = ""; }; - 34ECFE132182DEF500B162D4 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; - 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CNNRecognizer.cpp; sourceTree = ""; }; - 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = HorizonalFinemapping.caffemodel; sourceTree = ""; }; - 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = CharacterRecognization.caffemodel; sourceTree = ""; }; - 34ECFE1F2182DF2E00B162D4 /* cascade.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = cascade.xml; sourceTree = ""; }; - 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Segmentation.prototxt; sourceTree = ""; }; - 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HorizonalFinemapping.prototxt; sourceTree = ""; }; - 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = Segmentation.caffemodel; sourceTree = ""; }; - 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CharacterRecognization.prototxt; sourceTree = ""; }; - 34ECFE2B2182E10700B162D4 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 34ECFE2C2182E10700B162D4 /* RootViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RootViewController.mm; sourceTree = ""; }; - 34ECFE312182E51100B162D4 /* CameraViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CameraViewController.h; sourceTree = ""; }; - 34ECFE322182E51100B162D4 /* CameraViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CameraViewController.mm; sourceTree = ""; }; - 34ECFE342182E56900B162D4 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 34ECFE362182E5F100B162D4 /* Utility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = ""; }; - 34ECFE372182E5F100B162D4 /* Utility.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Utility.mm; sourceTree = ""; }; - 34ECFE392182FAB700B162D4 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; - 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.release.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.release.xcconfig"; sourceTree = ""; }; - A33861A99BC945120023AC25 /* libPods-lpr.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-lpr.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.debug.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 34ECFDC92182DD9300B162D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */, - 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */, - A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 34ECFDC32182DD9300B162D4 = { - isa = PBXGroup; - children = ( - 34ECFDCE2182DD9300B162D4 /* lpr */, - 34ECFE1C2182DF2E00B162D4 /* Resource */, - 34ECFDCD2182DD9300B162D4 /* Products */, - DE72138A4B42368326688C6A /* Pods */, - 97C4CF37B3E356C8641CE105 /* Frameworks */, - ); - sourceTree = ""; - }; - 34ECFDCD2182DD9300B162D4 /* Products */ = { - isa = PBXGroup; - children = ( - 34ECFDCC2182DD9300B162D4 /* lpr.app */, - ); - name = Products; - sourceTree = ""; - }; - 34ECFDCE2182DD9300B162D4 /* lpr */ = { - isa = PBXGroup; - children = ( - 34ECFE012182DEF500B162D4 /* Source */, - 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */, - 34ECFDD02182DD9300B162D4 /* AppDelegate.m */, - 34ECFDD82182DD9400B162D4 /* Assets.xcassets */, - 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */, - 34ECFDDD2182DD9400B162D4 /* Info.plist */, - 34ECFDDE2182DD9400B162D4 /* main.m */, - 34ECFE2B2182E10700B162D4 /* RootViewController.h */, - 34ECFE2C2182E10700B162D4 /* RootViewController.mm */, - 34ECFE312182E51100B162D4 /* CameraViewController.h */, - 34ECFE322182E51100B162D4 /* CameraViewController.mm */, - 34ECFE362182E5F100B162D4 /* Utility.h */, - 34ECFE372182E5F100B162D4 /* Utility.mm */, - ); - path = lpr; - sourceTree = ""; - }; - 34ECFE012182DEF500B162D4 /* Source */ = { - isa = PBXGroup; - children = ( - 34ECFE022182DEF500B162D4 /* include */, - 34ECFE0C2182DEF500B162D4 /* src */, - ); - path = Source; - sourceTree = ""; - }; - 34ECFE022182DEF500B162D4 /* include */ = { - isa = PBXGroup; - children = ( - 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */, - 34ECFE042182DEF500B162D4 /* Recognizer.h */, - 34ECFE052182DEF500B162D4 /* PlateDetection.h */, - 34ECFE062182DEF500B162D4 /* PlateInfo.h */, - 34ECFE072182DEF500B162D4 /* FineMapping.h */, - 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */, - 34ECFE092182DEF500B162D4 /* FastDeskew.h */, - 34ECFE0A2182DEF500B162D4 /* Pipeline.h */, - 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */, - ); - path = include; - sourceTree = ""; - }; - 34ECFE0C2182DEF500B162D4 /* src */ = { - isa = PBXGroup; - children = ( - 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */, - 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */, - 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */, - 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */, - 34ECFE112182DEF500B162D4 /* Recognizer.cpp */, - 34ECFE122182DEF500B162D4 /* FineMapping.cpp */, - 34ECFE132182DEF500B162D4 /* util.h */, - 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */, - ); - path = src; - sourceTree = ""; - }; - 34ECFE1C2182DF2E00B162D4 /* Resource */ = { - isa = PBXGroup; - children = ( - 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */, - 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */, - 34ECFE1F2182DF2E00B162D4 /* cascade.xml */, - 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */, - 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */, - 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */, - 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */, - ); - path = Resource; - sourceTree = ""; - }; - 97C4CF37B3E356C8641CE105 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 34ECFE392182FAB700B162D4 /* CoreImage.framework */, - 34ECFE342182E56900B162D4 /* AVFoundation.framework */, - A33861A99BC945120023AC25 /* libPods-lpr.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - DE72138A4B42368326688C6A /* Pods */ = { - isa = PBXGroup; - children = ( - E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */, - 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 34ECFDCB2182DD9300B162D4 /* lpr */ = { - isa = PBXNativeTarget; - buildConfigurationList = 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */; - buildPhases = ( - 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */, - 34ECFDC82182DD9300B162D4 /* Sources */, - 34ECFDC92182DD9300B162D4 /* Frameworks */, - 34ECFDCA2182DD9300B162D4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = lpr; - productName = lpr; - productReference = 34ECFDCC2182DD9300B162D4 /* lpr.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 34ECFDC42182DD9300B162D4 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1000; - ORGANIZATIONNAME = lprSample; - TargetAttributes = { - 34ECFDCB2182DD9300B162D4 = { - CreatedOnToolsVersion = 10.0; - }; - }; - }; - buildConfigurationList = 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 34ECFDC32182DD9300B162D4; - productRefGroup = 34ECFDCD2182DD9300B162D4 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 34ECFDCB2182DD9300B162D4 /* lpr */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 34ECFDCA2182DD9300B162D4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */, - 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */, - 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */, - 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */, - 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */, - 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */, - 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */, - 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */, - 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-lpr-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 34ECFDC82182DD9300B162D4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */, - 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */, - 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */, - 34ECFDDF2182DD9400B162D4 /* main.m in Sources */, - 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */, - 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */, - 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */, - 34ECFE332182E51200B162D4 /* CameraViewController.mm in Sources */, - 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */, - 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */, - 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */, - 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 34ECFDDB2182DD9400B162D4 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 34ECFDE02182DD9400B162D4 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/lpr/Source/incllude\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 10.1; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 34ECFDE12182DD9400B162D4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/lpr/Source/incllude\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 10.1; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 34ECFDE32182DD9400B162D4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = YZGMTHK294; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_ROOT}/Headers/Public\"", - "\"${PODS_ROOT}/Headers/Public/OpenCV\"", - ); - INFOPLIST_FILE = lpr/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 34ECFDE42182DD9400B162D4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = YZGMTHK294; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_ROOT}/Headers/Public\"", - "\"${PODS_ROOT}/Headers/Public/OpenCV\"", - ); - INFOPLIST_FILE = lpr/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 34ECFDE02182DD9400B162D4 /* Debug */, - 34ECFDE12182DD9400B162D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 34ECFDE32182DD9400B162D4 /* Debug */, - 34ECFDE42182DD9400B162D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 34ECFDC42182DD9300B162D4 /* Project object */; -} diff --git a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index 39e1b8b..0000000 --- a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100755 index 18d9810..0000000 --- a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index 7314580..0000000 Binary files a/Prj-iOS/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/Prj-iOS/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist b/Prj-iOS/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100755 index eb32267..0000000 --- a/Prj-iOS/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - lpr.xcscheme - - orderHint - 2 - - - - diff --git a/Prj-iOS/lpr.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index d677399..0000000 --- a/Prj-iOS/lpr.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Prj-iOS/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100755 index 18d9810..0000000 --- a/Prj-iOS/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index 71ec865..0000000 Binary files a/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100755 index 37996a6..0000000 --- a/Prj-iOS/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Prj-iOS/lpr/.gitignore b/Prj-iOS/lpr/.gitignore deleted file mode 100755 index ec9e31b..0000000 --- a/Prj-iOS/lpr/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -Pods/ -.clang-format diff --git a/Prj-iOS/lpr/AppDelegate.h b/Prj-iOS/lpr/AppDelegate.h deleted file mode 100755 index 8ef26f5..0000000 --- a/Prj-iOS/lpr/AppDelegate.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// AppDelegate.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - - -@end - diff --git a/Prj-iOS/lpr/AppDelegate.m b/Prj-iOS/lpr/AppDelegate.m deleted file mode 100755 index e022066..0000000 --- a/Prj-iOS/lpr/AppDelegate.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// AppDelegate.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "AppDelegate.h" -#import "RootViewController.h" - -@interface AppDelegate () - -@end - -@implementation AppDelegate - - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Override point for customization after application launch. - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]]; - [self.window makeKeyAndVisible]; - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. -} - - -- (void)applicationDidEnterBackground:(UIApplication *)application { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - - -- (void)applicationWillEnterForeground:(UIApplication *)application { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. -} - - -@end diff --git a/Prj-iOS/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json b/Prj-iOS/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100755 index d8db8d6..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/Contents.json b/Prj-iOS/lpr/Assets.xcassets/Contents.json deleted file mode 100755 index da4a164..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json deleted file mode 100755 index 8ca20de..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "back_camera_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "back_camera_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png b/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png deleted file mode 100755 index 41e7387..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png b/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png deleted file mode 100755 index be4379d..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json deleted file mode 100755 index fc0efcf..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "flash_camera_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "flash_camera_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png b/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png deleted file mode 100755 index 91027cd..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png b/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png deleted file mode 100755 index e751b60..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json b/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json deleted file mode 100755 index 7f06e8f..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "locker_btn_def@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "locker_btn_def@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png b/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png deleted file mode 100755 index daeadf0..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png b/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png deleted file mode 100755 index 2e05dae..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json b/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json deleted file mode 100755 index 5fccab2..0000000 --- a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "take_pic_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "take_pic_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png b/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png deleted file mode 100755 index fb47d20..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png b/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png deleted file mode 100755 index db0393b..0000000 Binary files a/Prj-iOS/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/Base.lproj/LaunchScreen.storyboard b/Prj-iOS/lpr/Base.lproj/LaunchScreen.storyboard deleted file mode 100755 index bfa3612..0000000 --- a/Prj-iOS/lpr/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Prj-iOS/lpr/CameraViewController.h b/Prj-iOS/lpr/CameraViewController.h deleted file mode 100755 index 8331b68..0000000 --- a/Prj-iOS/lpr/CameraViewController.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// CameraViewController.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#ifdef __cplusplus -#import -#import -#endif - -#ifdef __OBJC__ -#import -#import -#import -#import -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^ResultCallBack)(NSString *reuslt, UIImage *image); - -@interface CameraViewController : UIViewController - -@property(nonatomic, copy) ResultCallBack resultCB; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/CameraViewController.mm b/Prj-iOS/lpr/CameraViewController.mm deleted file mode 100755 index 43f75e8..0000000 --- a/Prj-iOS/lpr/CameraViewController.mm +++ /dev/null @@ -1,499 +0,0 @@ -// -// CameraViewController.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "CameraViewController.h" -#import "Utility.h" -#import "Pipeline.h" - -//屏幕的宽、高 -#define kScreenWidth [UIScreen mainScreen].bounds.size.width -#define kScreenHeight [UIScreen mainScreen].bounds.size.height - -@interface CameraViewController () -{ - AVCaptureSession *_session; - AVCaptureDeviceInput *_captureInput; - AVCaptureStillImageOutput *_captureOutput; - AVCaptureVideoPreviewLayer *_preview; - AVCaptureDevice *_device; - - NSTimer *_timer; //定时器 - BOOL _on; //闪光灯状态 - BOOL _capture;//导航栏动画是否完成 - BOOL _isFoucePixel;//是否相位对焦 - CGRect _imgRect;//拍照裁剪 - int _count;//每几帧识别 - CGFloat _isLensChanged;//镜头位置 - - /*相位聚焦下镜头位置 镜头晃动 值不停的改变 */ - CGFloat _isIOS8AndFoucePixelLensPosition; - - /* - 控制识别速度,最小值为1!数值越大识别越慢。 - 相机初始化时,设置默认值为1(不要改动),判断设备若为相位对焦时,设置此值为2(可以修改,最小为1,越大越慢) - 此值的功能是为了减小相位对焦下,因识别速度过快 - 此值在相机初始化中设置,在相机代理中使用,用户若无特殊需求不用修改。 - */ - int _MaxFR; - - cv::Mat source_image; -} - -@property (assign, nonatomic) BOOL adjustingFocus; -@property (nonatomic, retain) CALayer *customLayer; -@property (nonatomic,assign) BOOL isProcessingImage; - -@property (nonatomic, strong) UIImage* image; - -@end - -@implementation CameraViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view. - self.view.backgroundColor = [UIColor clearColor]; - - //初始化相机 - [self initialize]; - - //创建相机界面控件 - [self createCameraView]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - _capture = NO; - [self performSelector:@selector(changeCapture) withObject:nil afterDelay:0.4]; - //不支持相位对焦情况下(iPhone6以后的手机支持相位对焦) 设置定时器 开启连续对焦 - if (!_isFoucePixel) { - _timer = [NSTimer scheduledTimerWithTimeInterval:1.3 target:self selector:@selector(fouceMode) userInfo:nil repeats:YES]; - } - - AVCaptureDevice*camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; - int flags = NSKeyValueObservingOptionNew; - //注册通知 - [camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil]; - if (_isFoucePixel) { - [camDevice addObserver:self forKeyPath:@"lensPosition" options:flags context:nil]; - } - [_session startRunning]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - self.navigationController.navigationBarHidden = NO; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - - if (!_isFoucePixel) { - [_timer invalidate]; - _timer = nil; - } - AVCaptureDevice*camDevice =[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; - [camDevice removeObserver:self forKeyPath:@"adjustingFocus"]; - if (_isFoucePixel) { - [camDevice removeObserver:self forKeyPath:@"lensPosition"]; - } - [_session stopRunning]; - - _capture = NO; -} - -- (void)changeCapture { - _capture = YES; -} - -#pragma mark - Private Methods -//初始化相机 -- (void)initialize { - //判断摄像头授权 - AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; - if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){ - self.view.backgroundColor = [UIColor blackColor]; - UIAlertView * alt = [[UIAlertView alloc] initWithTitle:@"未获得授权使用摄像头" message:@"请在'设置-隐私-相机'打开" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; - [alt show]; - return; - } - - _MaxFR = 1; - //1.创建会话层 - _session = [[AVCaptureSession alloc] init]; - [_session setSessionPreset:AVCaptureSessionPreset1920x1080]; - - //2.创建、配置输入设备 - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices){ - if (device.position == AVCaptureDevicePositionBack){ - _device = device; - _captureInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; - } - } - [_session addInput:_captureInput]; - - //2.创建视频流输出 - AVCaptureVideoDataOutput *captureOutput = [[AVCaptureVideoDataOutput alloc] init]; - captureOutput.alwaysDiscardsLateVideoFrames = YES; - dispatch_queue_t queue; - queue = dispatch_queue_create("cameraQueue", NULL); - [captureOutput setSampleBufferDelegate:self queue:queue]; - NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey; - NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]; - NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key]; - [captureOutput setVideoSettings:videoSettings]; - [_session addOutput:captureOutput]; - - //3.创建、配置静态拍照输出 - _captureOutput = [[AVCaptureStillImageOutput alloc] init]; - NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil]; - [_captureOutput setOutputSettings:outputSettings]; - [_session addOutput:_captureOutput]; - - //4.预览图层 - _preview = [AVCaptureVideoPreviewLayer layerWithSession: _session]; - _preview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); - _preview.videoGravity = AVLayerVideoGravityResizeAspectFill; - [self.view.layer addSublayer:_preview]; - - //判断是否相位对焦 - if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { - AVCaptureDeviceFormat *deviceFormat = _device.activeFormat; - if (deviceFormat.autoFocusSystem == AVCaptureAutoFocusSystemPhaseDetection){ - _isFoucePixel = YES; - _MaxFR = 2; - } - } -} - -- (void)createCameraView -{ - //设置覆盖层 - CAShapeLayer *maskWithHole = [CAShapeLayer layer]; - // Both frames are defined in the same coordinate system - CGRect biggerRect = self.view.bounds; - CGFloat offset = 1.0f; - if ([[UIScreen mainScreen] scale] >= 2) { - offset = 0.5; - } - CGRect smallFrame = CGRectMake(45, 100, 300, 500); - CGRect smallerRect = CGRectInset(smallFrame, -offset, -offset) ; - UIBezierPath *maskPath = [UIBezierPath bezierPath]; - [maskPath moveToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMaxY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMaxY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath moveToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMaxY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMaxY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskWithHole setPath:[maskPath CGPath]]; - [maskWithHole setFillRule:kCAFillRuleEvenOdd]; - [maskWithHole setFillColor:[[UIColor colorWithWhite:0 alpha:0.35] CGColor]]; - [self.view.layer addSublayer:maskWithHole]; - [self.view.layer setMasksToBounds:YES]; - - /* 相机按钮 适配了iPhone和ipad 不同需求自行修改界面*/ - //返回、闪光灯按钮 - CGFloat backWidth = 35; - if (kScreenHeight>=1024) { - backWidth = 50; - } - CGFloat s = 80; - CGFloat s1 = 0; - if (kScreenHeight==480) { - s = 60; - s1 = 10; - } - UIButton *backBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/16,kScreenWidth/16-s1, backWidth, backWidth)]; - [backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - [backBtn setImage:[UIImage imageNamed:@"back_camera_btn"] forState:UIControlStateNormal]; - backBtn.titleLabel.textAlignment = NSTextAlignmentLeft; - [self.view addSubview:backBtn]; - - UIButton *flashBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth-kScreenWidth/16-backWidth,kScreenWidth/16-s1, backWidth, backWidth)]; - [flashBtn setImage:[UIImage imageNamed:@"flash_camera_btn"] forState:UIControlStateNormal]; - [flashBtn addTarget:self action:@selector(modeBtn) forControlEvents:UIControlEventTouchUpInside]; - [self.view addSubview:flashBtn]; - - //拍照视图 上拉按钮 拍照按钮 - UIButton *upBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-60, kScreenHeight-20, 120, 20)]; - upBtn.tag = 1001; - [upBtn addTarget:self action:@selector(upBtn:) forControlEvents:UIControlEventTouchUpInside]; - [upBtn setImage:[UIImage imageNamed:@"locker_btn_def"] forState:UIControlStateNormal]; - [self.view addSubview:upBtn]; - - UIButton *photoBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-30,kScreenHeight-s,60, 60)]; - photoBtn.tag = 1000; - photoBtn.hidden = YES; - [photoBtn setImage:[UIImage imageNamed:@"take_pic_btn"] forState:UIControlStateNormal]; - [photoBtn addTarget:self action:@selector(photoBtn) forControlEvents:UIControlEventTouchUpInside]; - [photoBtn setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted]; - [self.view addSubview:photoBtn]; - [self.view bringSubviewToFront:photoBtn]; -} - -#pragma mark - UIAlertViewDelegate -- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ - [self.navigationController popViewControllerAnimated:YES]; -} - -//隐藏状态栏 -- (UIStatusBarStyle)preferredStatusBarStyle{ - return UIStatusBarStyleDefault; -} -- (BOOL)prefersStatusBarHidden{ - return YES; -} - -//对焦 -- (void)fouceMode -{ - NSError *error; - AVCaptureDevice *device = [self cameraWithPosition:AVCaptureDevicePositionBack]; - if ([device isFocusModeSupported:AVCaptureFocusModeAutoFocus]) - { - if ([device lockForConfiguration:&error]) { - CGPoint cameraPoint = [_preview captureDevicePointOfInterestForPoint:self.view.center]; - [device setFocusPointOfInterest:cameraPoint]; - [device setFocusMode:AVCaptureFocusModeAutoFocus]; - [device unlockForConfiguration]; - } else { - //NSLog(@"Error: %@", error); - } - } -} - -- (AVCaptureDevice *)cameraWithPosition:(AVCaptureDevicePosition)position -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices){ - if (device.position == position){ - return device; - } - } - return nil; -} - -- (NSString *)getPath:(NSString*)fileName -{ - NSString *bundlePath = [NSBundle mainBundle].bundlePath; - NSString *path = [bundlePath stringByAppendingPathComponent:fileName]; - return path; -} - -- (NSString *)simpleRecognition:(cv::Mat&)src -{ - NSString *path_1 = [self getPath:@"cascade.xml"]; - NSString *path_2 = [self getPath:@"HorizonalFinemapping.prototxt"]; - NSString *path_3 = [self getPath:@"HorizonalFinemapping.caffemodel"]; - NSString *path_4 = [self getPath:@"Segmentation.prototxt"]; - NSString *path_5 = [self getPath:@"Segmentation.caffemodel"]; - NSString *path_6 = [self getPath:@"CharacterRecognization.prototxt"]; - NSString *path_7 = [self getPath:@"CharacterRecognization.caffemodel"]; - - std::string *cpath_1 = new std::string([path_1 UTF8String]); - std::string *cpath_2 = new std::string([path_2 UTF8String]); - std::string *cpath_3 = new std::string([path_3 UTF8String]); - std::string *cpath_4 = new std::string([path_4 UTF8String]); - std::string *cpath_5 = new std::string([path_5 UTF8String]); - std::string *cpath_6 = new std::string([path_6 UTF8String]); - std::string *cpath_7 = new std::string([path_7 UTF8String]); - - - pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7); - - std::vector list_res = pr2.RunPiplineAsImage(src); - std::string concat_results = ""; - for(auto one:list_res) { - if(one.confidence>0.7) { - concat_results += one.getPlateName()+","; - } - } - - NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding]; - if (str.length > 0) { - str = [str substringToIndex:str.length-1]; - str = [NSString stringWithFormat:@"%@",str]; - } else { - str = [NSString stringWithFormat:@"未识别成功"]; - } - NSLog(@"===> 识别结果 = %@", str); - - return str; -} - -#pragma mark - Actions -//返回按钮按钮点击事件 -- (void)backAction -{ - [self dismissViewControllerAnimated:YES completion:nil]; -} - -//闪光灯按钮点击事件 -- (void)modeBtn -{ - if (![_device hasTorch]) { - //NSLog(@"no torch"); - } else { - [_device lockForConfiguration:nil]; - if (!_on) { - [_device setTorchMode: AVCaptureTorchModeOn]; - _on = YES; - }else{ - [_device setTorchMode: AVCaptureTorchModeOff]; - _on = NO; - } - [_device unlockForConfiguration]; - } -} - -//上拉按钮点击事件 -- (void)upBtn:(UIButton *)upBtn -{ - UIButton *photoBtn = (UIButton *)[self.view viewWithTag:1000]; - photoBtn.hidden = NO; - upBtn.hidden = YES; -} - -//拍照按钮点击事件 -- (void)photoBtn -{ - self.isProcessingImage = YES; - //get connection - AVCaptureConnection *videoConnection = nil; - for (AVCaptureConnection *connection in _captureOutput.connections) { - for (AVCaptureInputPort *port in [connection inputPorts]) { - if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { - videoConnection = connection; - break; - } - } - if (videoConnection) { break; } - } - - //get UIImage - [_captureOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: - ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - if (imageSampleBuffer != NULL) { - //停止取景 - [_session stopRunning]; - - NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; - UIImage *tempImage = [[UIImage alloc] initWithData:imageData]; - - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:tempImage]; - source_image = [Utility cvMatFromUIImage:temp_image]; - NSString* text = [self simpleRecognition:source_image]; - - NSMutableDictionary* resultDict = [NSMutableDictionary new]; - resultDict[@"image"] = temp_image; - resultDict[@"text"] = text; - [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO]; - self.isProcessingImage = NO; - } - }]; -} - -//从摄像头缓冲区获取图像 -#pragma mark - AVCaptureSession delegate -- (void)captureOutput:(AVCaptureOutput *)captureOutput -didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer - fromConnection:(AVCaptureConnection *)connection -{ - CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); - CVPixelBufferLockBaseAddress(imageBuffer,0); - uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer); - size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); - size_t width = CVPixelBufferGetWidth(imageBuffer); - size_t height = CVPixelBufferGetHeight(imageBuffer); - - /*We unlock the image buffer*/ - CVPixelBufferUnlockBaseAddress(imageBuffer,0); - - /*Create a CGImageRef from the CVImageBufferRef*/ - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - CGImageRef newImage = CGBitmapContextCreateImage(newContext); - - /*We release some components*/ - CGContextRelease(newContext); - CGColorSpaceRelease(colorSpace); - - /*We display the result on the image view (We need to change the orientation of the image so that the video is displayed correctly)*/ - self.image = [UIImage imageWithCGImage:newImage scale:1.0 orientation:UIImageOrientationUp]; - /*We relase the CGImageRef*/ - CGImageRelease(newImage); - - //检边识别 - if (_capture == YES) { //导航栏动画完成 - if (self.isProcessingImage==NO) { //点击拍照后 不去识别 - if (!self.adjustingFocus) { //反差对焦下 非正在对焦状态(相位对焦下self.adjustingFocus此值不会改变) - if (_isLensChanged == _isIOS8AndFoucePixelLensPosition) { - _count++; - if (_count >= _MaxFR) { - - //识别 - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:self.image]; - source_image = [Utility cvMatFromUIImage:temp_image]; - NSString* text = [self simpleRecognition:source_image]; - - if (text.length == 7) { //识别成功 - _count = 0; - // 停止取景 - [_session stopRunning]; - //设置震动 - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - - NSMutableDictionary* resultDict = [NSMutableDictionary new]; - resultDict[@"image"] = temp_image; - resultDict[@"text"] = text; - - [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO]; - } - } - } else { - _isLensChanged = _isIOS8AndFoucePixelLensPosition; - _count = 0; - } - } - } - } - CVPixelBufferUnlockBaseAddress(imageBuffer,0); -} - -//找边成功开始拍照 -- (void)readyToGetImage:(NSDictionary *)resultDict -{ - [self dismissViewControllerAnimated:NO completion:^{ - }]; - - if (self.resultCB) { - self.resultCB(resultDict[@"text"], resultDict[@"image"]); - } -} - -- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context { - - /*反差对焦 监听反差对焦此*/ - if([keyPath isEqualToString:@"adjustingFocus"]){ - self.adjustingFocus =[[change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1]]; - } - /*监听相位对焦此*/ - if([keyPath isEqualToString:@"lensPosition"]){ - _isIOS8AndFoucePixelLensPosition =[[change objectForKey:NSKeyValueChangeNewKey] floatValue]; - //NSLog(@"监听_isIOS8AndFoucePixelLensPosition == %f",_isIOS8AndFoucePixelLensPosition); - } -} - - -@end diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png deleted file mode 100755 index 4f5befc..0000000 Binary files a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.44 PM.png and /dev/null differ diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png deleted file mode 100755 index c6028ea..0000000 Binary files a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.43.53 PM.png and /dev/null differ diff --git a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png b/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png deleted file mode 100755 index b3fa038..0000000 Binary files a/Prj-iOS/lpr/DemoImage/Screen Shot 2018-10-26 at 3.44.04 PM.png and /dev/null differ diff --git a/Prj-iOS/lpr/Info.plist b/Prj-iOS/lpr/Info.plist deleted file mode 100755 index 19d69a9..0000000 --- a/Prj-iOS/lpr/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSCameraUsageDescription - 欢迎使用相机 - NSPhotoLibraryUsageDescription - 欢迎使用相册 - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Prj-iOS/lpr/Podfile b/Prj-iOS/lpr/Podfile deleted file mode 100755 index 00459e4..0000000 --- a/Prj-iOS/lpr/Podfile +++ /dev/null @@ -1,8 +0,0 @@ -platform :ios, '10.1' - -target "lpr" do - -pod 'OpenCV', '~> 3.4.2' -pod 'Masonry' - -end diff --git a/Prj-iOS/lpr/Podfile.lock b/Prj-iOS/lpr/Podfile.lock deleted file mode 100755 index e4511f2..0000000 --- a/Prj-iOS/lpr/Podfile.lock +++ /dev/null @@ -1,20 +0,0 @@ -PODS: - - Masonry (1.1.0) - - OpenCV (3.4.2) - -DEPENDENCIES: - - Masonry - - OpenCV (~> 3.4.2) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - Masonry - - OpenCV - -SPEC CHECKSUMS: - Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 - OpenCV: 452909747854c92e0f59670961ed5131f5286cb5 - -PODFILE CHECKSUM: 94db02cda76a5ac6371a03e6e2ca4e9035fc0da6 - -COCOAPODS: 1.5.3 diff --git a/Prj-iOS/lpr/README.md b/Prj-iOS/lpr/README.md deleted file mode 100755 index 404c617..0000000 --- a/Prj-iOS/lpr/README.md +++ /dev/null @@ -1,4 +0,0 @@ - -Depency Library: -- Masonry, 1.1.0 -- OpenCV, 3.4.2 diff --git a/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel b/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel deleted file mode 100755 index d424408..0000000 Binary files a/Prj-iOS/lpr/Resource/CharacterRecognization.caffemodel and /dev/null differ diff --git a/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt b/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt deleted file mode 100755 index 91aa29e..0000000 --- a/Prj-iOS/lpr/Resource/CharacterRecognization.prototxt +++ /dev/null @@ -1,123 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 1 -input_dim: 30 -input_dim: 14 -layer { - name: "conv2d_1" - type: "Convolution" - bottom: "data" - top: "conv2d_1" - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_1" - type: "ReLU" - bottom: "conv2d_1" - top: "activation_1" -} -layer { - name: "max_pooling2d_1" - type: "Pooling" - bottom: "activation_1" - top: "max_pooling2d_1" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_2" - type: "Convolution" - bottom: "max_pooling2d_1" - top: "conv2d_2" - convolution_param { - num_output: 64 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_2" - type: "ReLU" - bottom: "conv2d_2" - top: "activation_2" -} -layer { - name: "max_pooling2d_2" - type: "Pooling" - bottom: "activation_2" - top: "max_pooling2d_2" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_3" - type: "Convolution" - bottom: "max_pooling2d_2" - top: "conv2d_3" - convolution_param { - num_output: 128 - bias_term: true - pad: 0 - kernel_size: 2 - stride: 1 - } -} -layer { - name: "activation_3" - type: "ReLU" - bottom: "conv2d_3" - top: "activation_3" -} -layer { - name: "flatten_1" - type: "Flatten" - bottom: "activation_3" - top: "flatten_1" -} -layer { - name: "dense_1" - type: "InnerProduct" - bottom: "flatten_1" - top: "dense_1" - inner_product_param { - num_output: 256 - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "dense_1" - top: "relu2" -} -layer { - name: "dense2" - type: "InnerProduct" - bottom: "relu2" - top: "dense2" - inner_product_param { - num_output: 65 - } -} - -layer { - name: "prob" - type: "Softmax" - bottom: "dense2" - top: "prob" -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel b/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel deleted file mode 100755 index 1af5863..0000000 Binary files a/Prj-iOS/lpr/Resource/HorizonalFinemapping.caffemodel and /dev/null differ diff --git a/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt b/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt deleted file mode 100755 index 21726dd..0000000 --- a/Prj-iOS/lpr/Resource/HorizonalFinemapping.prototxt +++ /dev/null @@ -1,95 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 3 -input_dim: 16 -input_dim: 66 -layer { - name: "conv1" - type: "Convolution" - bottom: "data" - top: "conv1" - convolution_param { - num_output: 10 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "relu1" - type: "ReLU" - bottom: "conv1" - top: "conv1" -} -layer { - name: "max_pooling2d_3" - type: "Pooling" - bottom: "conv1" - top: "max_pooling2d_3" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2" - type: "Convolution" - bottom: "max_pooling2d_3" - top: "conv2" - convolution_param { - num_output: 16 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "conv2" - top: "conv2" -} -layer { - name: "conv3" - type: "Convolution" - bottom: "conv2" - top: "conv3" - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "relu3" - type: "ReLU" - bottom: "conv3" - top: "conv3" -} -layer { - name: "flatten_2" - type: "Flatten" - bottom: "conv3" - top: "flatten_2" -} -layer { - name: "dense" - type: "InnerProduct" - bottom: "flatten_2" - top: "dense" - inner_product_param { - num_output: 2 - } -} -layer { - name: "relu4" - type: "ReLU" - bottom: "dense" - top: "dense" -} diff --git a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel deleted file mode 100755 index 311ee17..0000000 Binary files a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.caffemodel and /dev/null differ diff --git a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt b/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt deleted file mode 100755 index 8419763..0000000 --- a/Prj-iOS/lpr/Resource/SegmenationFree-Inception.prototxt +++ /dev/null @@ -1,454 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 3 -input_dim: 160 -input_dim: 40 -layer { - name: "conv0" - type: "Convolution" - bottom: "data" - top: "conv0" - convolution_param { - num_output: 32 - bias_term: true - pad_h: 1 - pad_w: 1 - kernel_h: 3 - kernel_w: 3 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "bn0" - type: "BatchNorm" - bottom: "conv0" - top: "bn0" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "bn0_scale" - type: "Scale" - bottom: "bn0" - top: "bn0" - scale_param { - bias_term: true - } -} -layer { - name: "relu0" - type: "ReLU" - bottom: "bn0" - top: "bn0" -} -layer { - name: "pool0" - type: "Pooling" - bottom: "bn0" - top: "pool0" - pooling_param { - pool: MAX - kernel_h: 2 - kernel_w: 2 - stride_h: 2 - stride_w: 2 - pad_h: 0 - pad_w: 0 - } -} -layer { - name: "conv1" - type: "Convolution" - bottom: "pool0" - top: "conv1" - convolution_param { - num_output: 64 - bias_term: true - pad_h: 1 - pad_w: 1 - kernel_h: 3 - kernel_w: 3 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "bn1" - type: "BatchNorm" - bottom: "conv1" - top: "bn1" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "bn1_scale" - type: "Scale" - bottom: "bn1" - top: "bn1" - scale_param { - bias_term: true - } -} -layer { - name: "relu1" - type: "ReLU" - bottom: "bn1" - top: "bn1" -} -layer { - name: "pool1" - type: "Pooling" - bottom: "bn1" - top: "pool1" - pooling_param { - pool: MAX - kernel_h: 2 - kernel_w: 2 - stride_h: 2 - stride_w: 2 - pad_h: 0 - pad_w: 0 - } -} -layer { - name: "conv2" - type: "Convolution" - bottom: "pool1" - top: "conv2" - convolution_param { - num_output: 128 - bias_term: true - pad_h: 1 - pad_w: 1 - kernel_h: 3 - kernel_w: 3 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "bn2" - type: "BatchNorm" - bottom: "conv2" - top: "bn2" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "bn2_scale" - type: "Scale" - bottom: "bn2" - top: "bn2" - scale_param { - bias_term: true - } -} -layer { - name: "relu2" - type: "ReLU" - bottom: "bn2" - top: "bn2" -} -layer { - name: "pool2" - type: "Pooling" - bottom: "bn2" - top: "pool2" - pooling_param { - pool: MAX - kernel_h: 2 - kernel_w: 2 - stride_h: 2 - stride_w: 2 - pad_h: 0 - pad_w: 0 - } -} -layer { - name: "conv2d_1" - type: "Convolution" - bottom: "pool2" - top: "conv2d_1" - convolution_param { - num_output: 256 - bias_term: true - pad_h: 0 - pad_w: 0 - kernel_h: 1 - kernel_w: 5 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "batch_normalization_1" - type: "BatchNorm" - bottom: "conv2d_1" - top: "batch_normalization_1" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_1_scale" - type: "Scale" - bottom: "batch_normalization_1" - top: "batch_normalization_1" - scale_param { - bias_term: true - } -} -layer { - name: "activation_1" - type: "ReLU" - bottom: "batch_normalization_1" - top: "batch_normalization_1" -} -layer { - name: "conv2d_2" - type: "Convolution" - bottom: "batch_normalization_1" - top: "conv2d_2" - convolution_param { - num_output: 256 - bias_term: true - pad_h: 3 - pad_w: 0 - kernel_h: 7 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "conv2d_3" - type: "Convolution" - bottom: "batch_normalization_1" - top: "conv2d_3" - convolution_param { - num_output: 256 - bias_term: true - pad_h: 2 - pad_w: 0 - kernel_h: 5 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "conv2d_4" - type: "Convolution" - bottom: "batch_normalization_1" - top: "conv2d_4" - convolution_param { - num_output: 256 - bias_term: true - pad_h: 1 - pad_w: 0 - kernel_h: 3 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "conv2d_5" - type: "Convolution" - bottom: "batch_normalization_1" - top: "conv2d_5" - convolution_param { - num_output: 256 - bias_term: true - pad_h: 0 - pad_w: 0 - kernel_h: 1 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "batch_normalization_2" - type: "BatchNorm" - bottom: "conv2d_2" - top: "batch_normalization_2" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_2_scale" - type: "Scale" - bottom: "batch_normalization_2" - top: "batch_normalization_2" - scale_param { - bias_term: true - } -} -layer { - name: "batch_normalization_3" - type: "BatchNorm" - bottom: "conv2d_3" - top: "batch_normalization_3" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_3_scale" - type: "Scale" - bottom: "batch_normalization_3" - top: "batch_normalization_3" - scale_param { - bias_term: true - } -} -layer { - name: "batch_normalization_4" - type: "BatchNorm" - bottom: "conv2d_4" - top: "batch_normalization_4" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_4_scale" - type: "Scale" - bottom: "batch_normalization_4" - top: "batch_normalization_4" - scale_param { - bias_term: true - } -} -layer { - name: "batch_normalization_5" - type: "BatchNorm" - bottom: "conv2d_5" - top: "batch_normalization_5" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_5_scale" - type: "Scale" - bottom: "batch_normalization_5" - top: "batch_normalization_5" - scale_param { - bias_term: true - } -} -layer { - name: "activation_2" - type: "ReLU" - bottom: "batch_normalization_2" - top: "batch_normalization_2" -} -layer { - name: "activation_3" - type: "ReLU" - bottom: "batch_normalization_3" - top: "batch_normalization_3" -} -layer { - name: "activation_4" - type: "ReLU" - bottom: "batch_normalization_4" - top: "batch_normalization_4" -} -layer { - name: "activation_5" - type: "ReLU" - bottom: "batch_normalization_5" - top: "batch_normalization_5" -} -layer { - name: "concatenate_1" - type: "Concat" - bottom: "batch_normalization_2" - bottom: "batch_normalization_3" - bottom: "batch_normalization_4" - bottom: "batch_normalization_5" - top: "concatenate_1" - concat_param { - axis: 1 - } -} -layer { - name: "conv_1024_11" - type: "Convolution" - bottom: "concatenate_1" - top: "conv_1024_11" - convolution_param { - num_output: 1024 - bias_term: true - pad_h: 0 - pad_w: 0 - kernel_h: 1 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "batch_normalization_6" - type: "BatchNorm" - bottom: "conv_1024_11" - top: "batch_normalization_6" - batch_norm_param { - moving_average_fraction: 0.99 - eps: 0.001 - } -} -layer { - name: "batch_normalization_6_scale" - type: "Scale" - bottom: "batch_normalization_6" - top: "batch_normalization_6" - scale_param { - bias_term: true - } -} -layer { - name: "activation_6" - type: "ReLU" - bottom: "batch_normalization_6" - top: "batch_normalization_6" -} -layer { - name: "conv_class_11" - type: "Convolution" - bottom: "batch_normalization_6" - top: "conv_class_11" - convolution_param { - num_output: 84 - bias_term: true - pad_h: 0 - pad_w: 0 - kernel_h: 1 - kernel_w: 1 - stride_h: 1 - stride_w: 1 - } -} -layer { - name: "prob" - type: "Softmax" - bottom: "conv_class_11" - top: "prob" -} - diff --git a/Prj-iOS/lpr/Resource/Segmentation.caffemodel b/Prj-iOS/lpr/Resource/Segmentation.caffemodel deleted file mode 100755 index 208269d..0000000 Binary files a/Prj-iOS/lpr/Resource/Segmentation.caffemodel and /dev/null differ diff --git a/Prj-iOS/lpr/Resource/Segmentation.prototxt b/Prj-iOS/lpr/Resource/Segmentation.prototxt deleted file mode 100755 index 45c6829..0000000 --- a/Prj-iOS/lpr/Resource/Segmentation.prototxt +++ /dev/null @@ -1,114 +0,0 @@ -input: "data" -input_dim: 1 -input_dim: 1 -input_dim: 22 -input_dim: 22 -layer { - name: "conv2d_12" - type: "Convolution" - bottom: "data" - top: "conv2d_12" - convolution_param { - num_output: 16 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_18" - type: "ReLU" - bottom: "conv2d_12" - top: "activation_18" -} -layer { - name: "max_pooling2d_10" - type: "Pooling" - bottom: "activation_18" - top: "max_pooling2d_10" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "conv2d_13" - type: "Convolution" - bottom: "max_pooling2d_10" - top: "conv2d_13" - convolution_param { - num_output: 16 - bias_term: true - pad: 0 - kernel_size: 3 - stride: 1 - } -} -layer { - name: "activation_19" - type: "ReLU" - bottom: "conv2d_13" - top: "activation_19" -} -layer { - name: "max_pooling2d_11" - type: "Pooling" - bottom: "activation_19" - top: "max_pooling2d_11" - pooling_param { - pool: MAX - kernel_size: 2 - stride: 2 - pad: 0 - } -} -layer { - name: "flatten_6" - type: "Flatten" - bottom: "max_pooling2d_11" - top: "flatten_6" -} -layer { - name: "dense_9" - type: "InnerProduct" - bottom: "flatten_6" - top: "dense_9" - inner_product_param { - num_output: 256 - } -} -layer { - name: "dropout_9" - type: "Dropout" - bottom: "dense_9" - top: "dropout_9" - dropout_param { - dropout_ratio: 0.5 - } -} -layer { - name: "activation_20" - type: "ReLU" - bottom: "dropout_9" - top: "activation_20" -} -layer { - name: "dense_10" - type: "InnerProduct" - bottom: "activation_20" - top: "dense_10" - inner_product_param { - num_output: 3 - } -} - - - layer { - name: "prob" - type: "Softmax" - bottom: "dense_10" - top: "prob" -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Resource/cascade.xml b/Prj-iOS/lpr/Resource/cascade.xml deleted file mode 100755 index 277775b..0000000 --- a/Prj-iOS/lpr/Resource/cascade.xml +++ /dev/null @@ -1,12117 +0,0 @@ - - - - BOOST - HAAR - 13 - 51 - - GAB - 9.9900001287460327e-001 - 5.0000000000000000e-001 - 9.4999999999999996e-001 - 1 - 100 - - 0 - 1 - ALL - 20 - - - <_> - 8 - -1.9158077239990234e+000 - - <_> - - 0 -1 344 -8.1478752195835114e-002 - - 6.2639594078063965e-001 -8.1564724445343018e-001 - <_> - - 0 -1 701 -1.2957378290593624e-002 - - 7.7114331722259521e-001 -4.9504086375236511e-001 - <_> - - 0 -1 687 -9.2470366507768631e-003 - - 8.1202191114425659e-001 -2.8070560097694397e-001 - <_> - - 0 -1 614 1.2374955229461193e-002 - - -2.5367051362991333e-001 7.3795551061630249e-001 - <_> - - 0 -1 299 -4.7858944162726402e-003 - - 7.1150565147399902e-001 -3.0462509393692017e-001 - <_> - - 0 -1 297 3.8920845836400986e-003 - - -2.8375166654586792e-001 7.3174893856048584e-001 - <_> - - 0 -1 814 -8.8258963078260422e-003 - - 7.5333666801452637e-001 -1.9880458712577820e-001 - <_> - - 0 -1 845 -6.7375516518950462e-003 - - 7.5299704074859619e-001 -2.3570337891578674e-001 - - <_> - 12 - -2.2599112987518311e+000 - - <_> - - 0 -1 577 -1.4449171721935272e-002 - - 5.5890566110610962e-001 -7.6307392120361328e-001 - <_> - - 0 -1 364 -3.8289055228233337e-002 - - 5.1702296733856201e-001 -5.7946079969406128e-001 - <_> - - 0 -1 124 -1.4895259402692318e-002 - - 6.1277741193771362e-001 -3.2827928662300110e-001 - <_> - - 0 -1 579 8.3044255152344704e-003 - - -3.3253005146980286e-001 7.2171914577484131e-001 - <_> - - 0 -1 314 6.0594235546886921e-003 - - -3.2760250568389893e-001 4.9508789181709290e-001 - <_> - - 0 -1 699 -6.8011749535799026e-003 - - 6.6238498687744141e-001 -2.4112002551555634e-001 - <_> - - 0 -1 295 -1.1183910071849823e-002 - - 7.1757602691650391e-001 -2.0989039540290833e-001 - <_> - - 0 -1 767 1.3139605522155762e-002 - - -1.8845251202583313e-001 6.7252415418624878e-001 - <_> - - 0 -1 689 -6.1739999800920486e-003 - - 6.3675141334533691e-001 -2.4877758324146271e-001 - <_> - - 0 -1 230 -9.2421043664216995e-003 - - 6.5140277147293091e-001 -2.1352872252464294e-001 - <_> - - 0 -1 48 -1.0526084899902344e-001 - - -9.0194213390350342e-001 1.8239501118659973e-001 - <_> - - 0 -1 281 1.2764739990234375e-001 - - 1.6771897673606873e-001 -7.7668786048889160e-001 - - <_> - 14 - -2.6526770591735840e+000 - - <_> - - 0 -1 829 -1.3842798769474030e-002 - - 4.1735208034515381e-001 -7.4295550584793091e-001 - <_> - - 0 -1 97 1.4765590429306030e-002 - - -5.1845699548721313e-001 5.0078016519546509e-001 - <_> - - 0 -1 21 3.1671046745032072e-003 - - -3.2739469408988953e-001 5.1253867149353027e-001 - <_> - - 0 -1 812 -9.5202140510082245e-003 - - 7.1236211061477661e-001 -2.3344238102436066e-001 - <_> - - 0 -1 703 -1.2149499729275703e-002 - - 6.4311891794204712e-001 -2.5991156697273254e-001 - <_> - - 0 -1 385 -1.0172967612743378e-001 - - -7.3093742132186890e-001 2.3339104652404785e-001 - <_> - - 0 -1 858 -6.2750680372118950e-003 - - 6.4128917455673218e-001 -2.3738093674182892e-001 - <_> - - 0 -1 518 1.5905253589153290e-002 - - -2.3312157392501831e-001 5.6561905145645142e-001 - <_> - - 0 -1 873 -5.6511810980737209e-003 - - 6.3098442554473877e-001 -2.2128470242023468e-001 - <_> - - 0 -1 229 1.0334834456443787e-002 - - -1.6205528378486633e-001 7.1688497066497803e-001 - <_> - - 0 -1 373 -1.4500595629215240e-002 - - 5.2634650468826294e-001 -2.5339555740356445e-001 - <_> - - 0 -1 720 8.4515195339918137e-003 - - -1.9005575776100159e-001 6.2645190954208374e-001 - <_> - - 0 -1 519 1.6612716019153595e-002 - - -1.9349065423011780e-001 6.6134274005889893e-001 - <_> - - 0 -1 561 1.0179553180932999e-002 - - -1.9179263710975647e-001 6.1396795511245728e-001 - - <_> - 16 - -2.2411971092224121e+000 - - <_> - - 0 -1 344 -9.5315366983413696e-002 - - 2.0634920895099640e-001 -7.6994550228118896e-001 - <_> - - 0 -1 577 -1.1904314160346985e-002 - - 4.6030580997467041e-001 -4.5124572515487671e-001 - <_> - - 0 -1 736 8.0967023968696594e-003 - - -2.9279080033302307e-001 5.1358801126480103e-001 - <_> - - 0 -1 766 -1.4768393710255623e-002 - - 6.9709998369216919e-001 -1.9789521396160126e-001 - <_> - - 0 -1 332 -7.3709283024072647e-003 - - 6.4356821775436401e-001 -1.9384047389030457e-001 - <_> - - 0 -1 331 7.4571794830262661e-003 - - -2.0553122460842133e-001 6.7929607629776001e-001 - <_> - - 0 -1 943 5.8717206120491028e-003 - - -1.9075798988342285e-001 6.3178658485412598e-001 - <_> - - 0 -1 563 -6.3720787875354290e-003 - - 6.1133956909179688e-001 -1.9197526574134827e-001 - <_> - - 0 -1 185 -1.7508253455162048e-002 - - 5.5003905296325684e-001 -2.0409923791885376e-001 - <_> - - 0 -1 539 -4.2271558195352554e-003 - - 5.9483224153518677e-001 -2.0080061256885529e-001 - <_> - - 0 -1 919 5.0116949714720249e-003 - - -1.8873518705368042e-001 5.8758223056793213e-001 - <_> - - 0 -1 298 8.4183514118194580e-002 - - 1.9158974289894104e-001 -7.3058295249938965e-001 - <_> - - 0 -1 776 4.5591969974339008e-003 - - -2.1568548679351807e-001 5.4940956830978394e-001 - <_> - - 0 -1 776 -3.6774221807718277e-003 - - 6.5714693069458008e-001 -2.3908025026321411e-001 - <_> - - 0 -1 844 1.3156082481145859e-002 - - -1.6889381408691406e-001 5.4372692108154297e-001 - <_> - - 0 -1 508 1.2298718094825745e-002 - - -1.7204846441745758e-001 5.3114622831344604e-001 - - <_> - 20 - -2.3278577327728271e+000 - - <_> - - 0 -1 684 -4.2540580034255981e-002 - - 2.4365724623203278e-001 -7.2478657960891724e-001 - <_> - - 0 -1 317 -2.1006479859352112e-002 - - 3.9405155181884766e-001 -5.1031738519668579e-001 - <_> - - 0 -1 13 1.2750471010804176e-002 - - -2.6155433058738708e-001 5.3219014406204224e-001 - <_> - - 0 -1 12 -1.0928934812545776e-001 - - -7.9762983322143555e-001 1.6522131860256195e-001 - <_> - - 0 -1 742 -8.2451943308115005e-003 - - 6.1570894718170166e-001 -1.6545474529266357e-001 - <_> - - 0 -1 651 -6.1263595707714558e-003 - - 6.5689104795455933e-001 -1.6943360865116119e-001 - <_> - - 0 -1 650 5.0333887338638306e-003 - - -1.9622130692005157e-001 5.7385104894638062e-001 - <_> - - 0 -1 34 1.0666935704648495e-002 - - -2.1881586313247681e-001 4.5024806261062622e-001 - <_> - - 0 -1 291 -1.0632696561515331e-002 - - 6.3769024610519409e-001 -1.6428084671497345e-001 - <_> - - 0 -1 237 -1.4020981267094612e-002 - - 6.1583393812179565e-001 -1.6708594560623169e-001 - <_> - - 0 -1 765 1.2589931488037109e-002 - - -2.0485720038414001e-001 4.7809442877769470e-001 - <_> - - 0 -1 753 -1.3003132306039333e-002 - - 6.5572524070739746e-001 -1.6035726666450500e-001 - <_> - - 0 -1 222 -5.7425271719694138e-002 - - -8.2782661914825439e-001 1.4296714961528778e-001 - <_> - - 0 -1 833 -3.7263054400682449e-003 - - 4.9777820706367493e-001 -2.1036401391029358e-001 - <_> - - 0 -1 825 1.2980616651475430e-002 - - -1.7779336869716644e-001 6.1292153596878052e-001 - <_> - - 0 -1 276 -3.4886042121797800e-003 - - 4.1184583306312561e-001 -2.0970273017883301e-001 - <_> - - 0 -1 813 -1.1452829465270042e-002 - - 5.6084501743316650e-001 -1.5244032442569733e-001 - <_> - - 0 -1 321 3.7844986654818058e-003 - - -2.8913837671279907e-001 2.7224406599998474e-001 - <_> - - 0 -1 876 -4.7596222721040249e-003 - - 5.2785235643386841e-001 -1.5034112334251404e-001 - <_> - - 0 -1 896 -1.7377159092575312e-003 - - 5.5644094944000244e-001 -2.0121455192565918e-001 - - <_> - 28 - -2.3750255107879639e+000 - - <_> - - 0 -1 347 -1.0104553401470184e-001 - - 1.3032685220241547e-001 -7.3142945766448975e-001 - <_> - - 0 -1 596 -1.8494745716452599e-002 - - 5.6178814172744751e-001 -3.3690422773361206e-001 - <_> - - 0 -1 629 1.0897371917963028e-002 - - -2.6694682240486145e-001 4.6661883592605591e-001 - <_> - - 0 -1 839 8.4953904151916504e-003 - - -2.0583645999431610e-001 4.6663123369216919e-001 - <_> - - 0 -1 44 6.3092201948165894e-002 - - 1.2652839720249176e-001 -7.4331611394882202e-001 - <_> - - 0 -1 305 -4.8850802704691887e-003 - - 5.1036185026168823e-001 -1.7127794027328491e-001 - <_> - - 0 -1 295 -1.2086534872651100e-002 - - 5.3874844312667847e-001 -1.7047831416130066e-001 - <_> - - 0 -1 163 -4.0194295346736908e-002 - - 6.0334587097167969e-001 -1.8293543159961700e-001 - <_> - - 0 -1 265 -9.7945984452962875e-003 - - 4.8900371789932251e-001 -1.7746040225028992e-001 - <_> - - 0 -1 597 6.7133754491806030e-003 - - -1.8603576719760895e-001 4.9050629138946533e-001 - <_> - - 0 -1 128 1.5135381370782852e-002 - - 1.5555633604526520e-001 -6.6330802440643311e-001 - <_> - - 0 -1 480 7.4470564723014832e-003 - - 1.2465479969978333e-001 -6.3456755876541138e-001 - <_> - - 0 -1 559 -1.7742723226547241e-002 - - 4.8904901742935181e-001 -1.6264849901199341e-001 - <_> - - 0 -1 821 -1.5695080161094666e-002 - - 4.1306030750274658e-001 -1.9036959111690521e-001 - <_> - - 0 -1 819 -4.3798778206110001e-003 - - 4.8768985271453857e-001 -1.5558160841464996e-001 - <_> - - 0 -1 836 -4.8424974083900452e-003 - - 4.6657896041870117e-001 -1.6847038269042969e-001 - <_> - - 0 -1 90 7.4649546295404434e-003 - - -1.7167872190475464e-001 4.3042477965354919e-001 - <_> - - 0 -1 883 5.1524871960282326e-003 - - -1.4530055224895477e-001 4.7056230902671814e-001 - <_> - - 0 -1 890 9.8812151700258255e-003 - - -1.4264582097530365e-001 5.0057184696197510e-001 - <_> - - 0 -1 393 -3.0181273818016052e-002 - - -6.5408444404602051e-001 1.0674032568931580e-001 - <_> - - 0 -1 694 9.2962123453617096e-003 - - -1.4381234347820282e-001 4.9470436573028564e-001 - <_> - - 0 -1 77 -7.6252631843090057e-003 - - -5.2033776044845581e-001 1.3706678152084351e-001 - <_> - - 0 -1 801 -1.1497072875499725e-002 - - 3.4252560138702393e-001 -1.9132094085216522e-001 - <_> - - 0 -1 670 -4.4177635572850704e-003 - - 4.6443006396293640e-001 -1.3389693200588226e-001 - <_> - - 0 -1 647 -2.4282713420689106e-003 - - 4.1310977935791016e-001 -1.3224220275878906e-001 - <_> - - 0 -1 686 1.0079141706228256e-002 - - -1.3342842459678650e-001 5.5696302652359009e-001 - <_> - - 0 -1 570 3.5632357001304626e-002 - - 9.1464981436729431e-002 -7.0863521099090576e-001 - <_> - - 0 -1 840 -1.9085695967078209e-003 - - 2.6823535561561584e-001 -1.9665902853012085e-001 - - <_> - 34 - -2.5052807331085205e+000 - - <_> - - 0 -1 268 1.5469970181584358e-002 - - -6.7369276285171509e-001 3.0393996834754944e-001 - <_> - - 0 -1 700 -2.2830318659543991e-002 - - 4.9829742312431335e-001 -3.5193654894828796e-001 - <_> - - 0 -1 521 1.8841657787561417e-002 - - -2.1037499606609344e-001 4.8866468667984009e-001 - <_> - - 0 -1 262 1.1541565880179405e-002 - - -1.8598809838294983e-001 5.2916365861892700e-001 - <_> - - 0 -1 219 -2.4122973904013634e-002 - - 5.2869701385498047e-001 -1.6163693368434906e-001 - <_> - - 0 -1 6 1.4711560681462288e-002 - - -2.5017279386520386e-001 3.2298168540000916e-001 - <_> - - 0 -1 520 -1.5706669539213181e-002 - - 5.0967657566070557e-001 -1.5732303261756897e-001 - <_> - - 0 -1 948 -4.1158739477396011e-003 - - 4.9462157487869263e-001 -1.2155625224113464e-001 - <_> - - 0 -1 770 -1.0694706812500954e-002 - - 6.1407995223999023e-001 -1.2956763803958893e-001 - <_> - - 0 -1 387 -3.6484465003013611e-002 - - 3.1439977884292603e-001 -2.2812500596046448e-001 - <_> - - 0 -1 345 5.4322574287652969e-002 - - -8.7467961013317108e-002 7.1243762969970703e-001 - <_> - - 0 -1 250 -8.9914854615926743e-003 - - 3.7887179851531982e-001 -1.7758503556251526e-001 - <_> - - 0 -1 52 1.5299601480364799e-002 - - 1.5142892301082611e-001 -5.4104751348495483e-001 - <_> - - 0 -1 792 -6.0345130041241646e-003 - - 3.8750106096267700e-001 -1.7849484086036682e-001 - <_> - - 0 -1 610 -2.0873975008726120e-003 - - -5.5879276990890503e-001 1.3142852485179901e-001 - <_> - - 0 -1 642 -2.0619889255613089e-003 - - -5.1919680833816528e-001 1.0321786254644394e-001 - <_> - - 0 -1 259 3.6544300615787506e-002 - - -1.6965624690055847e-001 3.9208900928497314e-001 - <_> - - 0 -1 382 1.4528267784044147e-003 - - -3.4218248724937439e-001 1.8518145382404327e-001 - <_> - - 0 -1 196 -2.6956547051668167e-002 - - -8.3279663324356079e-001 7.7962644398212433e-002 - <_> - - 0 -1 533 -1.0518556460738182e-002 - - 4.5597425103187561e-001 -1.4934070408344269e-001 - <_> - - 0 -1 740 5.4534617811441422e-003 - - -1.5347433090209961e-001 3.5846599936485291e-001 - <_> - - 0 -1 534 -5.6011183187365532e-003 - - 3.6314359307289124e-001 -1.5886513888835907e-001 - <_> - - 0 -1 927 1.0399374179542065e-002 - - -1.1159978061914444e-001 4.9891829490661621e-001 - <_> - - 0 -1 41 2.6076715439558029e-002 - - -2.1667334437370300e-001 2.5659701228141785e-001 - <_> - - 0 -1 715 -7.3732812888920307e-003 - - 5.8327084779739380e-001 -1.0727929323911667e-001 - <_> - - 0 -1 882 -5.6875580921769142e-003 - - 4.0847277641296387e-001 -1.2561751902103424e-001 - <_> - - 0 -1 891 1.3321589678525925e-002 - - -1.2537255883216858e-001 4.4824957847595215e-001 - <_> - - 0 -1 168 -1.8619614839553833e-001 - - -7.1703630685806274e-001 7.7993653714656830e-002 - <_> - - 0 -1 190 3.3796064555644989e-002 - - -1.3172915577888489e-001 4.1404765844345093e-001 - <_> - - 0 -1 530 4.0178038179874420e-003 - - -1.8571788072586060e-001 2.7401688694953918e-001 - <_> - - 0 -1 555 1.6669608652591705e-002 - - 7.5644508004188538e-002 -6.8869042396545410e-001 - <_> - - 0 -1 406 4.7584358602762222e-002 - - 8.2619942724704742e-002 -5.8818364143371582e-001 - <_> - - 0 -1 537 2.5073587894439697e-003 - - -1.4251622557640076e-001 3.3965954184532166e-001 - <_> - - 0 -1 638 1.4513431116938591e-002 - - -1.4366999268531799e-001 3.2603174448013306e-001 - - <_> - 42 - -2.4546041488647461e+000 - - <_> - - 0 -1 340 -9.4746887683868408e-002 - - 1.1788145639002323e-002 -7.5736826658248901e-001 - <_> - - 0 -1 577 -1.5985764563083649e-002 - - 3.4271994233131409e-001 -3.7916901707649231e-001 - <_> - - 0 -1 630 1.9708804786205292e-002 - - -2.2393602132797241e-001 4.9053853750228882e-001 - <_> - - 0 -1 96 1.6178630292415619e-002 - - -2.0412905514240265e-001 3.4104099869728088e-001 - <_> - - 0 -1 319 1.0606624186038971e-001 - - -1.0737416148185730e-001 6.7443412542343140e-001 - <_> - - 0 -1 83 -6.7316116765141487e-003 - - 3.4080076217651367e-001 -2.2706831991672516e-001 - <_> - - 0 -1 634 4.0689492598176003e-003 - - -1.4782951772212982e-001 4.1778662800788879e-001 - <_> - - 0 -1 686 -1.3378994539380074e-002 - - 6.8167924880981445e-001 -1.0507009923458099e-001 - <_> - - 0 -1 786 -1.8129471689462662e-002 - - 5.0995999574661255e-001 -1.3223616778850555e-001 - <_> - - 0 -1 646 -8.9250747114419937e-003 - - 5.0829160213470459e-001 -1.0886437445878983e-001 - <_> - - 0 -1 711 6.1906888149678707e-003 - - -1.1881013214588165e-001 4.9430772662162781e-001 - <_> - - 0 -1 575 -3.4704633057117462e-002 - - -6.8778192996978760e-001 9.2318676412105560e-002 - <_> - - 0 -1 189 -9.7849890589714050e-003 - - 2.0124578475952148e-001 -2.8525698184967041e-001 - <_> - - 0 -1 479 1.4655515551567078e-003 - - 1.0351686179637909e-001 -6.3454014062881470e-001 - <_> - - 0 -1 513 -3.5405270755290985e-002 - - -7.6147061586380005e-001 6.0781378298997879e-002 - <_> - - 0 -1 23 9.1620441526174545e-003 - - 8.2090407609939575e-002 -5.3804397583007813e-001 - <_> - - 0 -1 838 6.7096878774464130e-003 - - -1.1302943527698517e-001 4.6365195512771606e-001 - <_> - - 0 -1 820 -1.0268911719322205e-002 - - 5.8097857236862183e-001 -1.0859654098749161e-001 - <_> - - 0 -1 441 2.9750142246484756e-002 - - 9.3299955129623413e-002 -5.4268807172775269e-001 - <_> - - 0 -1 726 -5.5990684777498245e-003 - - 4.9949660897254944e-001 -1.0594012588262558e-001 - <_> - - 0 -1 714 4.8061953857541084e-003 - - -1.1477116495370865e-001 4.3569833040237427e-001 - <_> - - 0 -1 637 -4.0460027754306793e-002 - - -7.7711206674575806e-001 7.3132880032062531e-002 - <_> - - 0 -1 53 4.5344540849328041e-003 - - -1.6310065984725952e-001 3.0750447511672974e-001 - <_> - - 0 -1 479 -1.4339694753289223e-003 - - -5.2921229600906372e-001 8.8739573955535889e-002 - <_> - - 0 -1 396 -4.5565411448478699e-002 - - -7.4928385019302368e-001 4.8912040889263153e-002 - <_> - - 0 -1 330 -8.3342632278800011e-003 - - 4.6582534909248352e-001 -1.0161897540092468e-001 - <_> - - 0 -1 834 -1.0381949134171009e-002 - - 3.0994066596031189e-001 -1.3267418742179871e-001 - <_> - - 0 -1 831 1.6984764486551285e-002 - - -9.9871687591075897e-002 4.9527561664581299e-001 - <_> - - 0 -1 376 -1.3278885744512081e-003 - - 3.6983770132064819e-001 -1.1738168448209763e-001 - <_> - - 0 -1 760 -3.1804253812879324e-003 - - -8.9759206771850586e-001 4.3921347707509995e-002 - <_> - - 0 -1 828 -1.9149896688759327e-003 - - 1.9146692752838135e-001 -2.0268803834915161e-001 - <_> - - 0 -1 841 -1.8405792070552707e-003 - - 2.1319428086280823e-001 -1.8382850289344788e-001 - <_> - - 0 -1 259 3.5366363823413849e-002 - - -1.2205254286527634e-001 3.0300119519233704e-001 - <_> - - 0 -1 354 -3.7630870938301086e-003 - - 3.0492320656776428e-001 -1.2932489812374115e-001 - <_> - - 0 -1 732 -1.1243980843573809e-003 - - -4.9750825762748718e-001 8.0560393631458282e-002 - <_> - - 0 -1 749 -2.2356058470904827e-003 - - -6.7946660518646240e-001 5.2887793630361557e-002 - <_> - - 0 -1 536 -2.2717624902725220e-002 - - 4.2686942219734192e-001 -1.0260385274887085e-001 - <_> - - 0 -1 280 9.2372611165046692e-002 - - 7.9670898616313934e-002 -5.2335608005523682e-001 - <_> - - 0 -1 658 -1.0431142151355743e-001 - - -7.4446302652359009e-001 4.6288352459669113e-002 - <_> - - 0 -1 944 7.4872868135571480e-003 - - -1.1977240443229675e-001 3.1791850924491882e-001 - <_> - - 0 -1 228 -2.4358350783586502e-002 - - 1.7944122850894928e-001 -2.0157346129417419e-001 - <_> - - 0 -1 47 4.9624212086200714e-002 - - -1.0701860487461090e-001 3.7854740023612976e-001 - - <_> - 50 - -2.6502745151519775e+000 - - <_> - - 0 -1 431 2.1381884813308716e-002 - - -7.6310330629348755e-001 -7.8235723078250885e-002 - <_> - - 0 -1 623 9.7743803635239601e-003 - - -3.8874423503875732e-001 2.9614463448524475e-001 - <_> - - 0 -1 19 2.9336847364902496e-002 - - -2.1392610669136047e-001 4.4257661700248718e-001 - <_> - - 0 -1 645 1.2054111808538437e-002 - - -1.2168737500905991e-001 6.5890479087829590e-001 - <_> - - 0 -1 392 1.1729352176189423e-002 - - -1.2235984951257706e-001 4.8555457592010498e-001 - <_> - - 0 -1 588 -1.0436945594847202e-003 - - -6.1764669418334961e-001 1.1390741914510727e-001 - <_> - - 0 -1 71 -2.5775061920285225e-002 - - -6.0323065519332886e-001 1.2372459471225739e-001 - <_> - - 0 -1 872 -4.0599796921014786e-003 - - 3.5508742928504944e-001 -1.9819863140583038e-001 - <_> - - 0 -1 643 -1.9134972244501114e-002 - - 4.7154670953750610e-001 -1.4655594527721405e-001 - <_> - - 0 -1 483 6.5218633972108364e-003 - - 1.2207052111625671e-001 -6.0890328884124756e-001 - <_> - - 0 -1 757 -1.4126582071185112e-002 - - 3.3305764198303223e-001 -1.8242211639881134e-001 - <_> - - 0 -1 565 -8.3793615922331810e-003 - - 4.6099957823753357e-001 -1.0809499770402908e-001 - <_> - - 0 -1 455 -1.2584301875904202e-003 - - -5.1634973287582397e-001 1.0520447790622711e-001 - <_> - - 0 -1 203 -5.1234811544418335e-002 - - -7.5237458944320679e-001 5.3416907787322998e-002 - <_> - - 0 -1 584 1.6728173941373825e-002 - - -1.4094479382038116e-001 3.8169395923614502e-001 - <_> - - 0 -1 184 -4.5198453590273857e-003 - - 3.0100575089454651e-001 -1.6970130801200867e-001 - <_> - - 0 -1 686 1.0796479880809784e-002 - - -1.1680302023887634e-001 4.6733006834983826e-001 - <_> - - 0 -1 860 5.4673422127962112e-003 - - -1.3090577721595764e-001 3.4922021627426147e-001 - <_> - - 0 -1 902 6.2447679229080677e-003 - - -1.0570991784334183e-001 4.4209754467010498e-001 - <_> - - 0 -1 892 -8.6985006928443909e-003 - - 4.4582247734069824e-001 -1.1208640784025192e-001 - <_> - - 0 -1 86 5.8012232184410095e-002 - - 5.6753028184175491e-002 -7.8348731994628906e-001 - <_> - - 0 -1 158 -1.9159330055117607e-002 - - 2.1710830926895142e-001 -2.1206925809383392e-001 - <_> - - 0 -1 346 1.4331589639186859e-001 - - -6.5506041049957275e-002 8.3924996852874756e-001 - <_> - - 0 -1 327 -7.4841668829321861e-003 - - 4.4598889350891113e-001 -8.4189794957637787e-002 - <_> - - 0 -1 585 -3.1711272895336151e-002 - - -6.8312811851501465e-001 6.7834347486495972e-002 - <_> - - 0 -1 543 -1.0442961938679218e-003 - - -5.5244719982147217e-001 6.7180506885051727e-002 - <_> - - 0 -1 806 7.9750344157218933e-003 - - -1.4685039222240448e-001 2.7911156415939331e-001 - <_> - - 0 -1 775 9.7797568887472153e-003 - - -1.0445457696914673e-001 3.9583787322044373e-001 - <_> - - 0 -1 552 1.3288496062159538e-002 - - -1.1733970791101456e-001 3.2855752110481262e-001 - <_> - - 0 -1 528 -1.5873706433922052e-003 - - -6.4394426345825195e-001 5.9831541031599045e-002 - <_> - - 0 -1 538 4.1341055184602737e-003 - - -1.4766456186771393e-001 2.6551467180252075e-001 - <_> - - 0 -1 75 4.7469654236920178e-004 - - -2.4220904707908630e-001 1.7033961415290833e-001 - <_> - - 0 -1 780 1.6357531771063805e-002 - - -7.4449680745601654e-002 5.1059716939926147e-001 - <_> - - 0 -1 512 -3.0519803985953331e-002 - - -6.1357855796813965e-001 6.4341634511947632e-002 - <_> - - 0 -1 388 7.8287199139595032e-002 - - -9.1953203082084656e-002 4.5058310031890869e-001 - <_> - - 0 -1 426 2.6628788560628891e-002 - - -1.2955492734909058e-001 2.6968446373939514e-001 - <_> - - 0 -1 187 4.6231731772422791e-002 - - -8.5953183472156525e-002 4.0568628907203674e-001 - <_> - - 0 -1 248 -2.1837819367647171e-003 - - 2.9953801631927490e-001 -1.1820212751626968e-001 - <_> - - 0 -1 551 -7.5804558582603931e-004 - - -3.7147358059883118e-001 9.4888158142566681e-002 - <_> - - 0 -1 557 1.9615942612290382e-002 - - 7.7175915241241455e-002 -4.4386270642280579e-001 - <_> - - 0 -1 758 2.4940725415945053e-003 - - -1.3974383473396301e-001 2.5393635034561157e-001 - <_> - - 0 -1 363 2.0674080587923527e-003 - - -1.6579771041870117e-001 2.1392273902893066e-001 - <_> - - 0 -1 307 -7.3546944186091423e-003 - - 3.6300283670425415e-001 -9.0012907981872559e-002 - <_> - - 0 -1 822 -4.5008827000856400e-003 - - 2.7234289050102234e-001 -1.1618893593549728e-001 - <_> - - 0 -1 863 2.6555648073554039e-003 - - -1.3339768350124359e-001 2.3308847844600677e-001 - <_> - - 0 -1 713 6.8732965737581253e-003 - - 5.5398836731910706e-002 -5.7269740104675293e-001 - <_> - - 0 -1 541 -1.3697329908609390e-002 - - 2.9575833678245544e-001 -1.1314996331930161e-001 - <_> - - 0 -1 499 3.1671333126723766e-003 - - -1.5514299273490906e-001 2.1296086907386780e-001 - <_> - - 0 -1 74 3.9301186800003052e-002 - - 3.7740129977464676e-002 -8.7064558267593384e-001 - <_> - - 0 -1 438 5.0326753407716751e-003 - - 3.8631703704595566e-002 -6.6628092527389526e-001 - - <_> - 37 - -2.2784059047698975e+000 - - <_> - - 0 -1 284 -6.8839386105537415e-002 - - 3.8505528122186661e-002 -7.2149914503097534e-001 - <_> - - 0 -1 622 4.6330597251653671e-003 - - -2.7918994426727295e-001 5.7365530729293823e-001 - <_> - - 0 -1 769 -2.2597890347242355e-002 - - 5.4445463418960571e-001 -1.5445226430892944e-001 - <_> - - 0 -1 651 8.1817107275128365e-003 - - -1.3576838374137878e-001 5.7550191879272461e-001 - <_> - - 0 -1 663 1.9931606948375702e-002 - - -8.6917184293270111e-002 6.9753867387771606e-001 - <_> - - 0 -1 125 -1.6835592687129974e-002 - - 2.9909837245941162e-001 -2.1280159056186676e-001 - <_> - - 0 -1 811 1.3076540082693100e-002 - - -1.0236994922161102e-001 6.2949544191360474e-001 - <_> - - 0 -1 809 6.2367517966777086e-004 - - -2.5327861309051514e-001 2.4867674708366394e-001 - <_> - - 0 -1 609 1.2028571218252182e-003 - - 1.3679966330528259e-001 -6.4433771371841431e-001 - <_> - - 0 -1 272 1.3981487601995468e-002 - - -1.6557806730270386e-001 4.5303794741630554e-001 - <_> - - 0 -1 224 -1.5312875621020794e-002 - - 3.9820623397827148e-001 -1.4350801706314087e-001 - <_> - - 0 -1 502 -1.5315772034227848e-003 - - -4.6908026933670044e-001 1.1392414569854736e-001 - <_> - - 0 -1 586 -1.2515729293227196e-002 - - 4.2320749163627625e-001 -1.1944464594125748e-001 - <_> - - 0 -1 15 9.7349435091018677e-003 - - -2.1135130524635315e-001 2.4544763565063477e-001 - <_> - - 0 -1 578 8.9689850807189941e-002 - - 6.3219323754310608e-002 -6.4908504486083984e-001 - <_> - - 0 -1 683 -1.1183234862983227e-002 - - 4.5843327045440674e-001 -1.1428884416818619e-001 - <_> - - 0 -1 609 -1.3516875915229321e-003 - - -6.4720195531845093e-001 8.4523022174835205e-002 - <_> - - 0 -1 338 -3.5038506612181664e-003 - - 2.3362815380096436e-001 -2.2096297144889832e-001 - <_> - - 0 -1 676 -2.2360668517649174e-003 - - 3.7134209275245667e-001 -1.3087964057922363e-001 - <_> - - 0 -1 672 1.1475373059511185e-002 - - -9.9598348140716553e-002 4.7512599825859070e-001 - <_> - - 0 -1 693 -4.1206870228052139e-003 - - 3.7730529904365540e-001 -1.3486868143081665e-001 - <_> - - 0 -1 386 -1.0615207254886627e-002 - - 5.6163507699966431e-001 -8.6019508540630341e-002 - <_> - - 0 -1 912 1.3644450809806585e-003 - - 9.1222301125526428e-002 -5.7370740175247192e-001 - <_> - - 0 -1 211 -4.0528293699026108e-002 - - -7.1112531423568726e-001 5.6328568607568741e-002 - <_> - - 0 -1 598 -2.6628528721630573e-003 - - -5.7514446973800659e-001 6.4672872424125671e-002 - <_> - - 0 -1 804 1.6719421837478876e-003 - - -1.0937304049730301e-001 4.6537923812866211e-001 - <_> - - 0 -1 391 -7.5402572751045227e-002 - - -7.1920621395111084e-001 6.3679412007331848e-002 - <_> - - 0 -1 752 4.1434019804000854e-003 - - -1.2251268327236176e-001 3.5859704017639160e-001 - <_> - - 0 -1 656 1.0901679052039981e-003 - - 9.0319603681564331e-002 -4.9077373743057251e-001 - <_> - - 0 -1 548 9.7664669156074524e-003 - - -1.1890622228384018e-001 3.7789806723594666e-001 - <_> - - 0 -1 20 1.3128603994846344e-001 - - 9.1950289905071259e-002 -4.8608726263046265e-001 - <_> - - 0 -1 160 5.0870995037257671e-003 - - -3.0447667837142944e-001 1.5393695235252380e-001 - <_> - - 0 -1 695 1.1608509812504053e-003 - - 6.8402722477912903e-002 -5.7240855693817139e-001 - <_> - - 0 -1 463 -8.3964206278324127e-003 - - -5.6654578447341919e-001 6.1527676880359650e-002 - <_> - - 0 -1 853 -9.2788469046354294e-003 - - 5.3486818075180054e-001 -7.9918831586837769e-002 - <_> - - 0 -1 194 4.0858805179595947e-002 - - -6.0392327606678009e-002 5.3097963333129883e-001 - <_> - - 0 -1 875 1.1207645758986473e-002 - - -7.6901644468307495e-002 4.6894967555999756e-001 - - <_> - 43 - -2.3281440734863281e+000 - - <_> - - 0 -1 799 1.6143361106514931e-002 - - -5.9869056940078735e-001 5.8244681358337402e-001 - <_> - - 0 -1 316 -1.4507154002785683e-002 - - 2.7806228399276733e-001 -4.9415421485900879e-001 - <_> - - 0 -1 374 7.1883820928633213e-003 - - -2.1741701662540436e-001 3.9910879731178284e-001 - <_> - - 0 -1 601 -6.3224318437278271e-003 - - 4.9661168456077576e-001 -1.4284123480319977e-001 - <_> - - 0 -1 309 7.3951724916696548e-003 - - -1.3306735455989838e-001 5.4774791002273560e-001 - <_> - - 0 -1 620 5.7926801964640617e-003 - - -1.7347626388072968e-001 3.3524274826049805e-001 - <_> - - 0 -1 628 -8.1796385347843170e-003 - - 4.4341480731964111e-001 -1.1987159401178360e-001 - <_> - - 0 -1 644 3.1394532416015863e-003 - - -7.6400212943553925e-002 5.3360211849212646e-001 - <_> - - 0 -1 803 5.8109681122004986e-003 - - -1.1512878537178040e-001 4.4279125332832336e-001 - <_> - - 0 -1 787 -1.5480478759855032e-003 - - 4.6037110686302185e-001 -1.1494978517293930e-001 - <_> - - 0 -1 139 -3.2716423273086548e-002 - - -6.3845193386077881e-001 1.0197243094444275e-001 - <_> - - 0 -1 547 7.7531556598842144e-003 - - -2.0599687099456787e-001 2.4387344717979431e-001 - <_> - - 0 -1 312 1.0081732273101807e-001 - - -8.3307094871997833e-002 6.0089951753616333e-001 - <_> - - 0 -1 303 1.8065905198454857e-002 - - -8.5330262780189514e-002 5.1092010736465454e-001 - <_> - - 0 -1 227 1.2447070330381393e-002 - - 7.5348034501075745e-002 -7.0691746473312378e-001 - <_> - - 0 -1 26 1.1250283569097519e-002 - - -2.8157770633697510e-001 1.4611217379570007e-001 - <_> - - 0 -1 461 6.3989013433456421e-002 - - 5.5644407868385315e-002 -8.0775284767150879e-001 - <_> - - 0 -1 532 1.2037818320095539e-002 - - -1.6155177354812622e-001 2.6092258095741272e-001 - <_> - - 0 -1 531 -6.7794714123010635e-003 - - 4.1026043891906738e-001 -1.1167341470718384e-001 - <_> - - 0 -1 662 -6.8837543949484825e-003 - - 3.2057675719261169e-001 -1.2521778047084808e-001 - <_> - - 0 -1 568 -5.6298770941793919e-003 - - 3.7114644050598145e-001 -9.6118465065956116e-002 - <_> - - 0 -1 501 -1.4044784940779209e-002 - - 2.3923584818840027e-001 -1.4994344115257263e-001 - <_> - - 0 -1 209 -4.2415991425514221e-002 - - -7.0631259679794312e-001 5.3350944072008133e-002 - <_> - - 0 -1 633 1.1271872790530324e-003 - - -1.0572738200426102e-001 4.0252980589866638e-001 - <_> - - 0 -1 655 1.6750365030020475e-003 - - 6.3855156302452087e-002 -6.4757323265075684e-001 - <_> - - 0 -1 617 8.0223847180604935e-003 - - -1.3372656702995300e-001 3.1646871566772461e-001 - <_> - - 0 -1 302 -7.6437788084149361e-003 - - 3.6533179879188538e-001 -1.0963398963212967e-001 - <_> - - 0 -1 864 1.9589535077102482e-004 - - -1.8541762232780457e-001 1.9759687781333923e-001 - <_> - - 0 -1 235 -1.4239229494705796e-003 - - 2.4031755328178406e-001 -1.5697695314884186e-001 - <_> - - 0 -1 796 8.4227584302425385e-003 - - -8.4527194499969482e-002 4.2389118671417236e-001 - <_> - - 0 -1 797 -6.9234715774655342e-003 - - 3.8057762384414673e-001 -9.1416321694850922e-002 - <_> - - 0 -1 588 -1.8704653484746814e-003 - - -6.4613032341003418e-001 5.7689383625984192e-002 - <_> - - 0 -1 260 -2.7793958783149719e-002 - - 1.8243275582790375e-001 -1.8460384011268616e-001 - <_> - - 0 -1 780 -1.9853528589010239e-002 - - 7.5294703245162964e-001 -5.5559452623128891e-002 - <_> - - 0 -1 231 -9.3498677015304565e-002 - - -4.5725339651107788e-001 8.2762040197849274e-002 - <_> - - 0 -1 233 -5.1207490265369415e-002 - - -6.2534767389297485e-001 4.8502899706363678e-002 - <_> - - 0 -1 407 1.1575517710298300e-003 - - -1.9439546763896942e-001 1.6855290532112122e-001 - <_> - - 0 -1 24 -1.7103100195527077e-002 - - -5.6425410509109497e-001 5.8622561395168304e-002 - <_> - - 0 -1 731 -1.7147272592410445e-003 - - -4.4655910134315491e-001 6.4384043216705322e-002 - <_> - - 0 -1 704 -2.4417929351329803e-002 - - -4.3452578783035278e-001 7.0416867733001709e-002 - <_> - - 0 -1 572 3.7648410070687532e-003 - - -9.9933244287967682e-002 3.3911246061325073e-001 - <_> - - 0 -1 353 -1.0104919783771038e-002 - - 3.4629023075103760e-001 -8.8539779186248779e-002 - <_> - - 0 -1 712 5.0981063395738602e-003 - - 5.5100377649068832e-002 -6.0317450761795044e-001 - - <_> - 50 - -2.3480093479156494e+000 - - <_> - - 0 -1 343 -3.9326027035713196e-002 - - 1.5673981979489326e-002 -7.0409429073333740e-001 - <_> - - 0 -1 465 -8.4042851813137531e-004 - - 2.2963143885135651e-001 -4.5338386297225952e-001 - <_> - - 0 -1 768 1.2317419983446598e-002 - - -2.4286352097988129e-001 3.4696686267852783e-001 - <_> - - 0 -1 799 1.2345131486654282e-002 - - -1.2295535951852798e-001 5.7723248004913330e-001 - <_> - - 0 -1 334 -1.0166198946535587e-002 - - 3.6376756429672241e-001 -1.5697406232357025e-001 - <_> - - 0 -1 2 1.6935718012973666e-003 - - -1.6952106356620789e-001 3.3476638793945313e-001 - <_> - - 0 -1 355 2.4814529344439507e-002 - - -5.2621126174926758e-002 6.6913032531738281e-001 - <_> - - 0 -1 595 -7.9641379415988922e-003 - - 4.5105281472206116e-001 -1.0256277024745941e-001 - <_> - - 0 -1 923 -8.0780440475791693e-004 - - 3.4726995229721069e-001 -1.4011415839195251e-001 - <_> - - 0 -1 886 -4.2634975165128708e-002 - - 3.9254909753799438e-001 -9.5705978572368622e-002 - <_> - - 0 -1 645 -1.1309007182717323e-002 - - 5.3030455112457275e-001 -9.1078959405422211e-002 - <_> - - 0 -1 660 -5.3997440263628960e-003 - - 4.4208008050918579e-001 -8.9016474783420563e-002 - <_> - - 0 -1 922 8.0034844577312469e-003 - - -7.7505834400653839e-002 4.6123340725898743e-001 - <_> - - 0 -1 70 -2.1929096430540085e-002 - - -5.1349323987960815e-001 8.5143901407718658e-002 - <_> - - 0 -1 457 -1.1585029773414135e-002 - - -5.9067147970199585e-001 5.3899347782135010e-002 - <_> - - 0 -1 940 1.5154580585658550e-002 - - 4.7417007386684418e-002 -6.2853425741195679e-001 - <_> - - 0 -1 425 3.6063842475414276e-002 - - 7.1829482913017273e-002 -5.8649080991744995e-001 - <_> - - 0 -1 377 -1.2515364214777946e-003 - - 1.8929110467433929e-001 -1.8165642023086548e-001 - <_> - - 0 -1 443 -1.1191211640834808e-002 - - -6.1874210834503174e-001 6.0382697731256485e-002 - <_> - - 0 -1 892 -1.0454729199409485e-002 - - 3.9079114794731140e-001 -9.7279526293277740e-002 - <_> - - 0 -1 474 -1.3280634302645922e-003 - - -4.3977957963943481e-001 8.6543120443820953e-002 - <_> - - 0 -1 884 -6.5715098753571510e-003 - - 3.8899809122085571e-001 -9.9507912993431091e-002 - <_> - - 0 -1 802 -4.8141209408640862e-003 - - 2.7240043878555298e-001 -1.1941614747047424e-001 - <_> - - 0 -1 611 -4.9042850732803345e-003 - - 3.4554582834243774e-001 -1.0440594702959061e-001 - <_> - - 0 -1 589 4.1131088510155678e-003 - - 6.2906242907047272e-002 -6.3577443361282349e-001 - <_> - - 0 -1 564 -1.4377808198332787e-002 - - 2.6160046458244324e-001 -1.3126534223556519e-001 - <_> - - 0 -1 659 -7.9730991274118423e-003 - - 2.8418624401092529e-001 -1.1802970618009567e-001 - <_> - - 0 -1 632 1.2750998139381409e-002 - - -1.2246144562959671e-001 2.9994803667068481e-001 - <_> - - 0 -1 550 1.2405896559357643e-003 - - 6.8871341645717621e-002 -4.7651088237762451e-001 - <_> - - 0 -1 864 1.9797214190475643e-004 - - -1.8686980009078979e-001 1.7104914784431458e-001 - <_> - - 0 -1 773 -5.9868812561035156e-002 - - -7.4281668663024902e-001 4.0871854871511459e-002 - <_> - - 0 -1 20 1.7117856442928314e-001 - - 3.9691232144832611e-002 -6.0849416255950928e-001 - <_> - - 0 -1 583 -6.0836132615804672e-003 - - 2.6707777380943298e-001 -1.1131492257118225e-001 - <_> - - 0 -1 37 -1.6043212264776230e-002 - - -7.1336209774017334e-001 4.1814558207988739e-002 - <_> - - 0 -1 721 -3.5733331460505724e-003 - - -5.9263443946838379e-001 4.1711769998073578e-002 - <_> - - 0 -1 251 4.8501053825020790e-003 - - -1.7411983013153076e-001 1.6949725151062012e-001 - <_> - - 0 -1 932 -2.4870643392205238e-003 - - 3.5093098878860474e-001 -8.0437563359737396e-002 - <_> - - 0 -1 679 5.4334278684109449e-004 - - 7.2410888969898224e-002 -4.1958642005920410e-001 - <_> - - 0 -1 399 -6.7315630614757538e-002 - - -6.9776558876037598e-001 3.6959640681743622e-002 - <_> - - 0 -1 848 -1.5508693642914295e-002 - - 4.7738686203956604e-001 -6.2411848455667496e-002 - <_> - - 0 -1 240 9.8924851045012474e-003 - - 3.8795292377471924e-002 -7.5121307373046875e-001 - <_> - - 0 -1 626 -1.9304422894492745e-003 - - -6.6471725702285767e-001 3.2116148620843887e-002 - <_> - - 0 -1 877 -1.0774823604151607e-003 - - 1.5463894605636597e-001 -1.6525565087795258e-001 - <_> - - 0 -1 938 2.0380350761115551e-003 - - -8.5884653031826019e-002 3.1941527128219604e-001 - <_> - - 0 -1 296 2.6121754199266434e-003 - - 4.5351639389991760e-002 -6.1592888832092285e-001 - <_> - - 0 -1 360 -2.4895587936043739e-002 - - 1.9662404060363770e-001 -1.3288022577762604e-001 - <_> - - 0 -1 540 9.4352923333644867e-003 - - -7.7825613319873810e-002 3.3150759339332581e-001 - <_> - - 0 -1 475 3.4190870821475983e-002 - - 4.5858692377805710e-002 -6.1435216665267944e-001 - <_> - - 0 -1 685 -5.5097185075283051e-002 - - -4.9892291426658630e-001 4.7548539936542511e-002 - <_> - - 0 -1 287 3.8485769182443619e-003 - - -2.1700088679790497e-001 1.1295168846845627e-001 - - <_> - 61 - -2.4126377105712891e+000 - - <_> - - 0 -1 344 -9.5382995903491974e-002 - - -4.5056518167257309e-002 -7.4383479356765747e-001 - <_> - - 0 -1 696 -1.7865713685750961e-002 - - 2.4200576543807983e-001 -3.4111279249191284e-001 - <_> - - 0 -1 66 -1.7819929867982864e-002 - - -5.8606600761413574e-001 1.0216028243303299e-001 - <_> - - 0 -1 369 1.1929270811378956e-002 - - -1.3082079589366913e-001 4.3198430538177490e-001 - <_> - - 0 -1 677 -2.1402675658464432e-002 - - -7.3706889152526855e-001 7.2057045996189117e-002 - <_> - - 0 -1 880 2.0411442965269089e-003 - - -1.9257834553718567e-001 2.6624691486358643e-001 - <_> - - 0 -1 560 -9.2984475195407867e-003 - - 3.9710593223571777e-001 -1.1857020854949951e-001 - <_> - - 0 -1 870 -4.1869636625051498e-003 - - 4.2139983177185059e-001 -1.1628517508506775e-001 - <_> - - 0 -1 173 1.0577079653739929e-001 - - 6.7847460508346558e-002 -7.5728106498718262e-001 - <_> - - 0 -1 458 2.3821401409804821e-003 - - -1.7424334585666656e-001 2.4778348207473755e-001 - <_> - - 0 -1 365 1.7058081924915314e-002 - - -1.0784839093685150e-001 4.7589403390884399e-001 - <_> - - 0 -1 607 8.4047149866819382e-003 - - -1.6299639642238617e-001 2.5596112012863159e-001 - <_> - - 0 -1 669 6.4883893355727196e-003 - - -1.0720382630825043e-001 3.8739699125289917e-001 - <_> - - 0 -1 719 1.3821164146065712e-002 - - -1.0847893357276917e-001 3.7734055519104004e-001 - <_> - - 0 -1 730 6.3344044610857964e-004 - - 1.0369951277971268e-001 -4.1177383065223694e-001 - <_> - - 0 -1 649 2.5448631495237350e-002 - - -1.0093591362237930e-001 4.0250420570373535e-001 - <_> - - 0 -1 628 -6.6858739592134953e-003 - - 3.2515993714332581e-001 -1.2071736156940460e-001 - <_> - - 0 -1 847 1.5770105645060539e-002 - - -8.7370425462722778e-002 4.2094638943672180e-001 - <_> - - 0 -1 442 -6.1724921688437462e-003 - - 3.5812416672706604e-001 -9.5346152782440186e-002 - <_> - - 0 -1 456 -2.5777951814234257e-003 - - -4.5544171333312988e-001 9.0092077851295471e-002 - <_> - - 0 -1 535 -2.6305086910724640e-002 - - -6.4864850044250488e-001 4.1219502687454224e-002 - <_> - - 0 -1 542 8.0740137491375208e-004 - - 4.7109395265579224e-002 -6.0955244302749634e-001 - <_> - - 0 -1 68 1.4135822653770447e-002 - - -1.9197317957878113e-001 1.6882354021072388e-001 - <_> - - 0 -1 294 -9.4971470534801483e-003 - - 3.6509966850280762e-001 -9.9222034215927124e-002 - <_> - - 0 -1 542 -7.4699660763144493e-004 - - -4.7985881567001343e-001 6.8735912442207336e-002 - <_> - - 0 -1 500 1.6889899969100952e-002 - - -1.3929726183414459e-001 2.3301121592521667e-001 - <_> - - 0 -1 779 2.3306370712816715e-003 - - -8.4623180329799652e-002 3.3656537532806396e-001 - <_> - - 0 -1 778 8.7781455367803574e-003 - - -1.1189370602369308e-001 2.9142591357231140e-001 - <_> - - 0 -1 99 -1.5908680856227875e-002 - - 1.9325265288352966e-001 -1.6028961539268494e-001 - <_> - - 0 -1 744 1.9255496561527252e-002 - - 7.6108239591121674e-002 -3.9211651682853699e-001 - <_> - - 0 -1 914 5.0490582361817360e-003 - - -8.9932329952716827e-002 3.1994494795799255e-001 - <_> - - 0 -1 603 -2.4455685634166002e-003 - - -6.3004231452941895e-001 4.6506922692060471e-002 - <_> - - 0 -1 89 6.4034629613161087e-003 - - -1.2222797423601151e-001 2.2714875638484955e-001 - <_> - - 0 -1 88 -3.1981021165847778e-003 - - 2.8711226582527161e-001 -1.0478579252958298e-001 - <_> - - 0 -1 732 1.7579109407961369e-003 - - 5.1840141415596008e-002 -5.7752221822738647e-001 - <_> - - 0 -1 526 -2.6384353637695313e-002 - - -7.5548434257507324e-001 3.1215203925967216e-002 - <_> - - 0 -1 482 1.3470241427421570e-001 - - 4.5115962624549866e-002 -4.8610612750053406e-001 - <_> - - 0 -1 855 -2.5868147611618042e-002 - - -4.9144035577774048e-001 5.0334099680185318e-002 - <_> - - 0 -1 164 1.0719317197799683e-001 - - -1.4267221093177795e-001 1.7969062924385071e-001 - <_> - - 0 -1 781 -1.5155045315623283e-002 - - 4.2710477113723755e-001 -6.6483244299888611e-002 - <_> - - 0 -1 728 -3.8210965692996979e-002 - - -6.1093688011169434e-001 4.7181066125631332e-002 - <_> - - 0 -1 257 1.7748951911926270e-002 - - -6.6903516650199890e-002 4.1605830192565918e-001 - <_> - - 0 -1 272 -1.3678016141057014e-002 - - 3.2274204492568970e-001 -8.7739549577236176e-002 - <_> - - 0 -1 81 1.4629539102315903e-002 - - -1.1059324443340302e-001 2.4449653923511505e-001 - <_> - - 0 -1 754 6.4607188105583191e-003 - - -8.1396102905273438e-002 3.1605172157287598e-001 - <_> - - 0 -1 574 -8.4974901983514428e-004 - - 1.5621511638164520e-001 -1.6912016272544861e-001 - <_> - - 0 -1 332 -6.4049977809190750e-003 - - 2.2254464030265808e-001 -1.1970910429954529e-001 - <_> - - 0 -1 410 4.8453146591782570e-003 - - -1.0080187022686005e-001 2.5552451610565186e-001 - <_> - - 0 -1 694 1.0576892644166946e-002 - - -7.1883767843246460e-002 3.2368022203445435e-001 - <_> - - 0 -1 652 -2.0271514076739550e-003 - - 2.1205350756645203e-001 -1.4773385226726532e-001 - <_> - - 0 -1 379 1.2130783870816231e-003 - - -2.2663643956184387e-001 1.0520290583372116e-001 - <_> - - 0 -1 419 -7.9384088516235352e-002 - - -4.4897699356079102e-001 4.9417987465858459e-002 - <_> - - 0 -1 31 4.3571349233388901e-003 - - 3.1063990667462349e-002 -6.9149738550186157e-001 - <_> - - 0 -1 750 1.9707549363374710e-003 - - 4.4843826442956924e-002 -4.5625826716423035e-001 - <_> - - 0 -1 788 6.2818843871355057e-003 - - -9.5382869243621826e-002 2.6746883988380432e-001 - <_> - - 0 -1 789 -1.3252656906843185e-002 - - 4.0820258855819702e-001 -6.0815874487161636e-002 - <_> - - 0 -1 60 5.0364276394248009e-003 - - 9.0342856943607330e-002 -2.5253733992576599e-001 - <_> - - 0 -1 492 8.9537240564823151e-003 - - 3.2092411071062088e-002 -7.0339488983154297e-001 - <_> - - 0 -1 546 6.8814970552921295e-002 - - -7.1046918630599976e-002 3.6507198214530945e-001 - <_> - - 0 -1 544 -1.2149440124630928e-002 - - 3.3089646697044373e-001 -6.6771849989891052e-002 - <_> - - 0 -1 50 1.9094728631898761e-003 - - -1.3490848243236542e-001 1.6960476338863373e-001 - - <_> - 72 - -2.3490672111511230e+000 - - <_> - - 0 -1 371 1.4795187860727310e-002 - - -7.0123827457427979e-001 -2.0484872162342072e-002 - <_> - - 0 -1 612 2.6377664878964424e-002 - - -3.5620382428169250e-001 2.4889869987964630e-001 - <_> - - 0 -1 165 -1.1034142225980759e-002 - - 2.0675517618656158e-001 -3.3259147405624390e-001 - <_> - - 0 -1 692 -9.2857871204614639e-003 - - 4.4594430923461914e-001 -1.4160791039466858e-001 - <_> - - 0 -1 313 1.1126287281513214e-001 - - -7.9181507229804993e-002 6.0241782665252686e-001 - <_> - - 0 -1 751 3.0388862360268831e-003 - - -1.9209611415863037e-001 2.5241580605506897e-001 - <_> - - 0 -1 874 -2.0801391452550888e-002 - - 4.0978202223777771e-001 -9.8037041723728180e-002 - <_> - - 0 -1 892 1.0280778631567955e-002 - - -9.6344605088233948e-002 4.6578553318977356e-001 - <_> - - 0 -1 894 -5.4509467445313931e-003 - - 3.7336015701293945e-001 -1.0564301162958145e-001 - <_> - - 0 -1 376 -1.8031136132776737e-003 - - 3.5322296619415283e-001 -1.2390857189893723e-001 - <_> - - 0 -1 763 -4.7199074178934097e-003 - - 4.1106048226356506e-001 -9.3251600861549377e-002 - <_> - - 0 -1 323 -6.1694663017988205e-003 - - 3.3520108461380005e-001 -1.2836365401744843e-001 - <_> - - 0 -1 83 -6.9639906287193298e-003 - - 2.1963912248611450e-001 -1.8814907968044281e-001 - <_> - - 0 -1 683 -1.2535721994936466e-002 - - 3.8960403203964233e-001 -9.2547819018363953e-002 - <_> - - 0 -1 690 -1.6924859955906868e-002 - - 3.6892804503440857e-001 -9.4779089093208313e-002 - <_> - - 0 -1 54 1.6596701461821795e-003 - - -1.9850541651248932e-001 1.8709312379360199e-001 - <_> - - 0 -1 55 2.7687277644872665e-002 - - 7.0031657814979553e-002 -4.7238609194755554e-001 - <_> - - 0 -1 120 -1.1841375380754471e-002 - - 2.6792368292808533e-001 -1.2015427649021149e-001 - <_> - - 0 -1 261 -1.1048562824726105e-002 - - 3.6024233698844910e-001 -1.0290746390819550e-001 - <_> - - 0 -1 7 -6.2395762652158737e-002 - - -5.7112109661102295e-001 6.2251534312963486e-002 - <_> - - 0 -1 115 1.6063985228538513e-001 - - -7.0866517722606659e-002 4.5665851235389709e-001 - <_> - - 0 -1 232 2.1094676852226257e-001 - - 4.6763692051172256e-002 -7.0770156383514404e-001 - <_> - - 0 -1 358 -3.6897901445627213e-003 - - 3.7905600666999817e-001 -8.1804625689983368e-002 - <_> - - 0 -1 434 1.9055651500821114e-002 - - -1.0166674852371216e-001 2.7208462357521057e-001 - <_> - - 0 -1 947 -2.0279071759432554e-003 - - 3.1354761123657227e-001 -8.6894899606704712e-002 - <_> - - 0 -1 571 1.0916183236986399e-003 - - 7.6082363724708557e-002 -3.2986941933631897e-001 - <_> - - 0 -1 405 -5.5616937577724457e-002 - - -5.0169217586517334e-001 4.7203768044710159e-002 - <_> - - 0 -1 600 -2.1859644912183285e-003 - - -4.1108477115631104e-001 5.6136883795261383e-002 - <_> - - 0 -1 422 6.1606548726558685e-002 - - 3.8405187427997589e-002 -6.3146471977233887e-001 - <_> - - 0 -1 562 4.4989854097366333e-002 - - -7.8799270093441010e-002 3.5685274004936218e-001 - <_> - - 0 -1 900 1.4128099195659161e-002 - - -5.1783677190542221e-002 4.5928877592086792e-001 - <_> - - 0 -1 503 -2.2787526249885559e-002 - - -4.2496410012245178e-001 5.9822574257850647e-002 - <_> - - 0 -1 82 1.0302955284714699e-002 - - -1.5051785111427307e-001 1.8300771713256836e-001 - <_> - - 0 -1 733 -1.7985476879402995e-003 - - -5.0104391574859619e-001 5.1810134202241898e-002 - <_> - - 0 -1 783 -1.0919184423983097e-003 - - 1.6831028461456299e-001 -1.5063883364200592e-001 - <_> - - 0 -1 221 6.8745255470275879e-002 - - 2.5853699073195457e-002 -8.8202834129333496e-001 - <_> - - 0 -1 92 8.0964900553226471e-003 - - -1.4373345673084259e-001 1.6309750080108643e-001 - <_> - - 0 -1 669 -9.0615758672356606e-003 - - 4.4120463728904724e-001 -5.8328684419393539e-002 - <_> - - 0 -1 780 1.5157302841544151e-002 - - -6.2339264899492264e-002 3.7585461139678955e-001 - <_> - - 0 -1 852 -9.6248798072338104e-003 - - 3.3618140220642090e-001 -7.2854258120059967e-002 - <_> - - 0 -1 264 -2.6485668495297432e-003 - - -3.6842566728591919e-001 7.0426821708679199e-002 - <_> - - 0 -1 793 -2.5783948600292206e-002 - - -4.3915954232215881e-001 4.4346898794174194e-002 - <_> - - 0 -1 691 3.8045123219490051e-002 - - 2.0367870107293129e-002 -9.1361635923385620e-001 - <_> - - 0 -1 885 6.5762884914875031e-003 - - -7.7705778181552887e-002 2.7798372507095337e-001 - <_> - - 0 -1 527 1.4522124081850052e-002 - - -1.5169607102870941e-001 1.6986666619777679e-001 - <_> - - 0 -1 263 -2.9386302456259727e-002 - - 1.5261377394199371e-001 -1.4140434563159943e-001 - <_> - - 0 -1 252 -1.8363123759627342e-002 - - 5.7111293077468872e-001 -4.9465496093034744e-002 - <_> - - 0 -1 674 -5.1241345703601837e-002 - - -5.5350369215011597e-001 4.6895623207092285e-002 - <_> - - 0 -1 277 2.9151788912713528e-003 - - -9.0461745858192444e-002 2.4859617650508881e-001 - <_> - - 0 -1 749 1.7963855061680079e-003 - - 4.5411933213472366e-002 -5.4377090930938721e-001 - <_> - - 0 -1 198 4.7771027311682701e-003 - - -1.8385021388530731e-001 1.1213029175996780e-001 - <_> - - 0 -1 850 -1.1631837114691734e-003 - - 1.9307336211204529e-001 -1.0863032937049866e-001 - <_> - - 0 -1 739 -6.7155435681343079e-003 - - 3.4966903924942017e-001 -5.8376740664243698e-002 - <_> - - 0 -1 195 -6.6494196653366089e-002 - - 3.4874725341796875e-001 -5.7571310549974442e-002 - <_> - - 0 -1 750 -1.8951734527945518e-003 - - -5.0567263364791870e-001 4.2631916701793671e-002 - <_> - - 0 -1 832 -4.3506296351552010e-003 - - -5.0467538833618164e-001 3.8686964660882950e-002 - <_> - - 0 -1 725 5.5216029286384583e-003 - - -8.3722010254859924e-002 2.5723373889923096e-001 - <_> - - 0 -1 727 1.4174621552228928e-002 - - -5.2497696131467819e-002 4.3525427579879761e-001 - <_> - - 0 -1 25 1.1252675205469131e-002 - - -1.3312049210071564e-001 1.6167336702346802e-001 - <_> - - 0 -1 67 7.9240947961807251e-003 - - -1.1959484219551086e-001 1.6835211217403412e-001 - <_> - - 0 -1 784 1.0558717185631394e-003 - - -1.2297991663217545e-001 1.5906786918640137e-001 - <_> - - 0 -1 615 4.5906797051429749e-002 - - 3.6611214280128479e-002 -5.4427564144134521e-001 - <_> - - 0 -1 702 -9.5631275326013565e-003 - - 2.2376507520675659e-001 -9.2235445976257324e-002 - <_> - - 0 -1 290 -1.7671093344688416e-002 - - -6.2817609310150146e-001 3.3949319273233414e-002 - <_> - - 0 -1 764 -1.7188221681863070e-003 - - 2.0224046707153320e-001 -1.0232327878475189e-001 - <_> - - 0 -1 367 1.5140373259782791e-002 - - -5.6504372507333755e-002 3.4895980358123779e-001 - <_> - - 0 -1 366 -2.8949489817023277e-002 - - 3.1860530376434326e-001 -6.4782403409481049e-002 - <_> - - 0 -1 937 1.1647377163171768e-002 - - -3.6289941519498825e-002 5.4892385005950928e-001 - <_> - - 0 -1 741 -7.8217741101980209e-003 - - 2.0226673781871796e-001 -9.2000789940357208e-002 - <_> - - 0 -1 800 -8.4432046860456467e-003 - - 1.7921546101570129e-001 -1.0415823757648468e-001 - <_> - - 0 -1 854 -1.5566672198474407e-002 - - 3.9981749653816223e-001 -5.3077172487974167e-002 - <_> - - 0 -1 587 -1.2464943341910839e-002 - - 2.2552676498889923e-001 -9.0897649526596069e-002 - - <_> - 77 - -2.2761957645416260e+000 - - <_> - - 0 -1 402 -2.0046032965183258e-002 - - 2.7538803219795227e-001 -6.1105114221572876e-001 - <_> - - 0 -1 430 9.1837458312511444e-003 - - -4.0790805220603943e-001 2.0902955532073975e-001 - <_> - - 0 -1 21 4.2203110642731190e-003 - - -2.1331593394279480e-001 2.8156790137290955e-001 - <_> - - 0 -1 673 -1.4000188559293747e-002 - - 5.4547309875488281e-001 -9.6670299768447876e-002 - <_> - - 0 -1 926 -7.1464567445218563e-003 - - 4.6416798233985901e-001 -9.1218575835227966e-002 - <_> - - 0 -1 389 -1.0070230066776276e-001 - - -6.6349637508392334e-001 7.1100234985351563e-002 - <_> - - 0 -1 95 1.0696215555071831e-002 - - -1.9745405018329620e-001 2.0773608982563019e-001 - <_> - - 0 -1 149 -3.5202980041503906e-002 - - -7.6735103130340576e-001 5.0265740603208542e-002 - <_> - - 0 -1 311 7.4009604752063751e-002 - - -7.4828110635280609e-002 5.6469208002090454e-001 - <_> - - 0 -1 849 3.9156894199550152e-003 - - -1.3954170048236847e-001 2.7583837509155273e-001 - <_> - - 0 -1 335 -5.3920033387839794e-003 - - 3.0497005581855774e-001 -1.1606794595718384e-001 - <_> - - 0 -1 861 3.7412224337458611e-003 - - -7.9430311918258667e-002 4.4621026515960693e-001 - <_> - - 0 -1 868 7.1699996478855610e-003 - - -1.0092698037624359e-001 3.4257224202156067e-001 - <_> - - 0 -1 256 2.1885338425636292e-001 - - 5.8548614382743835e-002 -6.5264624357223511e-001 - <_> - - 0 -1 771 -5.3951903246343136e-003 - - 2.4228222668170929e-001 -1.3535094261169434e-001 - <_> - - 0 -1 695 -1.1738229077309370e-003 - - -4.7875782847404480e-001 6.8366907536983490e-002 - <_> - - 0 -1 666 2.1457400172948837e-002 - - -7.1118980646133423e-002 4.5637446641921997e-001 - <_> - - 0 -1 309 1.2115674093365669e-002 - - -5.8202955871820450e-002 4.6163806319236755e-001 - <_> - - 0 -1 273 -1.8007406964898109e-002 - - 3.2520860433578491e-001 -8.0533631145954132e-002 - <_> - - 0 -1 837 -1.2486811727285385e-002 - - 4.1279473900794983e-001 -5.1714207977056503e-002 - <_> - - 0 -1 820 -6.8574929609894753e-003 - - 2.6760685443878174e-001 -1.0764075815677643e-001 - <_> - - 0 -1 823 1.5099495649337769e-002 - - -7.4429087340831757e-002 4.6331611275672913e-001 - <_> - - 0 -1 418 5.6357895955443382e-003 - - 4.3343700468540192e-002 -6.8444931507110596e-001 - <_> - - 0 -1 496 -3.8149006664752960e-002 - - -5.0210982561111450e-001 4.6030189841985703e-002 - <_> - - 0 -1 488 6.9609917700290680e-002 - - -1.1487975716590881e-001 2.4527166783809662e-001 - <_> - - 0 -1 718 -1.4793819282203913e-003 - - -4.9200877547264099e-001 5.0612244755029678e-002 - <_> - - 0 -1 279 1.5615550801157951e-003 - - -1.4539672434329987e-001 1.8345473706722260e-001 - <_> - - 0 -1 444 -7.9339537769556046e-003 - - -6.9242167472839355e-001 3.2313633710145950e-002 - <_> - - 0 -1 69 3.8695998489856720e-002 - - 3.5442691296339035e-002 -5.8349174261093140e-001 - <_> - - 0 -1 27 3.4779291599988937e-002 - - -1.5399172902107239e-001 1.6672950983047485e-001 - <_> - - 0 -1 411 1.0367618873715401e-002 - - -1.0087994486093521e-001 2.7080667018890381e-001 - <_> - - 0 -1 924 -1.2352936901152134e-003 - - 2.6111871004104614e-001 -8.5407368838787079e-002 - <_> - - 0 -1 641 -3.8098993245512247e-003 - - -6.4659863710403442e-001 3.7423413246870041e-002 - <_> - - 0 -1 137 1.4491343870759010e-002 - - 1.9647786393761635e-002 -9.1479778289794922e-001 - <_> - - 0 -1 394 -8.3385318517684937e-002 - - -7.1166336536407471e-001 2.2575991228222847e-002 - <_> - - 0 -1 780 -1.9848600029945374e-002 - - 5.5954068899154663e-001 -4.1730873286724091e-002 - <_> - - 0 -1 241 -2.0697467029094696e-002 - - 3.3735945820808411e-001 -6.2523342669010162e-002 - <_> - - 0 -1 300 -1.1017382144927979e-002 - - 2.6414296030998230e-001 -1.0402554273605347e-001 - <_> - - 0 -1 78 2.7749380096793175e-003 - - -1.7511576414108276e-001 1.1715058237314224e-001 - <_> - - 0 -1 648 -1.5251778066158295e-002 - - 4.3819862604141235e-001 -4.5249339193105698e-002 - <_> - - 0 -1 108 1.1041477322578430e-002 - - 3.4502815455198288e-002 -6.0594552755355835e-001 - <_> - - 0 -1 112 -1.2095808982849121e-002 - - 2.3661912977695465e-001 -9.1371931135654449e-002 - <_> - - 0 -1 157 2.7025766670703888e-002 - - -8.9995227754116058e-002 2.4357070028781891e-001 - <_> - - 0 -1 253 2.0237984135746956e-002 - - -8.2986801862716675e-002 2.5786581635475159e-001 - <_> - - 0 -1 179 -2.5734171271324158e-002 - - -8.0328714847564697e-001 2.3963116109371185e-002 - <_> - - 0 -1 898 -7.0260283537209034e-003 - - 3.1706759333610535e-001 -6.8345665931701660e-002 - <_> - - 0 -1 785 8.9800115674734116e-003 - - -1.0068616271018982e-001 1.8837621808052063e-001 - <_> - - 0 -1 16 7.1165725588798523e-002 - - 2.9139470309019089e-002 -7.1776688098907471e-001 - <_> - - 0 -1 491 1.2540835887193680e-002 - - 2.8786318376660347e-002 -5.7155269384384155e-001 - <_> - - 0 -1 686 1.4826809987425804e-002 - - -5.3431484848260880e-002 3.7567591667175293e-001 - <_> - - 0 -1 756 -2.0885471254587173e-002 - - -5.5986213684082031e-001 3.5628255456686020e-002 - <_> - - 0 -1 395 -4.4493626803159714e-002 - - -6.0325270891189575e-001 2.8809506446123123e-002 - <_> - - 0 -1 469 -1.1605422478169203e-003 - - 1.3856917619705200e-001 -1.3231372833251953e-001 - <_> - - 0 -1 10 1.0227273404598236e-001 - - -6.3532300293445587e-002 3.1242474913597107e-001 - <_> - - 0 -1 134 -2.9290396720170975e-002 - - 1.9631637632846832e-001 -1.1773347854614258e-001 - <_> - - 0 -1 249 -2.7526013553142548e-002 - - -5.4162657260894775e-001 3.7284608930349350e-002 - <_> - - 0 -1 192 -6.8295732140541077e-002 - - -6.8661803007125854e-001 2.2030472755432129e-002 - <_> - - 0 -1 65 3.7252403795719147e-002 - - 1.4609245583415031e-002 -9.1920310258865356e-001 - <_> - - 0 -1 748 1.5438124537467957e-003 - - 3.9837431162595749e-002 -3.8516902923583984e-001 - <_> - - 0 -1 361 1.8146948888897896e-002 - - -8.1836819648742676e-002 2.2508986294269562e-001 - <_> - - 0 -1 153 -2.9618924017995596e-003 - - 1.7523658275604248e-001 -1.1428176611661911e-001 - <_> - - 0 -1 591 1.8150422722101212e-002 - - 3.3836413174867630e-002 -5.2116078138351440e-001 - <_> - - 0 -1 4 -3.3758711069822311e-002 - - 3.9958250522613525e-001 -4.5763287693262100e-002 - <_> - - 0 -1 79 -1.4841533266007900e-003 - - 1.6825924813747406e-001 -1.0908807814121246e-001 - <_> - - 0 -1 255 1.3028753455728292e-003 - - -1.0276191681623459e-001 1.8539939820766449e-001 - <_> - - 0 -1 920 1.0365190915763378e-002 - - -3.8271062076091766e-002 4.6489492058753967e-001 - <_> - - 0 -1 917 6.0222409665584564e-003 - - -6.5577961504459381e-002 2.7879896759986877e-001 - <_> - - 0 -1 105 1.0119758546352386e-001 - - -2.8418583795428276e-002 5.9041601419448853e-001 - <_> - - 0 -1 9 7.1856275200843811e-002 - - 2.8918648138642311e-002 -7.6654183864593506e-001 - <_> - - 0 -1 921 2.6606030762195587e-002 - - -6.2962368130683899e-002 3.0662769079208374e-001 - <_> - - 0 -1 384 1.5946386381983757e-002 - - -5.4566886276006699e-002 3.1234565377235413e-001 - <_> - - 0 -1 493 -8.2057155668735504e-003 - - 2.1779660880565643e-001 -8.3498664200305939e-002 - <_> - - 0 -1 270 1.2946184724569321e-002 - - 3.5179842263460159e-002 -5.1891100406646729e-001 - <_> - - 0 -1 141 -8.8035371154546738e-003 - - -4.6259808540344238e-001 3.4376677125692368e-002 - <_> - - 0 -1 477 -4.6518794260919094e-004 - - -2.6353842020034790e-001 6.2585823237895966e-002 - <_> - - 0 -1 743 2.4100966751575470e-002 - - 2.1097198128700256e-002 -7.4997889995574951e-001 - <_> - - 0 -1 170 -6.7410841584205627e-003 - - -8.7101519107818604e-001 1.3417764566838741e-002 - - <_> - 88 - -2.2931215763092041e+000 - - <_> - - 0 -1 400 -3.4661620855331421e-002 - - 2.1858149766921997e-001 -6.1113607883453369e-001 - <_> - - 0 -1 130 -8.0369092524051666e-002 - - 2.4827747046947479e-001 -3.6355212330818176e-001 - <_> - - 0 -1 911 2.5022951886057854e-003 - - -2.3158867657184601e-001 2.7031692862510681e-001 - <_> - - 0 -1 946 -6.8189981393516064e-003 - - 4.1294625401496887e-001 -1.2155807018280029e-001 - <_> - - 0 -1 459 3.2973052002489567e-003 - - -1.9231098890304565e-001 2.4345158040523529e-001 - <_> - - 0 -1 484 -6.6328542307019234e-003 - - -5.9019386768341064e-001 6.9055899977684021e-002 - <_> - - 0 -1 318 4.7803454101085663e-002 - - -5.1415871828794479e-002 5.9312266111373901e-001 - <_> - - 0 -1 350 1.3619948178529739e-002 - - -1.3920906186103821e-001 2.6931121945381165e-001 - <_> - - 0 -1 383 -3.7001757882535458e-003 - - -2.6682609319686890e-001 1.4955024421215057e-001 - <_> - - 0 -1 481 1.5951462090015411e-002 - - 3.0041305348277092e-002 -6.7943179607391357e-001 - <_> - - 0 -1 478 2.3432243615388870e-003 - - 4.9472317099571228e-002 -7.3165643215179443e-001 - <_> - - 0 -1 423 -4.0219593793153763e-003 - - -3.9633533358573914e-001 8.4367558360099792e-002 - <_> - - 0 -1 942 1.3890343718230724e-002 - - -1.1078495532274246e-001 3.0365592241287231e-001 - <_> - - 0 -1 777 -1.2505413033068180e-003 - - 2.0580539107322693e-001 -1.3080060482025146e-001 - <_> - - 0 -1 132 1.0764427483081818e-001 - - 7.7789157629013062e-002 -3.3906123042106628e-001 - <_> - - 0 -1 631 4.3811961077153683e-003 - - -1.1201550066471100e-001 2.5211933255195618e-001 - <_> - - 0 -1 686 -1.2142172083258629e-002 - - 3.7872961163520813e-001 -7.7070862054824829e-002 - <_> - - 0 -1 865 -4.4353669509291649e-003 - - 2.1270920336246490e-001 -1.2447933107614517e-001 - <_> - - 0 -1 619 1.4904401032254100e-003 - - 5.6515082716941833e-002 -5.1137989759445190e-001 - <_> - - 0 -1 792 -1.4859709888696671e-002 - - 4.4488805532455444e-001 -6.3839435577392578e-002 - <_> - - 0 -1 515 2.5369194336235523e-003 - - -1.4258751273155212e-001 1.8267530202865601e-001 - <_> - - 0 -1 558 -3.8392089772969484e-003 - - 2.3361504077911377e-001 -1.1508828401565552e-001 - <_> - - 0 -1 717 1.1982237920165062e-003 - - 4.8276327550411224e-002 -4.9198591709136963e-001 - <_> - - 0 -1 378 -1.8510858062654734e-003 - - 1.4056424796581268e-001 -1.6454231739044189e-001 - <_> - - 0 -1 918 -1.2120591476559639e-002 - - 3.7157261371612549e-001 -6.2530189752578735e-002 - <_> - - 0 -1 401 1.1447809636592865e-002 - - 4.1043214499950409e-002 -5.2705597877502441e-001 - <_> - - 0 -1 511 -1.4917021617293358e-002 - - 4.0471947193145752e-001 -5.6559596210718155e-002 - <_> - - 0 -1 472 3.1782940030097961e-002 - - 3.1669221818447113e-002 -7.1189236640930176e-001 - <_> - - 0 -1 204 2.8533251024782658e-003 - - -1.3680589199066162e-001 1.5116590261459351e-001 - <_> - - 0 -1 780 -2.0387873053550720e-002 - - 5.3041487932205200e-001 -3.6561626940965652e-002 - <_> - - 0 -1 225 1.6838125884532928e-002 - - -7.6846949756145477e-002 2.3742672801017761e-001 - <_> - - 0 -1 109 6.1867576092481613e-002 - - 3.4019146114587784e-002 -5.8948117494583130e-001 - <_> - - 0 -1 36 1.9018281251192093e-002 - - -8.8034287095069885e-002 2.8218820691108704e-001 - <_> - - 0 -1 288 9.3320291489362717e-003 - - 3.1055718660354614e-002 -6.0995835065841675e-001 - <_> - - 0 -1 553 -1.7446001293137670e-003 - - -3.1894925236701965e-001 5.7640552520751953e-002 - <_> - - 0 -1 497 -3.7551252171397209e-004 - - -2.9193779826164246e-001 6.5971598029136658e-002 - <_> - - 0 -1 906 -3.6254348233342171e-003 - - -5.2228099107742310e-001 3.2974440604448318e-002 - <_> - - 0 -1 49 3.1154025346040726e-003 - - 3.4256361424922943e-002 -4.9392226338386536e-001 - <_> - - 0 -1 761 -6.5814116969704628e-003 - - -8.5536497831344604e-001 1.7195183783769608e-002 - <_> - - 0 -1 154 3.6019994877278805e-004 - - -1.1677443981170654e-001 1.4939773082733154e-001 - <_> - - 0 -1 42 2.1521452814340591e-002 - - 6.1724990606307983e-002 -3.0582705140113831e-001 - <_> - - 0 -1 304 -3.1574545428156853e-003 - - 2.7675440907478333e-001 -7.9728044569492340e-002 - <_> - - 0 -1 608 6.8585420958697796e-003 - - -4.5498296618461609e-002 4.0476050972938538e-001 - <_> - - 0 -1 201 2.3597612977027893e-002 - - -6.8263813853263855e-002 2.7455106377601624e-001 - <_> - - 0 -1 182 4.1193626821041107e-002 - - 2.7521848678588867e-002 -7.5676482915878296e-001 - <_> - - 0 -1 133 -1.2081373482942581e-002 - - -6.3366323709487915e-001 2.1798284724354744e-002 - <_> - - 0 -1 716 -4.3834196403622627e-003 - - 2.2090788185596466e-001 -8.4348171949386597e-002 - <_> - - 0 -1 619 -9.1258285101503134e-004 - - -3.3701941370964050e-001 5.0720885396003723e-002 - <_> - - 0 -1 675 -8.5975639522075653e-003 - - 1.1742196232080460e-001 -1.5156917273998260e-001 - <_> - - 0 -1 904 -7.4663115665316582e-003 - - 4.0097141265869141e-001 -4.4417705386877060e-002 - <_> - - 0 -1 193 1.2276999652385712e-002 - - -7.3920600116252899e-002 2.5140073895454407e-001 - <_> - - 0 -1 283 -2.6504354551434517e-002 - - 1.3177506625652313e-001 -1.5368436276912689e-001 - <_> - - 0 -1 359 -2.9700677841901779e-002 - - -5.3993326425552368e-001 3.4572057425975800e-002 - <_> - - 0 -1 549 -1.0448409244418144e-002 - - 4.0107232332229614e-001 -4.6194877475500107e-002 - <_> - - 0 -1 274 5.0177536904811859e-003 - - -6.5788470208644867e-002 2.5757649540901184e-001 - <_> - - 0 -1 509 2.3238372057676315e-002 - - 2.3455925285816193e-002 -7.7699542045593262e-001 - <_> - - 0 -1 908 -4.9220167100429535e-002 - - 3.9117750525474548e-001 -4.7477778047323227e-002 - <_> - - 0 -1 936 -9.7046373412013054e-003 - - 3.3891412615776062e-001 -5.0453528761863708e-002 - <_> - - 0 -1 856 1.6913980245590210e-002 - - 4.0467191487550735e-002 -4.3838000297546387e-001 - <_> - - 0 -1 129 -7.5155749917030334e-002 - - -6.0346192121505737e-001 2.7455519884824753e-002 - <_> - - 0 -1 436 1.1202652007341385e-002 - - 2.4983508512377739e-002 -5.8596074581146240e-001 - <_> - - 0 -1 266 -3.9950847625732422e-002 - - -5.3495115041732788e-001 2.9331879690289497e-002 - <_> - - 0 -1 1 7.1143209934234619e-003 - - 3.1055316329002380e-002 -5.1785355806350708e-001 - <_> - - 0 -1 930 -2.7165055274963379e-002 - - 3.4092447161674500e-001 -4.8697970807552338e-002 - <_> - - 0 -1 135 1.5079226344823837e-002 - - -1.2215464562177658e-001 1.3460277020931244e-001 - <_> - - 0 -1 842 5.4478123784065247e-003 - - -9.0178862214088440e-002 1.9025686383247375e-001 - <_> - - 0 -1 381 -7.4798073619604111e-003 - - 2.4245217442512512e-001 -6.8944938480854034e-002 - <_> - - 0 -1 412 2.9248408973217010e-002 - - -8.9382030069828033e-002 1.9680260121822357e-001 - <_> - - 0 -1 613 -5.1055247895419598e-003 - - -4.0537586808204651e-001 4.3955769389867783e-002 - <_> - - 0 -1 417 -5.7464219629764557e-002 - - -7.8487586975097656e-001 1.8840260803699493e-002 - <_> - - 0 -1 682 -1.3099622447043657e-003 - - 1.2043049931526184e-001 -1.2602043151855469e-001 - <_> - - 0 -1 409 -1.0759031400084496e-002 - - 4.6101579070091248e-001 -3.9381790906190872e-002 - <_> - - 0 -1 440 -4.4700078666210175e-002 - - -4.9018231034278870e-001 3.9805438369512558e-002 - <_> - - 0 -1 697 2.6103520765900612e-002 - - 3.3186998218297958e-002 -4.4388863444328308e-001 - <_> - - 0 -1 722 -3.0565187335014343e-003 - - -3.1978246569633484e-001 4.8716515302658081e-002 - <_> - - 0 -1 113 6.5829858183860779e-002 - - 1.8730893731117249e-002 -7.3743104934692383e-001 - <_> - - 0 -1 57 2.5423550978302956e-003 - - 6.1064947396516800e-002 -2.3935855925083160e-001 - <_> - - 0 -1 755 -1.7830528318881989e-002 - - 3.3646425604820251e-001 -4.3943304568529129e-002 - <_> - - 0 -1 223 5.9305625036358833e-003 - - -6.8004354834556580e-002 2.1438401937484741e-001 - <_> - - 0 -1 156 -4.7256931662559509e-002 - - 2.3610806465148926e-001 -7.9913109540939331e-002 - <_> - - 0 -1 146 1.7100328579545021e-002 - - -4.8104494810104370e-002 3.4734794497489929e-001 - <_> - - 0 -1 174 -3.4349232912063599e-002 - - 1.6535361111164093e-001 -8.9516580104827881e-002 - <_> - - 0 -1 370 1.6256177332252264e-003 - - -7.9110637307167053e-002 1.9441387057304382e-001 - <_> - - 0 -1 724 -1.8217334523797035e-002 - - 4.5723637938499451e-001 -3.1193139031529427e-002 - <_> - - 0 -1 749 2.1156244911253452e-003 - - 2.7684733271598816e-002 -5.4580938816070557e-001 - <_> - - 0 -1 169 -2.6387263089418411e-002 - - 2.4881765246391296e-001 -5.7665079832077026e-002 - <_> - - 0 -1 18 4.5990861952304840e-002 - - -1.2064179033041000e-001 1.2435591220855713e-001 - <_> - - 0 -1 523 1.0681749880313873e-001 - - 5.0562918186187744e-002 -3.4403973817825317e-001 - - <_> - 85 - -2.2744355201721191e+000 - - <_> - - 0 -1 252 1.6897995024919510e-002 - - -6.9196498394012451e-001 -5.5616941303014755e-002 - <_> - - 0 -1 862 1.1701794341206551e-002 - - -2.7923116087913513e-001 3.9880016446113586e-001 - <_> - - 0 -1 618 2.7141885831952095e-002 - - 1.4071331918239594e-001 -4.8508083820343018e-001 - <_> - - 0 -1 949 -1.4755494194105268e-003 - - 3.7315878272056580e-001 -1.4565770328044891e-001 - <_> - - 0 -1 464 1.5615923330187798e-003 - - -9.6974156796932220e-002 3.6338686943054199e-001 - <_> - - 0 -1 292 -3.5046115517616272e-002 - - 6.5541946887969971e-001 -6.3480094075202942e-002 - <_> - - 0 -1 471 -2.7439640834927559e-003 - - -4.4147095084190369e-001 8.3881981670856476e-002 - <_> - - 0 -1 128 1.3140615075826645e-002 - - 6.2391642481088638e-002 -5.2230197191238403e-001 - <_> - - 0 -1 624 -2.3408148437738419e-002 - - -5.7339686155319214e-001 6.4651705324649811e-002 - <_> - - 0 -1 878 1.9269579788669944e-003 - - -1.3906709849834442e-001 2.6013106107711792e-001 - <_> - - 0 -1 510 9.1457850066944957e-004 - - 8.7518453598022461e-002 -4.9381819367408752e-001 - <_> - - 0 -1 76 -9.2652775347232819e-003 - - -4.3321701884269714e-001 5.2230410277843475e-002 - <_> - - 0 -1 437 -2.0753231365233660e-003 - - -5.0082236528396606e-001 6.1019111424684525e-002 - <_> - - 0 -1 791 1.9411731045693159e-003 - - -7.8411623835563660e-002 3.5945037007331848e-001 - <_> - - 0 -1 774 -1.2042262824252248e-003 - - 2.4952164292335510e-001 -1.1495979875326157e-001 - <_> - - 0 -1 428 4.5398853719234467e-002 - - 4.9534358084201813e-002 -5.7811236381530762e-001 - <_> - - 0 -1 243 1.6548346728086472e-002 - - 4.0716260671615601e-002 -5.4614287614822388e-001 - <_> - - 0 -1 747 -2.6393149048089981e-002 - - -6.4222121238708496e-001 3.5461250692605972e-002 - <_> - - 0 -1 315 -7.9056806862354279e-003 - - 2.7603831887245178e-001 -9.6884578466415405e-002 - <_> - - 0 -1 294 -8.6138453334569931e-003 - - 3.4293037652969360e-001 -9.2569984495639801e-002 - <_> - - 0 -1 220 1.2120688334107399e-002 - - 4.1071321815252304e-002 -5.9789633750915527e-001 - <_> - - 0 -1 213 -2.3794029839336872e-003 - - 1.7102584242820740e-001 -1.3294184207916260e-001 - <_> - - 0 -1 667 1.5191107988357544e-002 - - -5.9681247919797897e-002 3.9729467034339905e-001 - <_> - - 0 -1 497 -9.4484502915292978e-004 - - -4.9290084838867188e-001 4.8412941396236420e-002 - <_> - - 0 -1 110 -7.5291972607374191e-003 - - -4.4807717204093933e-001 4.6233657747507095e-002 - <_> - - 0 -1 226 2.0139738917350769e-002 - - -8.7880477309226990e-002 2.5611591339111328e-001 - <_> - - 0 -1 934 -6.2278993427753448e-003 - - 3.8167408108711243e-001 -5.7190407067537308e-002 - <_> - - 0 -1 485 -1.4294605702161789e-002 - - 2.2094787657260895e-001 -1.0475759208202362e-001 - <_> - - 0 -1 707 -5.4574096575379372e-003 - - 2.4806049466133118e-001 -8.7989374995231628e-002 - <_> - - 0 -1 928 1.1277779936790466e-002 - - -6.8190395832061768e-002 3.0197840929031372e-001 - <_> - - 0 -1 193 1.2542145326733589e-002 - - -7.4142687022686005e-002 2.5129452347755432e-001 - <_> - - 0 -1 161 -1.0840824991464615e-001 - - -6.1061251163482666e-001 3.2729376107454300e-002 - <_> - - 0 -1 403 1.5083145117387176e-003 - - -7.0102758705615997e-002 3.0823647975921631e-001 - <_> - - 0 -1 745 -6.4324252307415009e-002 - - -7.6457482576370239e-001 2.8049679473042488e-002 - <_> - - 0 -1 635 -1.0857153683900833e-002 - - 3.0212178826332092e-001 -6.9806925952434540e-002 - <_> - - 0 -1 93 5.6619346141815186e-002 - - -1.2564770877361298e-001 1.7084783315658569e-001 - <_> - - 0 -1 576 -2.4015609174966812e-002 - - -4.6767771244049072e-001 4.4055789709091187e-002 - <_> - - 0 -1 554 1.6571693122386932e-002 - - -1.5079098939895630e-001 1.3097193837165833e-001 - <_> - - 0 -1 452 -1.3210725039243698e-002 - - 4.0740290284156799e-001 -4.6674277633428574e-002 - <_> - - 0 -1 121 -9.6322391182184219e-003 - - -3.4347525238990784e-001 5.1074773073196411e-002 - <_> - - 0 -1 155 1.2867329642176628e-002 - - -9.5492877066135406e-002 1.9662295281887054e-001 - <_> - - 0 -1 915 2.5710439309477806e-002 - - 2.4007089436054230e-002 -7.1648633480072021e-001 - <_> - - 0 -1 116 -7.6815150678157806e-003 - - -6.2318617105484009e-001 2.3343794047832489e-002 - <_> - - 0 -1 709 -3.0568044167011976e-003 - - 1.6469573974609375e-001 -1.0857288539409637e-001 - <_> - - 0 -1 35 7.0850662887096405e-002 - - 2.7203138917684555e-002 -6.5618228912353516e-001 - <_> - - 0 -1 639 -1.9809347577393055e-003 - - -6.1460441350936890e-001 2.4520153179764748e-002 - <_> - - 0 -1 236 7.0611112751066685e-003 - - -7.4253976345062256e-002 2.5537955760955811e-001 - <_> - - 0 -1 186 3.0076294206082821e-003 - - -9.6944920718669891e-002 2.4430949985980988e-001 - <_> - - 0 -1 172 -3.0732229351997375e-002 - - -6.0257941484451294e-001 2.9267333447933197e-002 - <_> - - 0 -1 450 1.6364458948373795e-002 - - 2.3035932332277298e-002 -6.2698912620544434e-001 - <_> - - 0 -1 114 1.4988467097282410e-001 - - -4.8197094351053238e-002 3.9452686905860901e-001 - <_> - - 0 -1 197 -8.2194441929459572e-003 - - 1.0664895921945572e-001 -1.8545584380626678e-001 - <_> - - 0 -1 84 -8.2502886652946472e-003 - - 1.2596343457698822e-001 -1.4223846793174744e-001 - <_> - - 0 -1 73 1.3518449850380421e-002 - - 7.5415953993797302e-002 -2.6633748412132263e-001 - <_> - - 0 -1 446 -1.4376571401953697e-002 - - 3.4983170032501221e-001 -4.7824632376432419e-002 - <_> - - 0 -1 602 1.2734688818454742e-002 - - -5.0567589700222015e-002 3.5038754343986511e-001 - <_> - - 0 -1 857 -1.3710462953895330e-003 - - 1.8082229793071747e-001 -9.6974305808544159e-002 - <_> - - 0 -1 306 -2.6267360895872116e-002 - - 4.1006618738174438e-001 -4.0112689137458801e-002 - <_> - - 0 -1 59 2.1102664992213249e-002 - - 2.7978396043181419e-002 -5.8651155233383179e-001 - <_> - - 0 -1 909 -1.4474790543317795e-002 - - 3.6871808767318726e-001 -4.5918777585029602e-002 - <_> - - 0 -1 817 7.2440858930349350e-003 - - -7.5330309569835663e-002 2.0376025140285492e-001 - <_> - - 0 -1 815 1.0546022094786167e-002 - - -6.1415266245603561e-002 3.0458399653434753e-001 - <_> - - 0 -1 101 5.5407796055078506e-002 - - 2.5191115215420723e-002 -6.5944659709930420e-001 - <_> - - 0 -1 91 9.4949062913656235e-003 - - -1.5944498777389526e-001 1.0568149387836456e-001 - <_> - - 0 -1 925 -6.2020965851843357e-003 - - 2.7509790658950806e-001 -6.5234497189521790e-002 - <_> - - 0 -1 507 1.3317565619945526e-001 - - 2.2181767970323563e-002 -7.3483341932296753e-001 - <_> - - 0 -1 448 2.5796357076615095e-003 - - 1.9557425752282143e-002 -6.5313297510147095e-001 - <_> - - 0 -1 390 3.4660965204238892e-002 - - -5.1162503659725189e-002 3.2590973377227783e-001 - <_> - - 0 -1 30 9.5607116818428040e-002 - - -2.4739582091569901e-002 5.7837259769439697e-001 - <_> - - 0 -1 148 1.6605708748102188e-002 - - 5.7055354118347168e-002 -3.5466542840003967e-001 - <_> - - 0 -1 123 1.1670887470245361e-002 - - -8.0407410860061646e-002 1.9471745193004608e-001 - <_> - - 0 -1 208 1.0822312906384468e-002 - - 2.6732437312602997e-002 -5.8917897939682007e-001 - <_> - - 0 -1 708 2.7245271950960159e-002 - - 3.0616169795393944e-002 -4.8082390427589417e-001 - <_> - - 0 -1 217 -1.3694438338279724e-001 - - -4.8311397433280945e-001 3.3773597329854965e-002 - <_> - - 0 -1 899 -1.4758360339328647e-003 - - 2.5075155496597290e-001 -6.7788824439048767e-002 - <_> - - 0 -1 275 2.7167074382305145e-002 - - 2.5224637240171432e-002 -6.3691717386245728e-001 - <_> - - 0 -1 657 1.8945746123790741e-002 - - -5.7760879397392273e-002 2.6149269938468933e-001 - <_> - - 0 -1 102 1.2368987500667572e-001 - - -3.2363165169954300e-002 4.5130741596221924e-001 - <_> - - 0 -1 43 3.9710897952318192e-002 - - -3.0226422473788261e-002 4.6590203046798706e-001 - <_> - - 0 -1 136 -3.6290191113948822e-002 - - 3.6348423361778259e-001 -4.1874047368764877e-002 - <_> - - 0 -1 846 2.5501720607280731e-002 - - 3.5494077950716019e-002 -4.5727846026420593e-001 - <_> - - 0 -1 772 5.3392872214317322e-003 - - -6.0394711792469025e-002 2.5488924980163574e-001 - <_> - - 0 -1 950 7.9108221689239144e-004 - - 5.4109033197164536e-002 -2.7065926790237427e-001 - <_> - - 0 -1 929 -1.6701441258192062e-002 - - 4.8040628433227539e-001 -3.0404916033148766e-002 - <_> - - 0 -1 566 7.1975095197558403e-003 - - -7.0362947881221771e-002 1.9959311187267303e-001 - - <_> - 100 - -2.2887177467346191e+000 - - <_> - - 0 -1 286 -1.6051483154296875e-001 - - 9.3009121716022491e-002 -6.5350115299224854e-001 - <_> - - 0 -1 623 1.2457310222089291e-002 - - -3.1717920303344727e-001 2.3368784785270691e-001 - <_> - - 0 -1 29 2.3608796764165163e-003 - - -2.9248744249343872e-001 1.8054312467575073e-001 - <_> - - 0 -1 339 1.4379444532096386e-002 - - -5.7956293225288391e-002 7.6479458808898926e-001 - <_> - - 0 -1 871 6.8126469850540161e-003 - - -1.4748461544513702e-001 2.3818431794643402e-001 - <_> - - 0 -1 247 4.3051101267337799e-002 - - 8.7559670209884644e-002 -7.2269368171691895e-001 - <_> - - 0 -1 867 -5.0154160708189011e-002 - - 3.1918609142303467e-001 -1.3582608103752136e-001 - <_> - - 0 -1 212 -3.1796738039702177e-003 - - 2.7597072720527649e-001 -9.0522617101669312e-002 - <_> - - 0 -1 677 -1.2342665344476700e-002 - - -3.9158377051353455e-001 5.3565893322229385e-002 - <_> - - 0 -1 897 1.1861260049045086e-002 - - -6.1517983675003052e-002 3.6472269892692566e-001 - <_> - - 0 -1 252 -2.1985735744237900e-002 - - 6.5143728256225586e-001 -4.0598560124635696e-002 - <_> - - 0 -1 63 -1.2279948219656944e-002 - - 2.1631649136543274e-001 -1.2024078518152237e-001 - <_> - - 0 -1 640 8.2167033106088638e-003 - - -9.4497188925743103e-002 2.4828021228313446e-001 - <_> - - 0 -1 357 1.0111754760146141e-002 - - -3.3160492777824402e-002 6.2502938508987427e-001 - <_> - - 0 -1 924 -7.7025225618854165e-004 - - 2.3218974471092224e-001 -1.0222402960062027e-001 - <_> - - 0 -1 467 -1.4080689288675785e-003 - - 1.3447046279907227e-001 -1.6994857788085938e-001 - <_> - - 0 -1 140 1.0420590639114380e-002 - - 2.9845444485545158e-002 -7.5183397531509399e-001 - <_> - - 0 -1 356 1.3691674917936325e-002 - - 2.8088988736271858e-002 -5.7496672868728638e-001 - <_> - - 0 -1 155 1.7491653561592102e-002 - - -9.8534837365150452e-002 2.2351761162281036e-001 - <_> - - 0 -1 762 7.4883676134049892e-003 - - -9.7045794129371643e-002 2.0625646412372589e-001 - <_> - - 0 -1 104 -8.4146633744239807e-003 - - -4.8472663760185242e-001 4.1302844882011414e-002 - <_> - - 0 -1 342 3.0617808923125267e-002 - - -3.7334404885768890e-002 6.1179280281066895e-001 - <_> - - 0 -1 326 1.6346010379493237e-003 - - -1.8315000832080841e-001 1.0951925814151764e-001 - <_> - - 0 -1 901 -1.1816060170531273e-002 - - 3.0801647901535034e-001 -6.1308264732360840e-002 - <_> - - 0 -1 351 -1.0661455802619457e-002 - - 3.3249661326408386e-001 -5.0642840564250946e-002 - <_> - - 0 -1 84 -9.6190627664327621e-003 - - 1.3975782692432404e-001 -1.3763442635536194e-001 - <_> - - 0 -1 289 -1.2881286442279816e-002 - - 3.6742180585861206e-001 -5.0860747694969177e-002 - <_> - - 0 -1 824 1.3589482754468918e-002 - - -5.1274802535772324e-002 3.1885984539985657e-001 - <_> - - 0 -1 234 4.6852193772792816e-003 - - -7.2946086525917053e-002 2.5181108713150024e-001 - <_> - - 0 -1 432 1.9752513617277145e-002 - - -1.4621073007583618e-001 1.2726816534996033e-001 - <_> - - 0 -1 454 3.6341309547424316e-002 - - 2.4868825450539589e-002 -6.9947302341461182e-001 - <_> - - 0 -1 636 -1.1957485694438219e-003 - - 1.5675933659076691e-001 -1.1705233156681061e-001 - <_> - - 0 -1 40 -9.9432021379470825e-003 - - -3.4487789869308472e-001 4.9324721097946167e-002 - <_> - - 0 -1 269 6.0083293356001377e-003 - - 3.3568043261766434e-002 -4.3638321757316589e-001 - <_> - - 0 -1 14 9.6278168261051178e-002 - - 4.0310282260179520e-002 -3.9266702532768250e-001 - <_> - - 0 -1 154 4.3072472908534110e-004 - - -1.0427023470401764e-001 1.4397470653057098e-001 - <_> - - 0 -1 504 -4.7720400616526604e-003 - - -4.4805496931076050e-001 3.4855298697948456e-002 - <_> - - 0 -1 87 -1.0016669984906912e-003 - - 1.3649077713489532e-001 -1.2140301614999771e-001 - <_> - - 0 -1 254 2.3308012634515762e-002 - - 3.6392133682966232e-002 -4.5537215471267700e-001 - <_> - - 0 -1 802 -4.8546120524406433e-003 - - 1.5793082118034363e-001 -9.6185155212879181e-002 - <_> - - 0 -1 795 -6.5906550735235214e-003 - - 3.2166856527328491e-001 -4.9290131777524948e-002 - <_> - - 0 -1 126 -2.7226015925407410e-002 - - 2.8352561593055725e-001 -5.1984444260597229e-002 - <_> - - 0 -1 938 5.5622356012463570e-003 - - -3.3917389810085297e-002 4.3498530983924866e-001 - <_> - - 0 -1 534 -5.8775981888175011e-003 - - 1.7455618083477020e-001 -8.4790699183940887e-002 - <_> - - 0 -1 627 -1.1768937110900879e-003 - - -4.4403216242790222e-001 3.4572694450616837e-002 - <_> - - 0 -1 625 1.4337021857500076e-003 - - -8.8692568242549896e-002 1.6940893232822418e-001 - <_> - - 0 -1 51 1.3953970745205879e-002 - - 3.9221145212650299e-002 -3.8308286666870117e-001 - <_> - - 0 -1 106 5.3161740303039551e-002 - - -3.9227265864610672e-002 4.0637263655662537e-001 - <_> - - 0 -1 916 1.1670306324958801e-002 - - -6.2661647796630859e-002 2.2897149622440338e-001 - <_> - - 0 -1 524 -8.5611653048545122e-004 - - -3.1393322348594666e-001 4.4154506176710129e-002 - <_> - - 0 -1 362 3.1659279484301805e-003 - - -1.0416875034570694e-001 1.4386938512325287e-001 - <_> - - 0 -1 94 9.2105150222778320e-002 - - 2.5259945541620255e-002 -6.3980853557586670e-001 - <_> - - 0 -1 681 2.2438270971179008e-003 - - 2.9625944793224335e-002 -4.4926467537879944e-001 - <_> - - 0 -1 592 -1.4502200298011303e-002 - - 2.3043723404407501e-001 -6.8583212792873383e-002 - <_> - - 0 -1 17 3.1762875616550446e-002 - - -1.1820482462644577e-001 1.3017164170742035e-001 - <_> - - 0 -1 372 8.3491904661059380e-003 - - -5.4794549942016602e-002 3.0562251806259155e-001 - <_> - - 0 -1 945 1.1813377961516380e-002 - - -4.4218052178621292e-002 3.2657644152641296e-001 - <_> - - 0 -1 517 -4.3407902121543884e-003 - - 2.3012351989746094e-001 -6.2401693314313889e-002 - <_> - - 0 -1 835 -5.1777150481939316e-002 - - -4.2195704579353333e-001 3.3818338066339493e-002 - <_> - - 0 -1 573 9.5773371867835522e-004 - - -1.2982761859893799e-001 1.0589899122714996e-001 - <_> - - 0 -1 329 2.6355611626058817e-003 - - -1.1849098652601242e-001 1.2649086117744446e-001 - <_> - - 0 -1 738 -6.9736450910568237e-002 - - 5.4316484928131104e-001 -2.8468221426010132e-002 - <_> - - 0 -1 166 -4.1691556572914124e-002 - - 1.8529292941093445e-001 -7.9085260629653931e-002 - <_> - - 0 -1 72 3.0405964702367783e-002 - - -6.7499466240406036e-002 2.3227298259735107e-001 - <_> - - 0 -1 202 1.6526731848716736e-001 - - 2.3192871361970901e-002 -6.6413503885269165e-001 - <_> - - 0 -1 244 -7.9902745783329010e-003 - - 1.6699096560478210e-001 -8.0209225416183472e-002 - <_> - - 0 -1 435 -8.4093026816844940e-003 - - 3.8385570049285889e-001 -3.3093310892581940e-002 - <_> - - 0 -1 580 -6.2388582155108452e-003 - - 2.2031579911708832e-001 -5.9756781905889511e-002 - <_> - - 0 -1 416 2.2657278925180435e-002 - - 2.9750887304544449e-002 -4.3571525812149048e-001 - <_> - - 0 -1 245 -3.3273398876190186e-002 - - -7.2214579582214355e-001 1.7277766019105911e-002 - <_> - - 0 -1 805 -7.5985761359333992e-003 - - -4.8032435774803162e-001 2.3796260356903076e-002 - <_> - - 0 -1 490 1.4554752968251705e-002 - - 2.0614990964531898e-002 -5.7951718568801880e-001 - <_> - - 0 -1 348 -2.4409522302448750e-003 - - 1.5682564675807953e-001 -8.2513608038425446e-002 - <_> - - 0 -1 216 -2.7174502611160278e-002 - - -5.4916822910308838e-001 2.3511687293648720e-002 - <_> - - 0 -1 599 1.8674493767321110e-003 - - 3.5896647721529007e-002 -3.5593807697296143e-001 - <_> - - 0 -1 599 -1.7106164013966918e-003 - - -2.9658839106559753e-001 4.5083675533533096e-002 - <_> - - 0 -1 698 -1.2188366800546646e-001 - - -6.8481236696243286e-001 1.6469523310661316e-002 - <_> - - 0 -1 206 1.6452776268124580e-002 - - 1.6632448881864548e-002 -6.3031005859375000e-001 - <_> - - 0 -1 913 3.3029774203896523e-003 - - 5.2817359566688538e-002 -2.3288796842098236e-001 - <_> - - 0 -1 678 6.5974113531410694e-003 - - -5.9827085584402084e-002 2.2615881264209747e-001 - <_> - - 0 -1 947 -2.2020633332431316e-003 - - 2.2270961105823517e-001 -5.8337379246950150e-002 - <_> - - 0 -1 582 -8.9172367006540298e-003 - - 2.3682470619678497e-001 -5.5845208466053009e-002 - <_> - - 0 -1 100 -3.8233667612075806e-002 - - 1.9340702891349792e-001 -7.3905274271965027e-002 - <_> - - 0 -1 214 -5.8171510696411133e-002 - - -3.3873862028121948e-001 3.6934167146682739e-002 - <_> - - 0 -1 142 1.3129880651831627e-002 - - -5.7335916906595230e-002 2.4769510328769684e-001 - <_> - - 0 -1 606 -2.3510225117206573e-002 - - -7.3440921306610107e-001 2.1062126383185387e-002 - <_> - - 0 -1 180 -3.2106369733810425e-002 - - 1.9888436794281006e-001 -6.8882115185260773e-002 - <_> - - 0 -1 798 1.0653462260961533e-002 - - -3.1876940280199051e-002 3.7958627939224243e-001 - <_> - - 0 -1 325 2.5438904762268066e-002 - - -2.5426354259252548e-002 4.6004450321197510e-001 - <_> - - 0 -1 239 2.6357024908065796e-002 - - -4.9807246774435043e-002 2.5959959626197815e-001 - <_> - - 0 -1 525 5.6436131708323956e-003 - - -4.5353759080171585e-002 2.8858882188796997e-001 - <_> - - 0 -1 267 -4.3369065970182419e-003 - - 1.4867325127124786e-001 -8.8411331176757813e-002 - <_> - - 0 -1 215 -1.9298204779624939e-001 - - -5.3079867362976074e-001 2.5263534858822823e-002 - <_> - - 0 -1 734 5.7046163827180862e-002 - - 1.1847544461488724e-002 -8.2090246677398682e-001 - <_> - - 0 -1 352 4.9701407551765442e-002 - - 1.3225952163338661e-002 -6.8998688459396362e-001 - <_> - - 0 -1 278 -2.8292792849242687e-003 - - 1.7430420219898224e-001 -6.6152326762676239e-002 - <_> - - 0 -1 476 -1.4506326988339424e-002 - - -3.1870725750923157e-001 3.8834158331155777e-002 - <_> - - 0 -1 859 3.5564824938774109e-002 - - -5.6947514414787292e-002 2.1859169006347656e-001 - <_> - - 0 -1 98 2.0967530086636543e-002 - - -5.9812918305397034e-002 2.2214832901954651e-001 - <_> - - 0 -1 127 7.3756486177444458e-002 - - 2.5129400193691254e-002 -4.9916529655456543e-001 - - <_> - 100 - -2.2359671592712402e+000 - - <_> - - 0 -1 285 -9.3501225113868713e-002 - - -4.6586804091930389e-002 -7.2199982404708862e-001 - <_> - - 0 -1 238 4.9442616291344166e-003 - - -3.9842179417610168e-001 2.1402300894260406e-001 - <_> - - 0 -1 799 1.0407378897070885e-002 - - -1.3988684117794037e-001 3.9579308032989502e-001 - <_> - - 0 -1 322 -1.4162844978272915e-002 - - 6.4931660890579224e-001 -5.7302106171846390e-002 - <_> - - 0 -1 449 9.8008674103766680e-004 - - -1.7719046771526337e-001 2.0141038298606873e-001 - <_> - - 0 -1 218 1.4206364750862122e-002 - - -9.3258224427700043e-002 3.4144768118858337e-001 - <_> - - 0 -1 879 2.5848676450550556e-003 - - -1.4990748465061188e-001 2.2581319510936737e-001 - <_> - - 0 -1 22 8.0643901601433754e-003 - - -8.8275857269763947e-002 2.8663924336433411e-001 - <_> - - 0 -1 881 -8.6236204952001572e-003 - - 3.3490571379661560e-001 -8.2069411873817444e-002 - <_> - - 0 -1 723 1.2022950686514378e-002 - - -6.3569039106369019e-002 3.9191362261772156e-001 - <_> - - 0 -1 665 -1.5419950708746910e-002 - - 4.4637352228164673e-001 -6.6652692854404449e-002 - <_> - - 0 -1 735 -6.3524805009365082e-003 - - 1.8987259268760681e-001 -1.2892219424247742e-001 - <_> - - 0 -1 408 6.9541163742542267e-002 - - 4.3989829719066620e-002 -4.4642734527587891e-001 - <_> - - 0 -1 368 7.4983224272727966e-002 - - -5.2028596401214600e-002 5.7951992750167847e-001 - <_> - - 0 -1 486 2.0330501720309258e-003 - - -1.3492821156978607e-001 2.0830303430557251e-001 - <_> - - 0 -1 28 1.8707301467657089e-002 - - 3.0162446200847626e-002 -7.5620234012603760e-001 - <_> - - 0 -1 33 9.1869030147790909e-003 - - -1.5992332994937897e-001 1.3838322460651398e-001 - <_> - - 0 -1 473 -2.0068701356649399e-002 - - 4.9636912345886230e-001 -3.8212534040212631e-002 - <_> - - 0 -1 32 9.3690613284707069e-003 - - 2.7963882312178612e-002 -7.0575749874114990e-001 - <_> - - 0 -1 63 -9.2746205627918243e-003 - - 1.7214477062225342e-001 -1.1743877083063126e-001 - <_> - - 0 -1 671 -3.7561631761491299e-003 - - 1.9893965125083923e-001 -1.0429763048887253e-001 - <_> - - 0 -1 642 -2.8749569319188595e-003 - - -3.7584275007247925e-001 4.6344734728336334e-002 - <_> - - 0 -1 145 -1.1727647855877876e-002 - - -4.4696572422981262e-001 4.0343362838029861e-002 - <_> - - 0 -1 590 1.0945920832455158e-002 - - 5.6218206882476807e-002 -2.9916441440582275e-001 - <_> - - 0 -1 341 -1.2209227308630943e-002 - - 3.9286783337593079e-001 -4.2874403297901154e-002 - <_> - - 0 -1 447 -2.5397611781954765e-002 - - -3.8478189706802368e-001 4.3343432247638702e-002 - <_> - - 0 -1 746 -4.5675365254282951e-003 - - 2.3299069702625275e-001 -7.3202215135097504e-002 - <_> - - 0 -1 935 -6.0586854815483093e-003 - - 2.2465232014656067e-001 -7.7056594192981720e-002 - <_> - - 0 -1 131 1.5789955854415894e-002 - - -8.7083600461483002e-002 1.9742278754711151e-001 - <_> - - 0 -1 759 -1.7314129509031773e-003 - - 2.0412902534008026e-001 -8.9147895574569702e-002 - <_> - - 0 -1 939 7.3486715555191040e-003 - - -4.5228123664855957e-002 3.5152116417884827e-001 - <_> - - 0 -1 246 1.6278622671961784e-002 - - 5.0431668758392334e-002 -3.4917074441909790e-001 - <_> - - 0 -1 151 -4.9730124883353710e-003 - - 1.8474133312702179e-001 -9.4716101884841919e-002 - <_> - - 0 -1 334 1.3617072254419327e-002 - - -3.4493431448936462e-002 5.1511102914810181e-001 - <_> - - 0 -1 516 -3.5471074283123016e-002 - - -3.9388224482536316e-001 4.3496731668710709e-002 - <_> - - 0 -1 103 5.2554365247488022e-003 - - -1.2609277665615082e-001 1.2129900604486465e-001 - <_> - - 0 -1 489 -4.1965182870626450e-002 - - -6.2069499492645264e-001 2.4282006546854973e-002 - <_> - - 0 -1 61 9.6745520830154419e-002 - - 3.0231734737753868e-002 -4.6271669864654541e-001 - <_> - - 0 -1 661 -6.8811019882559776e-003 - - 2.8159707784652710e-001 -5.7276148349046707e-002 - <_> - - 0 -1 616 1.0784192010760307e-002 - - -4.8847943544387817e-002 3.2464641332626343e-001 - <_> - - 0 -1 466 -3.3961618319153786e-003 - - 4.0418368577957153e-001 -4.2481750249862671e-002 - <_> - - 0 -1 420 -6.9079827517271042e-003 - - 1.1404169350862503e-001 -1.2768752872943878e-001 - <_> - - 0 -1 167 1.4355555176734924e-001 - - -3.9203863590955734e-002 3.9233651757240295e-001 - <_> - - 0 -1 210 -3.5771834664046764e-003 - - 1.4706018567085266e-001 -1.3173283636569977e-001 - <_> - - 0 -1 439 3.0234435573220253e-002 - - 1.8946202471852303e-002 -8.0503576993942261e-001 - <_> - - 0 -1 567 7.8391470015048981e-004 - - 8.7953150272369385e-002 -1.6678945720195770e-001 - <_> - - 0 -1 42 -2.2085051983594894e-002 - - -3.8623884320259094e-001 4.2284723371267319e-002 - <_> - - 0 -1 818 -2.6205494999885559e-002 - - 1.6326524317264557e-001 -1.0225085169076920e-001 - <_> - - 0 -1 581 -9.5918308943510056e-003 - - 2.5218212604522705e-001 -6.0809265822172165e-002 - <_> - - 0 -1 242 -2.6144424453377724e-002 - - -6.9495695829391479e-001 2.2685619071125984e-002 - <_> - - 0 -1 424 9.2253191396594048e-003 - - -8.8936053216457367e-002 1.6087681055068970e-001 - <_> - - 0 -1 843 -3.1533516012132168e-003 - - 2.2563895583152771e-001 -6.3495889306068420e-002 - <_> - - 0 -1 56 -6.6996468231081963e-003 - - -2.4251624941825867e-001 6.1135187745094299e-002 - <_> - - 0 -1 282 -1.2584788724780083e-002 - - 2.9776036739349365e-001 -4.9212120473384857e-002 - <_> - - 0 -1 903 -4.2148698121309280e-003 - - 3.0259734392166138e-001 -4.4676482677459717e-002 - <_> - - 0 -1 653 -9.4317561015486717e-003 - - 1.1043215543031693e-001 -1.2356746196746826e-001 - <_> - - 0 -1 654 2.1886886097490788e-003 - - -6.1201002448797226e-002 2.2712202370166779e-001 - <_> - - 0 -1 398 2.4963401257991791e-002 - - 2.4292556568980217e-002 -5.4634368419647217e-001 - <_> - - 0 -1 205 -8.7548848241567612e-003 - - 2.5255405902862549e-001 -5.4619345813989639e-002 - <_> - - 0 -1 487 7.0049557834863663e-003 - - 3.9875753223896027e-002 -3.8009002804756165e-001 - <_> - - 0 -1 258 3.7140229251235723e-003 - - -9.3989297747612000e-002 1.5871012210845947e-001 - <_> - - 0 -1 565 -8.4969010204076767e-003 - - 2.0674896240234375e-001 -6.4190469682216644e-002 - <_> - - 0 -1 147 -5.0333619117736816e-002 - - 3.0274888873100281e-001 -4.3931342661380768e-002 - <_> - - 0 -1 80 7.2737382724881172e-003 - - -8.7947271764278412e-002 1.5312801301479340e-001 - <_> - - 0 -1 58 9.9609624594449997e-003 - - 4.6528778970241547e-002 -2.9576960206031799e-001 - <_> - - 0 -1 909 -1.3673231005668640e-002 - - 3.2159554958343506e-001 -4.6024739742279053e-002 - <_> - - 0 -1 460 2.4796918034553528e-002 - - 2.3450840264558792e-002 -6.3208627700805664e-001 - <_> - - 0 -1 790 -8.9704394340515137e-003 - - 1.7290446162223816e-001 -8.1694059073925018e-002 - <_> - - 0 -1 191 -2.3638601414859295e-003 - - 1.0641085356473923e-001 -1.2656879425048828e-001 - <_> - - 0 -1 45 -3.0800779350101948e-003 - - 1.4082619547843933e-001 -9.4026930630207062e-002 - <_> - - 0 -1 138 -1.0759308934211731e-002 - - -4.0597277879714966e-001 3.1949173659086227e-002 - <_> - - 0 -1 176 7.2143180295825005e-003 - - 1.2054420076310635e-002 -8.5538458824157715e-001 - <_> - - 0 -1 384 1.9637834280729294e-002 - - -4.5702952891588211e-002 3.0082041025161743e-001 - <_> - - 0 -1 181 -2.6587650179862976e-002 - - -4.8827502131462097e-001 2.5739965960383415e-002 - <_> - - 0 -1 429 -2.8913402929902077e-003 - - 1.5120062232017517e-001 -8.3084680140018463e-002 - <_> - - 0 -1 462 -1.7486744036432356e-004 - - -1.6527174413204193e-001 7.9318381845951080e-002 - <_> - - 0 -1 93 5.8025561273097992e-002 - - -9.3625135719776154e-002 1.3428705930709839e-001 - <_> - - 0 -1 895 7.7226985013112426e-004 - - 6.4624220132827759e-002 -1.9347991049289703e-001 - <_> - - 0 -1 506 -6.4398542046546936e-002 - - -8.3100390434265137e-001 1.3259679079055786e-002 - <_> - - 0 -1 794 2.7848746627569199e-002 - - 1.3673855923116207e-002 -7.1600478887557983e-001 - <_> - - 0 -1 308 -1.7273522913455963e-002 - - -6.1328560113906860e-001 1.7129577696323395e-002 - <_> - - 0 -1 117 2.2771380841732025e-002 - - 1.4634012244641781e-002 -6.9125133752822876e-001 - <_> - - 0 -1 155 1.7879681661725044e-002 - - -6.6493585705757141e-002 1.8808430433273315e-001 - <_> - - 0 -1 188 -7.5980871915817261e-003 - - 2.1208682656288147e-001 -6.9655627012252808e-002 - <_> - - 0 -1 468 8.3334632217884064e-003 - - -4.5091670006513596e-002 2.5533476471900940e-001 - <_> - - 0 -1 451 9.5366090536117554e-003 - - 3.3587828278541565e-002 -3.8594719767570496e-001 - <_> - - 0 -1 349 1.9022613763809204e-002 - - -4.2280010879039764e-002 3.0593034625053406e-001 - <_> - - 0 -1 522 3.6582566797733307e-002 - - -6.8928316235542297e-002 1.8224547803401947e-001 - <_> - - 0 -1 159 -2.5450623035430908e-001 - - -7.9693830013275146e-001 1.6522107645869255e-002 - <_> - - 0 -1 905 -5.8933448046445847e-002 - - 3.6613103747367859e-001 -3.7511564791202545e-002 - <_> - - 0 -1 64 8.5881188511848450e-002 - - 3.5934593528509140e-002 -3.7825050950050354e-001 - <_> - - 0 -1 810 -6.8585649132728577e-002 - - -5.4236054420471191e-001 2.0104518160223961e-002 - <_> - - 0 -1 529 4.8160655423998833e-003 - - -4.3085236102342606e-002 2.8620475530624390e-001 - <_> - - 0 -1 498 6.1599753098562360e-004 - - 5.0022143870592117e-002 -2.7295649051666260e-001 - <_> - - 0 -1 710 7.4446541257202625e-003 - - -6.7837722599506378e-002 1.9111913442611694e-001 - <_> - - 0 -1 333 1.3981198891997337e-002 - - 2.1413592621684074e-002 -6.2269157171249390e-001 - <_> - - 0 -1 941 -1.4853913336992264e-002 - - 4.0018329024314880e-001 -3.4097265452146530e-002 - <_> - - 0 -1 3 1.3497969135642052e-002 - - 3.0796987935900688e-002 -4.2009493708610535e-001 - <_> - - 0 -1 887 9.1592809185385704e-003 - - 3.0317120254039764e-002 -3.5625258088111877e-001 - <_> - - 0 -1 11 2.9643373563885689e-002 - - -1.1319724470376968e-001 1.0797596722841263e-001 - - <_> - 100 - -2.0808603763580322e+000 - - <_> - - 0 -1 284 -7.5377658009529114e-002 - - -1.0360029339790344e-001 -7.0443350076675415e-001 - <_> - - 0 -1 301 -4.6968553215265274e-003 - - 2.6461517810821533e-001 -2.6632103323936462e-001 - <_> - - 0 -1 851 4.5106429606676102e-003 - - -1.9236828386783600e-001 2.4530071020126343e-001 - <_> - - 0 -1 324 -1.3677397742867470e-002 - - 4.8842102289199829e-001 -7.8666172921657562e-002 - <_> - - 0 -1 621 8.4240939468145370e-003 - - -1.1324168741703033e-001 2.8638821840286255e-001 - <_> - - 0 -1 827 1.0163122788071632e-003 - - -1.7518180608749390e-001 1.6443368792533875e-001 - <_> - - 0 -1 375 3.2988777384161949e-003 - - -7.6549887657165527e-002 2.8202313184738159e-001 - <_> - - 0 -1 85 1.4450255781412125e-002 - - -1.4695851504802704e-001 1.9833040237426758e-001 - <_> - - 0 -1 328 5.9788756072521210e-002 - - -2.7597570791840553e-002 6.0443407297134399e-001 - <_> - - 0 -1 668 -4.0823942981660366e-003 - - 3.7376108765602112e-001 -6.6522486507892609e-002 - <_> - - 0 -1 651 9.4101820141077042e-003 - - -7.5030580163002014e-002 3.3643370866775513e-001 - <_> - - 0 -1 770 1.2895615771412849e-002 - - -6.6736064851284027e-002 3.4388977289199829e-001 - <_> - - 0 -1 0 1.8281452357769012e-003 - - -7.6577022671699524e-002 3.0855756998062134e-001 - <_> - - 0 -1 811 1.2842542491853237e-002 - - -6.6831089556217194e-002 3.5320571064949036e-001 - <_> - - 0 -1 556 2.6731539517641068e-002 - - 4.3738048523664474e-002 -5.4744714498519897e-001 - <_> - - 0 -1 593 -2.1810945123434067e-002 - - -4.9039456248283386e-001 3.5305779427289963e-002 - <_> - - 0 -1 397 1.4120168052613735e-003 - - -1.7367108166217804e-001 1.1572990566492081e-001 - <_> - - 0 -1 494 1.5707452548667789e-003 - - -1.1095841974020004e-001 1.6702808439731598e-001 - <_> - - 0 -1 869 -7.3387438897043467e-004 - - 1.8617554008960724e-001 -9.1079324483871460e-002 - <_> - - 0 -1 495 -6.4388057217001915e-004 - - -2.6845857501029968e-001 6.1447944492101669e-002 - <_> - - 0 -1 427 1.1414934694766998e-001 - - 2.0975470542907715e-002 -7.1357190608978271e-001 - <_> - - 0 -1 931 1.3404923956841230e-003 - - -9.0797364711761475e-002 1.8696101009845734e-001 - <_> - - 0 -1 46 2.3350983858108521e-002 - - 2.9028130695223808e-002 -5.2345710992813110e-001 - <_> - - 0 -1 143 1.5429967083036900e-002 - - -9.4941243529319763e-002 1.6368669271469116e-001 - <_> - - 0 -1 357 1.0943166911602020e-002 - - -3.1125182285904884e-002 5.9323889017105103e-001 - <_> - - 0 -1 705 2.6839743368327618e-003 - - -7.5778268277645111e-002 2.1814092993736267e-001 - <_> - - 0 -1 39 -6.2261838465929031e-003 - - -2.8783807158470154e-001 5.5791638791561127e-002 - <_> - - 0 -1 207 1.0724554955959320e-001 - - 2.4116434156894684e-002 -5.8035951852798462e-001 - <_> - - 0 -1 199 -6.5348353236913681e-003 - - -2.8312593698501587e-001 5.1936011761426926e-002 - <_> - - 0 -1 415 -1.1670710518956184e-003 - - -1.8463888764381409e-001 8.3705939352512360e-002 - <_> - - 0 -1 808 -1.4070876641198993e-003 - - 1.5036344528198242e-001 -1.0249616205692291e-001 - <_> - - 0 -1 122 -3.9912573993206024e-002 - - -3.8639402389526367e-001 3.9821352809667587e-002 - <_> - - 0 -1 413 1.0381672531366348e-002 - - -1.2079605460166931e-001 1.2945999205112457e-001 - <_> - - 0 -1 453 -9.9312573671340942e-002 - - 6.0750687122344971e-001 -2.8503781184554100e-002 - <_> - - 0 -1 816 1.0430534370243549e-002 - - -6.0343675315380096e-002 2.3242907226085663e-001 - <_> - - 0 -1 445 3.5891016013920307e-003 - - 4.1434522718191147e-002 -3.4602153301239014e-001 - <_> - - 0 -1 788 1.0015227831900120e-002 - - -5.6792665272951126e-002 2.6468506455421448e-001 - <_> - - 0 -1 749 -9.2321680858731270e-004 - - -3.1470552086830139e-001 4.6375431120395660e-002 - <_> - - 0 -1 384 2.0065717399120331e-002 - - -4.7381434589624405e-002 3.2506260275840759e-001 - <_> - - 0 -1 782 2.0691626705229282e-003 - - -8.8068872690200806e-002 1.7662553489208221e-001 - <_> - - 0 -1 150 -2.0592920482158661e-002 - - 2.1614389121532440e-001 -6.7837409675121307e-002 - <_> - - 0 -1 729 -2.5132454931735992e-002 - - 2.9875260591506958e-001 -5.0642240792512894e-002 - <_> - - 0 -1 893 1.6763649880886078e-002 - - -5.6825786828994751e-002 2.6688432693481445e-001 - <_> - - 0 -1 5 2.4304956197738647e-002 - - -7.3691956698894501e-002 1.8922545015811920e-001 - <_> - - 0 -1 604 5.2945837378501892e-003 - - -6.8203508853912354e-002 2.3238344490528107e-001 - <_> - - 0 -1 146 1.7194304615259171e-002 - - -4.1591234505176544e-002 3.3211585879325867e-001 - <_> - - 0 -1 119 -1.0534466244280338e-002 - - 2.0838305354118347e-001 -8.1538312137126923e-002 - <_> - - 0 -1 171 3.3360864967107773e-002 - - -6.7458741366863251e-002 2.5852772593498230e-001 - <_> - - 0 -1 183 4.6436764299869537e-002 - - 1.9892208278179169e-002 -8.1141030788421631e-001 - <_> - - 0 -1 8 -4.1056036949157715e-002 - - -4.9327704310417175e-001 2.3769956082105637e-002 - <_> - - 0 -1 514 -1.8552202731370926e-002 - - -5.7725781202316284e-001 2.1620772778987885e-002 - <_> - - 0 -1 310 -1.5498932916671038e-003 - - 1.3356749713420868e-001 -1.0274448245763779e-001 - <_> - - 0 -1 144 -1.2870179489254951e-002 - - -6.8844175338745117e-001 1.6567943617701530e-002 - <_> - - 0 -1 162 1.1060645803809166e-002 - - -6.5967611968517303e-002 2.0074956119060516e-001 - <_> - - 0 -1 737 -1.9628754816949368e-003 - - 1.7064040899276733e-001 -7.5410693883895874e-002 - <_> - - 0 -1 118 3.2771207392215729e-002 - - 1.7548711970448494e-002 -7.5103056430816650e-001 - <_> - - 0 -1 62 -5.6525086984038353e-004 - - 1.0811340808868408e-001 -1.1322978138923645e-001 - <_> - - 0 -1 920 6.6395318135619164e-003 - - -4.8233803361654282e-002 2.5985202193260193e-001 - <_> - - 0 -1 933 5.3288890048861504e-003 - - -5.8816779404878616e-002 2.0709130167961121e-001 - <_> - - 0 -1 30 9.5648169517517090e-002 - - -2.3178230971097946e-002 5.3592687845230103e-001 - <_> - - 0 -1 505 2.3851044476032257e-002 - - 3.9325568825006485e-002 -3.2090389728546143e-001 - <_> - - 0 -1 380 4.9215428531169891e-002 - - -8.0275781452655792e-002 2.1604713797569275e-001 - <_> - - 0 -1 404 5.1129907369613647e-002 - - 2.0917052403092384e-002 -6.7675739526748657e-001 - <_> - - 0 -1 470 -9.5789285842329264e-004 - - 1.3741976022720337e-001 -9.2351287603378296e-002 - <_> - - 0 -1 38 4.3797735124826431e-002 - - -5.2134189754724503e-002 2.3939897119998932e-001 - <_> - - 0 -1 177 -3.7566445767879486e-002 - - -5.0337618589401245e-001 3.2042562961578369e-002 - <_> - - 0 -1 293 -6.6379196941852570e-003 - - 2.3610880970954895e-001 -5.9629496186971664e-002 - <_> - - 0 -1 569 4.4785980135202408e-003 - - -6.9053784012794495e-002 1.8493640422821045e-001 - <_> - - 0 -1 680 -1.9650494214147329e-003 - - -5.0821167230606079e-001 2.3264253512024879e-002 - <_> - - 0 -1 826 -8.4884336683899164e-004 - - 1.7365188896656036e-001 -7.3235429823398590e-002 - <_> - - 0 -1 421 -5.7333573698997498e-002 - - -3.1190565228462219e-001 4.1780386120080948e-002 - <_> - - 0 -1 599 1.8632253631949425e-003 - - 3.1603202223777771e-002 -3.6946067214012146e-001 - <_> - - 0 -1 336 -2.0456001162528992e-002 - - 3.0203589797019958e-001 -4.1565753519535065e-002 - <_> - - 0 -1 938 5.5945245549082756e-003 - - -3.2002035528421402e-002 3.7638634443283081e-001 - <_> - - 0 -1 152 -1.8559835851192474e-002 - - 2.4045053124427795e-001 -5.1895260810852051e-002 - <_> - - 0 -1 706 -1.0816272348165512e-002 - - -4.1922396421432495e-001 3.0057143419981003e-002 - <_> - - 0 -1 717 -1.5897199045866728e-003 - - -3.8717699050903320e-001 2.7556220069527626e-002 - <_> - - 0 -1 337 -1.8832697533071041e-003 - - 1.8341954052448273e-001 -6.8402133882045746e-002 - <_> - - 0 -1 107 -6.8602010607719421e-002 - - -4.3040940165519714e-001 2.7811320498585701e-002 - <_> - - 0 -1 605 3.1656727194786072e-002 - - 1.4831826090812683e-002 -6.9200241565704346e-001 - <_> - - 0 -1 178 -1.1699689552187920e-002 - - -4.7378033399581909e-001 2.2049939259886742e-002 - <_> - - 0 -1 175 -4.9252226948738098e-002 - - 2.0226360857486725e-001 -5.8283366262912750e-002 - <_> - - 0 -1 200 -1.4749905094504356e-002 - - -6.3420587778091431e-001 1.7177773639559746e-002 - <_> - - 0 -1 594 1.3355823233723640e-002 - - -5.3626276552677155e-002 2.3158134520053864e-001 - <_> - - 0 -1 688 2.7912877500057220e-002 - - -3.2106213271617889e-002 3.9656600356101990e-001 - <_> - - 0 -1 433 -1.8341368064284325e-002 - - 3.0023518204689026e-001 -3.9390310645103455e-002 - <_> - - 0 -1 320 3.3382259309291840e-002 - - -5.0307501107454300e-002 2.3759432137012482e-001 - <_> - - 0 -1 414 2.2881597280502319e-002 - - 2.9198208823800087e-002 -4.3145897984504700e-001 - <_> - - 0 -1 271 1.7183616757392883e-001 - - 1.9492210820317268e-002 -5.7107782363891602e-001 - <_> - - 0 -1 889 4.3015915900468826e-002 - - 1.8091753125190735e-002 -5.8863103389739990e-001 - <_> - - 0 -1 545 -1.2893548235297203e-002 - - 1.4482001960277557e-001 -8.2013383507728577e-002 - <_> - - 0 -1 910 5.9737069532275200e-003 - - -7.2960324585437775e-002 1.6368763148784637e-001 - <_> - - 0 -1 664 1.1285657994449139e-002 - - -4.4454183429479599e-002 2.5658103823661804e-001 - <_> - - 0 -1 951 -9.9752098321914673e-004 - - -2.6904699206352234e-001 4.0726143866777420e-002 - <_> - - 0 -1 111 2.1743077784776688e-002 - - 1.7429182305932045e-002 -6.2877011299133301e-001 - <_> - - 0 -1 866 3.7145437672734261e-003 - - -8.1450186669826508e-002 1.3246190547943115e-001 - <_> - - 0 -1 888 -1.5904067084193230e-002 - - 3.2105255126953125e-001 -3.4731235355138779e-002 - <_> - - 0 -1 907 -2.6992281898856163e-002 - - -6.8835800886154175e-001 1.6344616189599037e-002 - <_> - - 0 -1 830 6.8261945853009820e-004 - - -1.1232791095972061e-001 9.8401591181755066e-002 - <_> - - 0 -1 807 -2.5938652455806732e-002 - - -5.0289982557296753e-001 2.3814825341105461e-002 - - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - 0 - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - 0 - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 2 2 2 3. - 0 - <_> - - <_> - 0 0 8 7 -1. - <_> - 2 0 4 7 2. - 0 - <_> - - <_> - 0 0 8 8 -1. - <_> - 2 0 4 8 2. - 0 - <_> - - <_> - 0 0 6 13 -1. - <_> - 2 0 2 13 3. - 0 - <_> - - <_> - 0 0 12 13 -1. - <_> - 3 0 6 13 2. - 0 - <_> - - <_> - 0 0 12 4 -1. - <_> - 4 0 4 4 3. - 0 - <_> - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - <_> - - <_> - 0 0 36 11 -1. - <_> - 12 0 12 11 3. - 0 - <_> - - <_> - 0 0 17 12 -1. - <_> - 0 4 17 4 3. - 0 - <_> - - <_> - 0 0 36 13 -1. - <_> - 18 0 18 13 2. - 0 - <_> - - <_> - 0 0 22 2 -1. - <_> - 0 1 22 1 2. - 0 - <_> - - <_> - 0 0 24 9 -1. - <_> - 0 3 24 3 3. - 0 - <_> - - <_> - 0 0 29 2 -1. - <_> - 0 1 29 1 2. - 0 - <_> - - <_> - 0 0 34 2 -1. - <_> - 0 1 34 1 2. - 0 - <_> - - <_> - 0 0 36 8 -1. - <_> - 0 2 36 4 2. - 0 - <_> - - <_> - 0 0 42 6 -1. - <_> - 0 3 42 3 2. - 0 - <_> - - <_> - 0 0 44 2 -1. - <_> - 0 1 44 1 2. - 0 - <_> - - <_> - 0 0 51 8 -1. - <_> - 0 2 51 4 2. - 0 - <_> - - <_> - 0 1 2 9 -1. - <_> - 1 1 1 9 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 1 1 1 12 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 0 7 2 6 2. - 0 - <_> - - <_> - 0 1 8 10 -1. - <_> - 0 1 4 5 2. - <_> - 4 6 4 5 2. - 0 - <_> - - <_> - 0 1 7 12 -1. - <_> - 0 4 7 6 2. - 0 - <_> - - <_> - 0 1 12 12 -1. - <_> - 0 5 12 4 3. - 0 - <_> - - <_> - 0 1 17 12 -1. - <_> - 0 5 17 4 3. - 0 - <_> - - <_> - 0 2 6 2 -1. - <_> - 2 2 2 2 3. - 0 - <_> - - <_> - 0 2 4 6 -1. - <_> - 2 2 2 6 2. - 0 - <_> - - <_> - 0 2 20 7 -1. - <_> - 5 2 10 7 2. - 0 - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - <_> - - <_> - 0 3 4 2 -1. - <_> - 1 3 2 2 2. - 0 - <_> - - <_> - 0 3 6 9 -1. - <_> - 2 3 2 9 3. - 0 - <_> - - <_> - 0 3 4 10 -1. - <_> - 2 3 2 10 2. - 0 - <_> - - <_> - 0 3 6 10 -1. - <_> - 2 3 2 10 3. - 0 - <_> - - <_> - 0 3 9 3 -1. - <_> - 3 3 3 3 3. - 0 - <_> - - <_> - 0 3 3 9 -1. - <_> - 0 6 3 3 3. - 0 - <_> - - <_> - 0 3 9 6 -1. - <_> - 3 3 3 6 3. - 0 - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 3 4 2 2. - <_> - 4 5 4 2 2. - 0 - <_> - - <_> - 0 3 8 6 -1. - <_> - 0 3 4 3 2. - <_> - 4 6 4 3 2. - 0 - <_> - - <_> - 0 3 16 10 -1. - <_> - 4 3 8 10 2. - 0 - <_> - - <_> - 0 3 10 6 -1. - <_> - 0 5 10 2 3. - 0 - <_> - - <_> - 0 3 16 8 -1. - <_> - 0 7 16 4 2. - 0 - <_> - - <_> - 0 3 51 8 -1. - <_> - 0 7 51 4 2. - 0 - <_> - - <_> - 0 4 3 3 -1. - <_> - 1 5 1 1 9. - 0 - <_> - - <_> - 0 4 3 9 -1. - <_> - 0 7 3 3 3. - 0 - <_> - - <_> - 0 4 20 7 -1. - <_> - 10 4 10 7 2. - 0 - <_> - - <_> - 0 4 34 9 -1. - <_> - 17 4 17 9 2. - 0 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 7 1 2 2. - 0 - <_> - - <_> - 0 5 2 8 -1. - <_> - 1 5 1 8 2. - 0 - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 7 10 2 2. - 0 - <_> - - <_> - 0 5 22 6 -1. - <_> - 0 8 22 3 2. - 0 - <_> - - <_> - 0 6 2 7 -1. - <_> - 1 6 1 7 2. - 0 - <_> - - <_> - 0 6 4 2 -1. - <_> - 2 6 2 2 2. - 0 - <_> - - <_> - 0 6 6 5 -1. - <_> - 2 6 2 5 3. - 0 - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - 0 - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 9 4 3 2. - 0 - <_> - - <_> - 0 6 13 4 -1. - <_> - 0 8 13 2 2. - 0 - <_> - - <_> - 0 6 14 4 -1. - <_> - 0 8 14 2 2. - 0 - <_> - - <_> - 0 6 33 4 -1. - <_> - 0 8 33 2 2. - 0 - <_> - - <_> - 0 6 44 6 -1. - <_> - 0 8 44 2 3. - 0 - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 10 1 3 2. - 0 - <_> - - <_> - 0 7 7 6 -1. - <_> - 0 10 7 3 2. - 0 - <_> - - <_> - 0 7 25 6 -1. - <_> - 0 9 25 2 3. - 0 - <_> - - <_> - 0 7 32 3 -1. - <_> - 0 8 32 1 3. - 0 - <_> - - <_> - 0 8 12 5 -1. - <_> - 3 8 6 5 2. - 0 - <_> - - <_> - 0 8 12 2 -1. - <_> - 6 8 6 2 2. - 0 - <_> - - <_> - 0 8 21 4 -1. - <_> - 7 8 7 4 3. - 0 - <_> - - <_> - 0 8 25 4 -1. - <_> - 0 9 25 2 2. - 0 - <_> - - <_> - 0 9 15 4 -1. - <_> - 5 9 5 4 3. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 7 9 14 4 2. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 14 9 14 4 2. - 0 - <_> - - <_> - 0 9 46 2 -1. - <_> - 0 10 46 1 2. - 0 - <_> - - <_> - 0 9 50 2 -1. - <_> - 0 10 50 1 2. - 0 - <_> - - <_> - 0 10 6 3 -1. - <_> - 3 10 3 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 3 10 6 3 2. - 0 - <_> - - <_> - 0 10 10 3 -1. - <_> - 5 10 5 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 6 10 6 3 2. - 0 - <_> - - <_> - 0 11 5 2 -1. - <_> - 0 12 5 1 2. - 0 - <_> - - <_> - 0 11 26 2 -1. - <_> - 13 11 13 2 2. - 0 - <_> - - <_> - 0 11 28 2 -1. - <_> - 14 11 14 2 2. - 0 - <_> - - <_> - 0 11 42 2 -1. - <_> - 14 11 14 2 3. - 0 - <_> - - <_> - 0 11 19 2 -1. - <_> - 0 12 19 1 2. - 0 - <_> - - <_> - 0 11 23 2 -1. - <_> - 0 12 23 1 2. - 0 - <_> - - <_> - 1 0 5 12 -1. - <_> - 1 3 5 6 2. - 0 - <_> - - <_> - 1 0 15 4 -1. - <_> - 6 0 5 4 3. - 0 - <_> - - <_> - 1 0 14 1 -1. - <_> - 8 0 7 1 2. - 0 - <_> - - <_> - 1 0 8 2 -1. - <_> - 1 1 8 1 2. - 0 - <_> - - <_> - 1 0 9 2 -1. - <_> - 1 1 9 1 2. - 0 - <_> - - <_> - 1 0 11 2 -1. - <_> - 1 1 11 1 2. - 0 - <_> - - <_> - 1 0 17 9 -1. - <_> - 1 3 17 3 3. - 0 - <_> - - <_> - 1 0 21 2 -1. - <_> - 1 1 21 1 2. - 0 - <_> - - <_> - 1 0 41 6 -1. - <_> - 1 3 41 3 2. - 0 - <_> - - <_> - 1 0 47 2 -1. - <_> - 1 1 47 1 2. - 0 - <_> - - <_> - 1 1 6 8 -1. - <_> - 3 1 2 8 3. - 0 - <_> - - <_> - 1 1 6 9 -1. - <_> - 3 1 2 9 3. - 0 - <_> - - <_> - 1 1 6 11 -1. - <_> - 3 1 2 11 3. - 0 - <_> - - <_> - 1 1 9 5 -1. - <_> - 4 1 3 5 3. - 0 - <_> - - <_> - 1 1 20 7 -1. - <_> - 6 1 10 7 2. - 0 - <_> - - <_> - 1 1 20 8 -1. - <_> - 6 1 10 8 2. - 0 - <_> - - <_> - 1 1 9 9 -1. - <_> - 1 4 9 3 3. - 0 - <_> - - <_> - 1 1 27 10 -1. - <_> - 10 1 9 10 3. - 0 - <_> - - <_> - 1 1 10 6 -1. - <_> - 1 3 10 2 3. - 0 - <_> - - <_> - 1 2 4 6 -1. - <_> - 1 2 2 3 2. - <_> - 3 5 2 3 2. - 0 - <_> - - <_> - 1 2 20 8 -1. - <_> - 6 2 10 8 2. - 0 - <_> - - <_> - 1 2 13 10 -1. - <_> - 1 7 13 5 2. - 0 - <_> - - <_> - 1 2 34 7 -1. - <_> - 18 2 17 7 2. - 0 - <_> - - <_> - 1 3 4 3 -1. - <_> - 2 3 2 3 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 3 3 2 8 3. - 0 - <_> - - <_> - 1 3 6 4 -1. - <_> - 1 3 3 2 2. - <_> - 4 5 3 2 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 1 3 3 4 2. - <_> - 4 7 3 4 2. - 0 - <_> - - <_> - 1 3 6 5 -1. - <_> - 4 3 3 5 2. - 0 - <_> - - <_> - 1 3 15 3 -1. - <_> - 6 3 5 3 3. - 0 - <_> - - <_> - 1 3 36 9 -1. - <_> - 13 3 12 9 3. - 0 - <_> - - <_> - 1 3 36 10 -1. - <_> - 13 3 12 10 3. - 0 - <_> - - <_> - 1 4 4 2 -1. - <_> - 2 4 2 2 2. - 0 - <_> - - <_> - 1 4 6 2 -1. - <_> - 3 4 2 2 3. - 0 - <_> - - <_> - 1 4 6 3 -1. - <_> - 3 4 2 3 3. - 0 - <_> - - <_> - 1 4 6 4 -1. - <_> - 4 4 3 4 2. - 0 - <_> - - <_> - 1 4 6 6 -1. - <_> - 4 4 3 6 2. - 0 - <_> - - <_> - 1 4 9 4 -1. - <_> - 1 6 9 2 2. - 0 - <_> - - <_> - 1 5 12 3 -1. - <_> - 5 6 4 1 9. - 0 - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 7 8 3 2. - <_> - 9 10 8 3 2. - 0 - <_> - - <_> - 1 11 46 2 -1. - <_> - 1 12 46 1 2. - 0 - <_> - - <_> - 1 11 50 2 -1. - <_> - 1 12 50 1 2. - 0 - <_> - - <_> - 1 12 50 1 -1. - <_> - 26 12 25 1 2. - 0 - <_> - - <_> - 2 0 6 13 -1. - <_> - 4 0 2 13 3. - 0 - <_> - - <_> - 2 0 24 3 -1. - <_> - 8 0 12 3 2. - 0 - <_> - - <_> - 2 0 12 10 -1. - <_> - 8 0 6 10 2. - 0 - <_> - - <_> - 2 0 33 11 -1. - <_> - 13 0 11 11 3. - 0 - <_> - - <_> - 2 0 20 2 -1. - <_> - 2 1 20 1 2. - 0 - <_> - - <_> - 2 0 48 12 -1. - <_> - 26 0 24 12 2. - 0 - <_> - - <_> - 2 1 4 6 -1. - <_> - 2 1 2 3 2. - <_> - 4 4 2 3 2. - 0 - <_> - - <_> - 2 1 16 9 -1. - <_> - 10 1 8 9 2. - 0 - <_> - - <_> - 2 1 11 9 -1. - <_> - 2 4 11 3 3. - 0 - <_> - - <_> - 2 1 18 10 -1. - <_> - 2 6 18 5 2. - 0 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 2 3 16 1 -1. - <_> - 6 3 8 1 2. - 0 - <_> - - <_> - 2 3 25 6 -1. - <_> - 2 6 25 3 2. - 0 - <_> - - <_> - 2 4 4 2 -1. - <_> - 3 4 2 2 2. - 0 - <_> - - <_> - 2 5 2 8 -1. - <_> - 2 5 1 4 2. - <_> - 3 9 1 4 2. - 0 - <_> - - <_> - 2 5 6 4 -1. - <_> - 5 5 3 4 2. - 0 - <_> - - <_> - 2 5 10 8 -1. - <_> - 2 7 10 4 2. - 0 - <_> - - <_> - 2 7 4 6 -1. - <_> - 2 7 2 3 2. - <_> - 4 10 2 3 2. - 0 - <_> - - <_> - 2 7 4 4 -1. - <_> - 2 9 4 2 2. - 0 - <_> - - <_> - 2 8 14 2 -1. - <_> - 9 8 7 2 2. - 0 - <_> - - <_> - 2 8 24 5 -1. - <_> - 14 8 12 5 2. - 0 - <_> - - <_> - 2 9 8 3 -1. - <_> - 6 9 4 3 2. - 0 - <_> - - <_> - 2 9 12 4 -1. - <_> - 6 9 4 4 3. - 0 - <_> - - <_> - 2 9 32 4 -1. - <_> - 2 9 16 2 2. - <_> - 18 11 16 2 2. - 0 - <_> - - <_> - 2 10 12 2 -1. - <_> - 2 10 6 1 2. - <_> - 8 11 6 1 2. - 0 - <_> - - <_> - 2 11 38 1 -1. - <_> - 21 11 19 1 2. - 0 - <_> - - <_> - 2 12 32 1 -1. - <_> - 18 12 16 1 2. - 0 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - 0 - <_> - - <_> - 3 0 3 9 -1. - <_> - 4 3 1 3 9. - 0 - <_> - - <_> - 3 0 6 11 -1. - <_> - 5 0 2 11 3. - 0 - <_> - - <_> - 3 0 6 12 -1. - <_> - 5 0 2 12 3. - 0 - <_> - - <_> - 3 0 16 10 -1. - <_> - 11 0 8 10 2. - 0 - <_> - - <_> - 3 0 42 9 -1. - <_> - 17 3 14 3 9. - 0 - <_> - - <_> - 3 0 15 6 -1. - <_> - 3 3 15 3 2. - 0 - <_> - - <_> - 3 0 30 13 -1. - <_> - 18 0 15 13 2. - 0 - <_> - - <_> - 3 1 3 9 -1. - <_> - 4 1 1 9 3. - 0 - <_> - - <_> - 3 1 6 10 -1. - <_> - 5 1 2 10 3. - 0 - <_> - - <_> - 3 1 15 12 -1. - <_> - 8 5 5 4 9. - 0 - <_> - - <_> - 3 1 21 3 -1. - <_> - 10 1 7 3 3. - 0 - <_> - - <_> - 3 1 32 7 -1. - <_> - 11 1 16 7 2. - 0 - <_> - - <_> - 3 1 33 11 -1. - <_> - 14 1 11 11 3. - 0 - <_> - - <_> - 3 1 42 9 -1. - <_> - 17 4 14 3 9. - 0 - <_> - - <_> - 3 1 29 10 -1. - <_> - 3 6 29 5 2. - 0 - <_> - - <_> - 3 2 1 2 -1. - <_> - 3 2 1 1 2. - 1 - <_> - - <_> - 3 2 6 11 -1. - <_> - 5 2 2 11 3. - 0 - <_> - - <_> - 3 2 16 3 -1. - <_> - 7 2 8 3 2. - 0 - <_> - - <_> - 3 2 46 6 -1. - <_> - 3 5 46 3 2. - 0 - <_> - - <_> - 3 3 14 10 -1. - <_> - 10 3 7 10 2. - 0 - <_> - - <_> - 3 3 40 5 -1. - <_> - 13 3 20 5 2. - 0 - <_> - - <_> - 3 5 2 2 -1. - <_> - 4 5 1 2 2. - 0 - <_> - - <_> - 3 5 16 5 -1. - <_> - 7 5 8 5 2. - 0 - <_> - - <_> - 3 5 16 2 -1. - <_> - 3 5 8 1 2. - <_> - 11 6 8 1 2. - 0 - <_> - - <_> - 3 6 8 3 -1. - <_> - 7 6 4 3 2. - 0 - <_> - - <_> - 3 7 16 6 -1. - <_> - 11 7 8 6 2. - 0 - <_> - - <_> - 3 7 45 2 -1. - <_> - 3 8 45 1 2. - 0 - <_> - - <_> - 3 9 9 4 -1. - <_> - 6 9 3 4 3. - 0 - <_> - - <_> - 3 10 6 3 -1. - <_> - 5 11 2 1 9. - 0 - <_> - - <_> - 3 11 9 2 -1. - <_> - 3 12 9 1 2. - 0 - <_> - - <_> - 3 11 48 2 -1. - <_> - 3 12 48 1 2. - 0 - <_> - - <_> - 4 0 4 1 -1. - <_> - 4 0 2 1 2. - 1 - <_> - - <_> - 4 0 6 11 -1. - <_> - 6 0 2 11 3. - 0 - <_> - - <_> - 4 0 4 12 -1. - <_> - 4 3 4 6 2. - 0 - <_> - - <_> - 4 0 18 4 -1. - <_> - 10 0 6 4 3. - 0 - <_> - - <_> - 4 1 6 9 -1. - <_> - 6 1 2 9 3. - 0 - <_> - - <_> - 4 1 14 2 -1. - <_> - 11 1 7 2 2. - 0 - <_> - - <_> - 4 1 36 4 -1. - <_> - 22 1 18 4 2. - 0 - <_> - - <_> - 4 2 3 11 -1. - <_> - 5 2 1 11 3. - 0 - <_> - - <_> - 4 2 6 5 -1. - <_> - 6 2 2 5 3. - 0 - <_> - - <_> - 4 2 6 10 -1. - <_> - 6 2 2 10 3. - 0 - <_> - - <_> - 4 2 10 10 -1. - <_> - 4 2 5 5 2. - <_> - 9 7 5 5 2. - 0 - <_> - - <_> - 4 2 21 3 -1. - <_> - 11 2 7 3 3. - 0 - <_> - - <_> - 4 2 27 8 -1. - <_> - 4 4 27 4 2. - 0 - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 4 3 2 6 -1. - <_> - 4 5 2 2 3. - 0 - <_> - - <_> - 4 3 6 5 -1. - <_> - 6 3 2 5 3. - 0 - <_> - - <_> - 4 3 30 6 -1. - <_> - 14 5 10 2 9. - 0 - <_> - - <_> - 4 3 37 8 -1. - <_> - 4 5 37 4 2. - 0 - <_> - - <_> - 4 4 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 2 2. - 1 - <_> - - <_> - 4 4 7 3 -1. - <_> - 4 5 7 1 3. - 0 - <_> - - <_> - 4 4 23 9 -1. - <_> - 4 7 23 3 3. - 0 - <_> - - <_> - 4 5 5 4 -1. - <_> - 4 7 5 2 2. - 0 - <_> - - <_> - 4 7 42 4 -1. - <_> - 4 8 42 2 2. - 0 - <_> - - <_> - 4 8 16 1 -1. - <_> - 12 8 8 1 2. - 0 - <_> - - <_> - 4 9 24 4 -1. - <_> - 10 9 12 4 2. - 0 - <_> - - <_> - 4 10 10 2 -1. - <_> - 4 10 5 1 2. - <_> - 9 11 5 1 2. - 0 - <_> - - <_> - 4 10 7 2 -1. - <_> - 4 11 7 1 2. - 0 - <_> - - <_> - 5 0 16 8 -1. - <_> - 9 0 8 8 2. - 0 - <_> - - <_> - 5 0 24 13 -1. - <_> - 13 0 8 13 3. - 0 - <_> - - <_> - 5 1 8 12 -1. - <_> - 5 1 4 6 2. - <_> - 9 7 4 6 2. - 0 - <_> - - <_> - 5 1 36 12 -1. - <_> - 5 7 36 6 2. - 0 - <_> - - <_> - 5 2 3 10 -1. - <_> - 6 2 1 10 3. - 0 - <_> - - <_> - 5 2 6 6 -1. - <_> - 7 2 2 6 3. - 0 - <_> - - <_> - 5 2 3 6 -1. - <_> - 5 5 3 3 2. - 0 - <_> - - <_> - 5 2 12 9 -1. - <_> - 5 5 12 3 3. - 0 - <_> - - <_> - 5 2 34 8 -1. - <_> - 5 6 34 4 2. - 0 - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 3 1 6 3. - 0 - <_> - - <_> - 5 3 6 4 -1. - <_> - 7 3 2 4 3. - 0 - <_> - - <_> - 5 3 4 5 -1. - <_> - 7 3 2 5 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 7 3 2 6 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 5 6 4 3 2. - 0 - <_> - - <_> - 5 3 21 8 -1. - <_> - 12 3 7 8 3. - 0 - <_> - - <_> - 5 4 3 7 -1. - <_> - 6 4 1 7 3. - 0 - <_> - - <_> - 5 4 3 9 -1. - <_> - 6 4 1 9 3. - 0 - <_> - - <_> - 5 4 18 6 -1. - <_> - 11 6 6 2 9. - 0 - <_> - - <_> - 5 4 27 9 -1. - <_> - 14 7 9 3 9. - 0 - <_> - - <_> - 5 4 24 6 -1. - <_> - 17 4 12 6 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 6 5 2 2 2. - 0 - <_> - - <_> - 5 5 2 3 -1. - <_> - 6 5 1 3 2. - 0 - <_> - - <_> - 5 5 3 4 -1. - <_> - 6 5 1 4 3. - 0 - <_> - - <_> - 5 5 4 7 -1. - <_> - 6 5 2 7 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 5 5 6 4 -1. - <_> - 7 5 2 4 3. - 0 - <_> - - <_> - 5 5 4 4 -1. - <_> - 5 7 4 2 2. - 0 - <_> - - <_> - 5 6 4 6 -1. - <_> - 6 6 2 6 2. - 0 - <_> - - <_> - 5 6 12 2 -1. - <_> - 11 6 6 2 2. - 0 - <_> - - <_> - 5 7 3 6 -1. - <_> - 5 9 3 2 3. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 5 7 3 3 2. - <_> - 8 10 3 3 2. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 8 7 3 6 2. - 0 - <_> - - <_> - 5 7 12 6 -1. - <_> - 5 10 12 3 2. - 0 - <_> - - <_> - 5 9 9 4 -1. - <_> - 8 9 3 4 3. - 0 - <_> - - <_> - 5 10 6 2 -1. - <_> - 5 10 3 1 2. - <_> - 8 11 3 1 2. - 0 - <_> - - <_> - 5 10 20 3 -1. - <_> - 10 10 10 3 2. - 0 - <_> - - <_> - 5 11 16 2 -1. - <_> - 5 12 16 1 2. - 0 - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 3 6 1 2. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 4 2 3 2 3. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 6 0 3 5 2. - 1 - <_> - - <_> - 6 0 8 2 -1. - <_> - 6 0 4 1 2. - <_> - 10 1 4 1 2. - 0 - <_> - - <_> - 6 0 33 13 -1. - <_> - 17 0 11 13 3. - 0 - <_> - - <_> - 6 1 4 5 -1. - <_> - 7 1 2 5 2. - 0 - <_> - - <_> - 6 1 2 11 -1. - <_> - 7 1 1 11 2. - 0 - <_> - - <_> - 6 1 6 12 -1. - <_> - 8 1 2 12 3. - 0 - <_> - - <_> - 6 1 12 11 -1. - <_> - 12 1 6 11 2. - 0 - <_> - - <_> - 6 2 4 4 -1. - <_> - 7 2 2 4 2. - 0 - <_> - - <_> - 6 2 3 7 -1. - <_> - 7 2 1 7 3. - 0 - <_> - - <_> - 6 2 12 10 -1. - <_> - 12 2 6 10 2. - 0 - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 6 1 3 2. - 0 - <_> - - <_> - 6 3 3 8 -1. - <_> - 7 3 1 8 3. - 0 - <_> - - <_> - 6 3 37 6 -1. - <_> - 6 6 37 3 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 4 1 4 3. - 0 - <_> - - <_> - 6 4 8 2 -1. - <_> - 8 4 4 2 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 6 6 3 2 2. - 0 - <_> - - <_> - 6 4 3 6 -1. - <_> - 6 6 3 2 3. - 0 - <_> - - <_> - 6 4 9 9 -1. - <_> - 9 7 3 3 9. - 0 - <_> - - <_> - 6 6 4 5 -1. - <_> - 7 6 2 5 2. - 0 - <_> - - <_> - 6 6 4 6 -1. - <_> - 7 6 2 6 2. - 0 - <_> - - <_> - 6 9 6 4 -1. - <_> - 6 9 3 2 2. - <_> - 9 11 3 2 2. - 0 - <_> - - <_> - 6 10 20 3 -1. - <_> - 11 10 10 3 2. - 0 - <_> - - <_> - 6 11 7 2 -1. - <_> - 6 12 7 1 2. - 0 - <_> - - <_> - 6 11 17 2 -1. - <_> - 6 12 17 1 2. - 0 - <_> - - <_> - 7 0 12 1 -1. - <_> - 10 0 6 1 2. - 0 - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - 0 - <_> - - <_> - 7 0 32 9 -1. - <_> - 23 0 16 9 2. - 0 - <_> - - <_> - 7 0 38 13 -1. - <_> - 26 0 19 13 2. - 0 - <_> - - <_> - 7 1 4 2 -1. - <_> - 8 2 2 2 2. - 1 - <_> - - <_> - 7 1 16 10 -1. - <_> - 11 1 8 10 2. - 0 - <_> - - <_> - 7 1 15 6 -1. - <_> - 12 1 5 6 3. - 0 - <_> - - <_> - 7 1 15 8 -1. - <_> - 12 1 5 8 3. - 0 - <_> - - <_> - 7 1 15 11 -1. - <_> - 12 1 5 11 3. - 0 - <_> - - <_> - 7 1 7 6 -1. - <_> - 7 4 7 3 2. - 0 - <_> - - <_> - 7 2 1 4 -1. - <_> - 6 3 1 2 2. - 1 - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 3 2 2 2. - 1 - <_> - - <_> - 7 2 4 7 -1. - <_> - 8 3 2 7 2. - 1 - <_> - - <_> - 7 2 2 9 -1. - <_> - 8 2 1 9 2. - 0 - <_> - - <_> - 7 2 6 3 -1. - <_> - 9 3 2 1 9. - 0 - <_> - - <_> - 7 3 2 5 -1. - <_> - 8 3 1 5 2. - 0 - <_> - - <_> - 7 3 2 6 -1. - <_> - 8 3 1 6 2. - 0 - <_> - - <_> - 7 3 3 7 -1. - <_> - 8 3 1 7 3. - 0 - <_> - - <_> - 7 4 1 4 -1. - <_> - 7 5 1 2 2. - 0 - <_> - - <_> - 7 4 3 7 -1. - <_> - 8 4 1 7 3. - 0 - <_> - - <_> - 7 4 28 9 -1. - <_> - 21 4 14 9 2. - 0 - <_> - - <_> - 7 5 3 6 -1. - <_> - 8 5 1 6 3. - 0 - <_> - - <_> - 7 5 4 6 -1. - <_> - 8 5 2 6 2. - 0 - <_> - - <_> - 7 5 4 4 -1. - <_> - 7 5 2 2 2. - <_> - 9 7 2 2 2. - 0 - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - 0 - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 6 1 6 3. - 0 - <_> - - <_> - 7 10 4 2 -1. - <_> - 7 10 2 1 2. - <_> - 9 11 2 1 2. - 0 - <_> - - <_> - 7 10 6 2 -1. - <_> - 7 11 6 1 2. - 0 - <_> - - <_> - 7 11 36 2 -1. - <_> - 7 11 18 1 2. - <_> - 25 12 18 1 2. - 0 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 8 0 2 8 -1. - <_> - 8 0 1 8 2. - 1 - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 0 3 2 2. - <_> - 11 2 3 2 2. - 0 - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 0 4 1 2. - <_> - 12 1 4 1 2. - 0 - <_> - - <_> - 8 0 10 12 -1. - <_> - 13 0 5 12 2. - 0 - <_> - - <_> - 8 0 15 12 -1. - <_> - 13 0 5 12 3. - 0 - <_> - - <_> - 8 0 15 13 -1. - <_> - 13 0 5 13 3. - 0 - <_> - - <_> - 8 0 8 6 -1. - <_> - 8 3 8 3 2. - 0 - <_> - - <_> - 8 1 3 2 -1. - <_> - 9 2 1 2 3. - 1 - <_> - - <_> - 8 1 12 3 -1. - <_> - 12 1 4 3 3. - 0 - <_> - - <_> - 8 1 8 6 -1. - <_> - 12 1 4 6 2. - 0 - <_> - - <_> - 8 1 15 4 -1. - <_> - 13 1 5 4 3. - 0 - <_> - - <_> - 8 1 15 12 -1. - <_> - 13 1 5 12 3. - 0 - <_> - - <_> - 8 1 8 10 -1. - <_> - 8 6 8 5 2. - 0 - <_> - - <_> - 8 1 10 8 -1. - <_> - 8 3 10 4 2. - 0 - <_> - - <_> - 8 2 4 3 -1. - <_> - 9 2 2 3 2. - 0 - <_> - - <_> - 8 2 3 4 -1. - <_> - 9 2 1 4 3. - 0 - <_> - - <_> - 8 2 4 4 -1. - <_> - 9 2 2 4 2. - 0 - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - 0 - <_> - - <_> - 8 2 7 4 -1. - <_> - 8 4 7 2 2. - 0 - <_> - - <_> - 8 3 4 3 -1. - <_> - 9 3 2 3 2. - 0 - <_> - - <_> - 8 4 10 9 -1. - <_> - 13 4 5 9 2. - 0 - <_> - - <_> - 8 5 23 2 -1. - <_> - 8 6 23 1 2. - 0 - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 8 6 3 5 -1. - <_> - 9 6 1 5 3. - 0 - <_> - - <_> - 8 6 3 6 -1. - <_> - 9 6 1 6 3. - 0 - <_> - - <_> - 8 7 6 2 -1. - <_> - 11 7 3 2 2. - 0 - <_> - - <_> - 8 9 4 4 -1. - <_> - 8 11 4 2 2. - 0 - <_> - - <_> - 8 10 8 2 -1. - <_> - 8 11 8 1 2. - 0 - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - 0 - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - 0 - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 1 2 1 9. - 0 - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 0 2 2 2. - <_> - 11 2 2 2 2. - 0 - <_> - - <_> - 9 0 12 12 -1. - <_> - 13 0 4 12 3. - 0 - <_> - - <_> - 9 1 3 2 -1. - <_> - 10 2 1 2 3. - 1 - <_> - - <_> - 9 1 12 2 -1. - <_> - 13 1 4 2 3. - 0 - <_> - - <_> - 9 1 12 4 -1. - <_> - 13 1 4 4 3. - 0 - <_> - - <_> - 9 1 12 11 -1. - <_> - 13 1 4 11 3. - 0 - <_> - - <_> - 9 1 8 12 -1. - <_> - 13 1 4 12 2. - 0 - <_> - - <_> - 9 1 12 12 -1. - <_> - 13 1 4 12 3. - 0 - <_> - - <_> - 9 2 12 10 -1. - <_> - 13 2 4 10 3. - 0 - <_> - - <_> - 9 3 4 8 -1. - <_> - 9 7 4 4 2. - 0 - <_> - - <_> - 9 3 6 8 -1. - <_> - 9 7 6 4 2. - 0 - <_> - - <_> - 9 4 33 4 -1. - <_> - 9 5 33 2 2. - 0 - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 5 2 3 2. - <_> - 11 8 2 3 2. - 0 - <_> - - <_> - 9 7 8 6 -1. - <_> - 9 9 8 2 3. - 0 - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 9 1 1 9. - 0 - <_> - - <_> - 9 8 3 2 -1. - <_> - 10 9 1 2 3. - 1 - <_> - - <_> - 9 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 9 8 20 1 -1. - <_> - 19 8 10 1 2. - 0 - <_> - - <_> - 9 9 2 4 -1. - <_> - 9 11 2 2 2. - 0 - <_> - - <_> - 9 10 6 2 -1. - <_> - 9 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - <_> - - <_> - 9 10 16 3 -1. - <_> - 13 10 8 3 2. - 0 - <_> - - <_> - 9 10 42 3 -1. - <_> - 30 10 21 3 2. - 0 - <_> - - <_> - 9 12 42 1 -1. - <_> - 23 12 14 1 3. - 0 - <_> - - <_> - 10 0 12 2 -1. - <_> - 10 0 6 1 2. - <_> - 16 1 6 1 2. - 0 - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 1 8 1 2. - 0 - <_> - - <_> - 10 1 9 11 -1. - <_> - 13 1 3 11 3. - 0 - <_> - - <_> - 10 1 12 2 -1. - <_> - 14 1 4 2 3. - 0 - <_> - - <_> - 10 2 3 9 -1. - <_> - 11 5 1 3 9. - 0 - <_> - - <_> - 10 2 4 5 -1. - <_> - 11 2 2 5 2. - 0 - <_> - - <_> - 10 2 12 11 -1. - <_> - 13 2 6 11 2. - 0 - <_> - - <_> - 10 2 4 3 -1. - <_> - 9 3 4 1 3. - 1 - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 3 1 2 2. - <_> - 11 5 1 2 2. - 0 - <_> - - <_> - 10 4 8 1 -1. - <_> - 10 4 4 1 2. - 1 - <_> - - <_> - 10 6 4 4 -1. - <_> - 10 6 2 2 2. - <_> - 12 8 2 2 2. - 0 - <_> - - <_> - 10 6 6 5 -1. - <_> - 13 6 3 5 2. - 0 - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 9 2 2 3. - 0 - <_> - - <_> - 10 9 2 3 -1. - <_> - 10 10 2 1 3. - 0 - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - 0 - <_> - - <_> - 10 11 3 2 -1. - <_> - 10 12 3 1 2. - 0 - <_> - - <_> - 10 11 6 2 -1. - <_> - 10 12 6 1 2. - 0 - <_> - - <_> - 11 0 3 8 -1. - <_> - 11 4 3 4 2. - 0 - <_> - - <_> - 11 0 12 12 -1. - <_> - 15 0 4 12 3. - 0 - <_> - - <_> - 11 0 10 4 -1. - <_> - 11 0 5 2 2. - <_> - 16 2 5 2 2. - 0 - <_> - - <_> - 11 0 6 6 -1. - <_> - 11 3 6 3 2. - 0 - <_> - - <_> - 11 0 21 7 -1. - <_> - 18 0 7 7 3. - 0 - <_> - - <_> - 11 0 10 3 -1. - <_> - 10 1 10 1 3. - 1 - <_> - - <_> - 11 0 36 9 -1. - <_> - 29 0 18 9 2. - 0 - <_> - - <_> - 11 1 2 3 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 11 1 9 11 -1. - <_> - 14 1 3 11 3. - 0 - <_> - - <_> - 11 1 12 11 -1. - <_> - 15 1 4 11 3. - 0 - <_> - - <_> - 11 2 9 9 -1. - <_> - 14 5 3 3 9. - 0 - <_> - - <_> - 11 2 12 5 -1. - <_> - 14 2 6 5 2. - 0 - <_> - - <_> - 11 3 6 9 -1. - <_> - 13 6 2 3 9. - 0 - <_> - - <_> - 11 3 3 3 -1. - <_> - 10 4 3 1 3. - 1 - <_> - - <_> - 11 3 27 6 -1. - <_> - 11 6 27 3 2. - 0 - <_> - - <_> - 11 4 6 9 -1. - <_> - 13 7 2 3 9. - 0 - <_> - - <_> - 11 4 26 6 -1. - <_> - 11 7 26 3 2. - 0 - <_> - - <_> - 11 4 27 6 -1. - <_> - 11 7 27 3 2. - 0 - <_> - - <_> - 11 4 31 2 -1. - <_> - 11 5 31 1 2. - 0 - <_> - - <_> - 11 4 35 2 -1. - <_> - 11 5 35 1 2. - 0 - <_> - - <_> - 11 7 30 3 -1. - <_> - 21 8 10 1 9. - 0 - <_> - - <_> - 11 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 11 8 6 4 -1. - <_> - 11 10 6 2 2. - 0 - <_> - - <_> - 11 9 8 2 -1. - <_> - 13 9 4 2 2. - 0 - <_> - - <_> - 12 0 4 1 -1. - <_> - 14 0 2 1 2. - 0 - <_> - - <_> - 12 0 16 5 -1. - <_> - 16 0 8 5 2. - 0 - <_> - - <_> - 12 0 16 13 -1. - <_> - 16 0 8 13 2. - 0 - <_> - - <_> - 12 0 18 5 -1. - <_> - 18 0 6 5 3. - 0 - <_> - - <_> - 12 0 7 2 -1. - <_> - 12 1 7 1 2. - 0 - <_> - - <_> - 12 1 6 12 -1. - <_> - 14 5 2 4 9. - 0 - <_> - - <_> - 12 1 10 2 -1. - <_> - 17 1 5 2 2. - 0 - <_> - - <_> - 12 2 2 3 -1. - <_> - 12 2 1 3 2. - 1 - <_> - - <_> - 12 2 9 2 -1. - <_> - 15 2 3 2 3. - 0 - <_> - - <_> - 12 2 12 4 -1. - <_> - 16 2 4 4 3. - 0 - <_> - - <_> - 12 2 28 2 -1. - <_> - 19 2 14 2 2. - 0 - <_> - - <_> - 12 3 6 2 -1. - <_> - 14 5 2 2 3. - 1 - <_> - - <_> - 12 4 4 5 -1. - <_> - 13 5 2 5 2. - 1 - <_> - - <_> - 12 4 4 3 -1. - <_> - 12 4 2 3 2. - 1 - <_> - - <_> - 12 4 6 6 -1. - <_> - 14 4 2 6 3. - 0 - <_> - - <_> - 12 4 5 2 -1. - <_> - 12 5 5 1 2. - 0 - <_> - - <_> - 12 4 18 9 -1. - <_> - 18 7 6 3 9. - 0 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - 0 - <_> - - <_> - 12 5 18 6 -1. - <_> - 18 7 6 2 9. - 0 - <_> - - <_> - 12 7 21 3 -1. - <_> - 19 8 7 1 9. - 0 - <_> - - <_> - 12 12 6 1 -1. - <_> - 14 12 2 1 3. - 0 - <_> - - <_> - 12 12 39 1 -1. - <_> - 25 12 13 1 3. - 0 - <_> - - <_> - 13 0 16 5 -1. - <_> - 17 0 8 5 2. - 0 - <_> - - <_> - 13 0 5 8 -1. - <_> - 11 2 5 4 2. - 1 - <_> - - <_> - 13 0 24 10 -1. - <_> - 19 0 12 10 2. - 0 - <_> - - <_> - 13 0 36 3 -1. - <_> - 22 0 18 3 2. - 0 - <_> - - <_> - 13 0 28 1 -1. - <_> - 27 0 14 1 2. - 0 - <_> - - <_> - 13 1 8 3 -1. - <_> - 17 1 4 3 2. - 0 - <_> - - <_> - 13 1 8 6 -1. - <_> - 17 1 4 6 2. - 0 - <_> - - <_> - 13 1 20 7 -1. - <_> - 18 1 10 7 2. - 0 - <_> - - <_> - 13 1 36 1 -1. - <_> - 31 1 18 1 2. - 0 - <_> - - <_> - 13 1 20 3 -1. - <_> - 13 2 20 1 3. - 0 - <_> - - <_> - 13 2 14 1 -1. - <_> - 20 2 7 1 2. - 0 - <_> - - <_> - 13 3 3 8 -1. - <_> - 13 5 3 4 2. - 0 - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 4 4 1 2. - 0 - <_> - - <_> - 13 4 5 2 -1. - <_> - 13 5 5 1 2. - 0 - <_> - - <_> - 13 5 4 3 -1. - <_> - 13 5 2 3 2. - 1 - <_> - - <_> - 13 5 24 6 -1. - <_> - 19 5 12 6 2. - 0 - <_> - - <_> - 13 5 32 6 -1. - <_> - 13 8 32 3 2. - 0 - <_> - - <_> - 13 6 1 3 -1. - <_> - 12 7 1 1 3. - 1 - <_> - - <_> - 13 6 3 6 -1. - <_> - 13 8 3 2 3. - 0 - <_> - - <_> - 13 7 3 4 -1. - <_> - 13 9 3 2 2. - 0 - <_> - - <_> - 13 8 6 2 -1. - <_> - 13 9 6 1 2. - 0 - <_> - - <_> - 13 9 10 4 -1. - <_> - 18 9 5 4 2. - 0 - <_> - - <_> - 13 9 18 4 -1. - <_> - 19 9 6 4 3. - 0 - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - 0 - <_> - - <_> - 14 0 1 8 -1. - <_> - 14 4 1 4 2. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 4 1 4 3. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 6 1 6 2. - 0 - <_> - - <_> - 14 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 18 2 4 2 2. - 0 - <_> - - <_> - 14 0 12 6 -1. - <_> - 18 2 4 2 9. - 0 - <_> - - <_> - 14 0 16 4 -1. - <_> - 18 0 8 4 2. - 0 - <_> - - <_> - 14 1 1 4 -1. - <_> - 14 3 1 2 2. - 0 - <_> - - <_> - 14 1 2 4 -1. - <_> - 14 2 2 2 2. - 0 - <_> - - <_> - 14 1 2 12 -1. - <_> - 14 7 2 6 2. - 0 - <_> - - <_> - 14 2 2 8 -1. - <_> - 14 4 2 4 2. - 0 - <_> - - <_> - 14 2 2 9 -1. - <_> - 14 5 2 3 3. - 0 - <_> - - <_> - 14 2 18 4 -1. - <_> - 14 2 9 2 2. - <_> - 23 4 9 2 2. - 0 - <_> - - <_> - 14 3 12 9 -1. - <_> - 14 6 12 3 3. - 0 - <_> - - <_> - 14 4 2 1 -1. - <_> - 15 4 1 1 2. - 0 - <_> - - <_> - 14 4 16 1 -1. - <_> - 22 4 8 1 2. - 0 - <_> - - <_> - 14 5 2 4 -1. - <_> - 14 6 2 2 2. - 0 - <_> - - <_> - 14 5 2 6 -1. - <_> - 14 8 2 3 2. - 0 - <_> - - <_> - 14 5 3 4 -1. - <_> - 14 6 3 2 2. - 0 - <_> - - <_> - 14 5 3 6 -1. - <_> - 14 8 3 3 2. - 0 - <_> - - <_> - 14 5 4 3 -1. - <_> - 13 6 4 1 3. - 1 - <_> - - <_> - 14 6 3 4 -1. - <_> - 14 8 3 2 2. - 0 - <_> - - <_> - 14 7 3 2 -1. - <_> - 14 8 3 1 2. - 0 - <_> - - <_> - 14 8 2 3 -1. - <_> - 15 8 1 3 2. - 0 - <_> - - <_> - 14 8 9 2 -1. - <_> - 17 8 3 2 3. - 0 - <_> - - <_> - 14 8 6 4 -1. - <_> - 17 8 3 4 2. - 0 - <_> - - <_> - 14 9 2 2 -1. - <_> - 14 10 2 1 2. - 0 - <_> - - <_> - 14 9 16 4 -1. - <_> - 18 9 8 4 2. - 0 - <_> - - <_> - 14 11 15 2 -1. - <_> - 19 11 5 2 3. - 0 - <_> - - <_> - 14 12 2 1 -1. - <_> - 15 12 1 1 2. - 0 - <_> - - <_> - 14 12 3 1 -1. - <_> - 15 12 1 1 3. - 0 - <_> - - <_> - 15 0 4 1 -1. - <_> - 16 0 2 1 2. - 0 - <_> - - <_> - 15 0 10 2 -1. - <_> - 20 0 5 2 2. - 0 - <_> - - <_> - 15 0 15 2 -1. - <_> - 20 0 5 2 3. - 0 - <_> - - <_> - 15 0 33 9 -1. - <_> - 15 3 33 3 3. - 0 - <_> - - <_> - 15 1 1 12 -1. - <_> - 15 7 1 6 2. - 0 - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - 0 - <_> - - <_> - 15 1 36 2 -1. - <_> - 33 1 18 2 2. - 0 - <_> - - <_> - 15 2 1 9 -1. - <_> - 15 5 1 3 3. - 0 - <_> - - <_> - 15 2 3 4 -1. - <_> - 15 4 3 2 2. - 0 - <_> - - <_> - 15 2 9 9 -1. - <_> - 18 5 3 3 9. - 0 - <_> - - <_> - 15 2 24 6 -1. - <_> - 15 2 12 3 2. - <_> - 27 5 12 3 2. - 0 - <_> - - <_> - 15 3 4 3 -1. - <_> - 16 4 2 3 2. - 1 - <_> - - <_> - 15 3 4 6 -1. - <_> - 15 6 4 3 2. - 0 - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 6 3 2 2. - 0 - <_> - - <_> - 15 4 6 3 -1. - <_> - 14 5 6 1 3. - 1 - <_> - - <_> - 15 6 4 4 -1. - <_> - 15 6 2 2 2. - <_> - 17 8 2 2 2. - 0 - <_> - - <_> - 15 8 1 3 -1. - <_> - 15 9 1 1 3. - 0 - <_> - - <_> - 15 8 15 5 -1. - <_> - 20 8 5 5 3. - 0 - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - 0 - <_> - - <_> - 15 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 16 10 1 1 2. - 0 - <_> - - <_> - 15 10 13 3 -1. - <_> - 15 11 13 1 3. - 0 - <_> - - <_> - 15 10 34 3 -1. - <_> - 15 11 34 1 3. - 0 - <_> - - <_> - 15 11 35 2 -1. - <_> - 15 12 35 1 2. - 0 - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 16 0 4 8 -1. - <_> - 16 0 2 8 2. - 1 - <_> - - <_> - 16 0 12 1 -1. - <_> - 19 0 6 1 2. - 0 - <_> - - <_> - 16 0 6 6 -1. - <_> - 14 2 6 2 3. - 1 - <_> - - <_> - 16 0 26 4 -1. - <_> - 29 0 13 4 2. - 0 - <_> - - <_> - 16 1 18 12 -1. - <_> - 22 1 6 12 3. - 0 - <_> - - <_> - 16 1 18 2 -1. - <_> - 16 2 18 1 2. - 0 - <_> - - <_> - 16 2 4 5 -1. - <_> - 16 2 2 5 2. - 1 - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - 0 - <_> - - <_> - 16 5 5 3 -1. - <_> - 15 6 5 1 3. - 1 - <_> - - <_> - 16 9 15 4 -1. - <_> - 21 9 5 4 3. - 0 - <_> - - <_> - 16 9 18 4 -1. - <_> - 22 9 6 4 3. - 0 - <_> - - <_> - 17 0 1 6 -1. - <_> - 15 2 1 2 3. - 1 - <_> - - <_> - 17 0 6 2 -1. - <_> - 17 1 6 1 2. - 0 - <_> - - <_> - 17 0 18 5 -1. - <_> - 23 0 6 5 3. - 0 - <_> - - <_> - 17 0 8 2 -1. - <_> - 17 1 8 1 2. - 0 - <_> - - <_> - 17 0 11 4 -1. - <_> - 17 2 11 2 2. - 0 - <_> - - <_> - 17 0 16 3 -1. - <_> - 17 1 16 1 3. - 0 - <_> - - <_> - 17 0 17 3 -1. - <_> - 17 1 17 1 3. - 0 - <_> - - <_> - 17 0 19 2 -1. - <_> - 17 1 19 1 2. - 0 - <_> - - <_> - 17 0 20 4 -1. - <_> - 17 1 20 2 2. - 0 - <_> - - <_> - 17 0 32 8 -1. - <_> - 17 4 32 4 2. - 0 - <_> - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - 0 - <_> - - <_> - 17 7 8 1 -1. - <_> - 21 7 4 1 2. - 0 - <_> - - <_> - 17 7 21 3 -1. - <_> - 17 8 21 1 3. - 0 - <_> - - <_> - 17 7 28 6 -1. - <_> - 17 9 28 2 3. - 0 - <_> - - <_> - 18 0 3 1 -1. - <_> - 19 0 1 1 3. - 0 - <_> - - <_> - 18 0 2 5 -1. - <_> - 18 0 1 5 2. - 1 - <_> - - <_> - 18 0 3 4 -1. - <_> - 18 2 3 2 2. - 0 - <_> - - <_> - 18 0 11 2 -1. - <_> - 18 1 11 1 2. - 0 - <_> - - <_> - 18 0 18 3 -1. - <_> - 18 1 18 1 3. - 0 - <_> - - <_> - 18 1 17 2 -1. - <_> - 18 2 17 1 2. - 0 - <_> - - <_> - 18 2 4 4 -1. - <_> - 19 2 2 4 2. - 0 - <_> - - <_> - 18 2 2 6 -1. - <_> - 16 4 2 2 3. - 1 - <_> - - <_> - 18 2 6 4 -1. - <_> - 20 2 2 4 3. - 0 - <_> - - <_> - 18 3 3 2 -1. - <_> - 19 3 1 2 3. - 0 - <_> - - <_> - 18 7 4 3 -1. - <_> - 19 7 2 3 2. - 0 - <_> - - <_> - 18 8 4 2 -1. - <_> - 19 8 2 2 2. - 0 - <_> - - <_> - 18 8 4 3 -1. - <_> - 19 8 2 3 2. - 0 - <_> - - <_> - 18 10 27 3 -1. - <_> - 18 11 27 1 3. - 0 - <_> - - <_> - 19 0 2 1 -1. - <_> - 20 0 1 1 2. - 0 - <_> - - <_> - 19 0 3 1 -1. - <_> - 20 0 1 1 3. - 0 - <_> - - <_> - 19 0 3 8 -1. - <_> - 20 1 1 8 3. - 1 - <_> - - <_> - 19 1 3 6 -1. - <_> - 20 3 1 2 9. - 0 - <_> - - <_> - 19 1 9 12 -1. - <_> - 22 1 3 12 3. - 0 - <_> - - <_> - 19 1 17 2 -1. - <_> - 19 2 17 1 2. - 0 - <_> - - <_> - 19 3 6 2 -1. - <_> - 21 3 2 2 3. - 0 - <_> - - <_> - 19 4 4 4 -1. - <_> - 19 4 2 2 2. - <_> - 21 6 2 2 2. - 0 - <_> - - <_> - 19 12 2 1 -1. - <_> - 20 12 1 1 2. - 0 - <_> - - <_> - 20 0 4 1 -1. - <_> - 21 0 2 1 2. - 0 - <_> - - <_> - 20 0 4 11 -1. - <_> - 21 0 2 11 2. - 0 - <_> - - <_> - 20 0 6 1 -1. - <_> - 22 0 2 1 3. - 0 - <_> - - <_> - 20 0 12 12 -1. - <_> - 24 0 4 12 3. - 0 - <_> - - <_> - 20 0 12 3 -1. - <_> - 26 0 6 3 2. - 0 - <_> - - <_> - 20 0 18 3 -1. - <_> - 26 0 6 3 3. - 0 - <_> - - <_> - 20 0 18 4 -1. - <_> - 29 0 9 4 2. - 0 - <_> - - <_> - 20 0 26 1 -1. - <_> - 33 0 13 1 2. - 0 - <_> - - <_> - 20 0 22 4 -1. - <_> - 20 1 22 2 2. - 0 - <_> - - <_> - 20 2 3 2 -1. - <_> - 21 3 1 2 3. - 1 - <_> - - <_> - 20 3 4 8 -1. - <_> - 21 3 2 8 2. - 0 - <_> - - <_> - 20 4 3 9 -1. - <_> - 21 7 1 3 9. - 0 - <_> - - <_> - 20 5 3 5 -1. - <_> - 21 5 1 5 3. - 0 - <_> - - <_> - 20 5 4 8 -1. - <_> - 22 5 2 8 2. - 0 - <_> - - <_> - 20 6 3 2 -1. - <_> - 21 7 1 2 3. - 1 - <_> - - <_> - 20 6 4 2 -1. - <_> - 21 7 2 2 2. - 1 - <_> - - <_> - 20 6 24 6 -1. - <_> - 20 9 24 3 2. - 0 - <_> - - <_> - 20 8 4 2 -1. - <_> - 21 8 2 2 2. - 0 - <_> - - <_> - 20 9 4 4 -1. - <_> - 20 9 2 2 2. - <_> - 22 11 2 2 2. - 0 - <_> - - <_> - 20 9 18 4 -1. - <_> - 26 9 6 4 3. - 0 - <_> - - <_> - 20 12 4 1 -1. - <_> - 21 12 2 1 2. - 0 - <_> - - <_> - 21 0 2 6 -1. - <_> - 21 0 1 3 2. - <_> - 22 3 1 3 2. - 0 - <_> - - <_> - 21 0 4 2 -1. - <_> - 21 1 4 1 2. - 0 - <_> - - <_> - 21 0 28 1 -1. - <_> - 28 0 14 1 2. - 0 - <_> - - <_> - 21 0 21 4 -1. - <_> - 28 0 7 4 3. - 0 - <_> - - <_> - 21 0 14 5 -1. - <_> - 28 0 7 5 2. - 0 - <_> - - <_> - 21 1 4 11 -1. - <_> - 22 1 2 11 2. - 0 - <_> - - <_> - 21 2 25 9 -1. - <_> - 21 5 25 3 3. - 0 - <_> - - <_> - 21 3 4 9 -1. - <_> - 22 3 2 9 2. - 0 - <_> - - <_> - 21 3 6 1 -1. - <_> - 23 3 2 1 3. - 0 - <_> - - <_> - 21 6 4 2 -1. - <_> - 22 7 2 2 2. - 1 - <_> - - <_> - 21 7 3 2 -1. - <_> - 22 8 1 2 3. - 1 - <_> - - <_> - 21 7 3 3 -1. - <_> - 22 8 1 3 3. - 1 - <_> - - <_> - 21 7 6 4 -1. - <_> - 23 7 2 4 3. - 0 - <_> - - <_> - 21 10 21 3 -1. - <_> - 28 10 7 3 3. - 0 - <_> - - <_> - 21 10 18 3 -1. - <_> - 21 11 18 1 3. - 0 - <_> - - <_> - 21 12 30 1 -1. - <_> - 36 12 15 1 2. - 0 - <_> - - <_> - 22 0 4 1 -1. - <_> - 23 0 2 1 2. - 0 - <_> - - <_> - 22 0 8 1 -1. - <_> - 24 0 4 1 2. - 0 - <_> - - <_> - 22 0 12 4 -1. - <_> - 25 0 6 4 2. - 0 - <_> - - <_> - 22 0 15 2 -1. - <_> - 27 0 5 2 3. - 0 - <_> - - <_> - 22 0 28 2 -1. - <_> - 36 0 14 2 2. - 0 - <_> - - <_> - 22 1 15 2 -1. - <_> - 27 1 5 2 3. - 0 - <_> - - <_> - 22 1 8 3 -1. - <_> - 21 2 8 1 3. - 1 - <_> - - <_> - 22 2 3 3 -1. - <_> - 23 2 1 3 3. - 0 - <_> - - <_> - 22 2 3 9 -1. - <_> - 23 2 1 9 3. - 0 - <_> - - <_> - 22 2 3 10 -1. - <_> - 23 2 1 10 3. - 0 - <_> - - <_> - 22 5 3 3 -1. - <_> - 22 6 3 1 3. - 0 - <_> - - <_> - 22 6 2 3 -1. - <_> - 22 7 2 1 3. - 0 - <_> - - <_> - 22 7 2 3 -1. - <_> - 22 8 2 1 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 8 1 2 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 9 1 2 3. - 1 - <_> - - <_> - 22 8 2 2 -1. - <_> - 22 9 2 1 2. - 0 - <_> - - <_> - 22 9 4 4 -1. - <_> - 22 9 2 2 2. - <_> - 24 11 2 2 2. - 0 - <_> - - <_> - 22 9 9 2 -1. - <_> - 25 9 3 2 3. - 0 - <_> - - <_> - 22 9 6 4 -1. - <_> - 25 9 3 4 2. - 0 - <_> - - <_> - 22 9 9 4 -1. - <_> - 25 9 3 4 3. - 0 - <_> - - <_> - 22 10 6 2 -1. - <_> - 22 10 3 1 2. - <_> - 25 11 3 1 2. - 0 - <_> - - <_> - 23 0 3 1 -1. - <_> - 24 0 1 1 3. - 0 - <_> - - <_> - 23 0 6 1 -1. - <_> - 25 0 2 1 3. - 0 - <_> - - <_> - 23 0 4 4 -1. - <_> - 23 0 2 2 2. - <_> - 25 2 2 2 2. - 0 - <_> - - <_> - 23 0 8 12 -1. - <_> - 25 0 4 12 2. - 0 - <_> - - <_> - 23 0 12 1 -1. - <_> - 26 0 6 1 2. - 0 - <_> - - <_> - 23 0 21 2 -1. - <_> - 23 1 21 1 2. - 0 - <_> - - <_> - 23 2 12 10 -1. - <_> - 29 2 6 10 2. - 0 - <_> - - <_> - 23 3 4 2 -1. - <_> - 24 3 2 2 2. - 0 - <_> - - <_> - 23 4 2 4 -1. - <_> - 22 5 2 2 2. - 1 - <_> - - <_> - 23 4 12 9 -1. - <_> - 27 4 4 9 3. - 0 - <_> - - <_> - 23 5 1 3 -1. - <_> - 23 6 1 1 3. - 0 - <_> - - <_> - 23 6 9 1 -1. - <_> - 26 6 3 1 3. - 0 - <_> - - <_> - 23 8 4 3 -1. - <_> - 24 8 2 3 2. - 0 - <_> - - <_> - 23 9 4 1 -1. - <_> - 24 9 2 1 2. - 0 - <_> - - <_> - 23 9 8 4 -1. - <_> - 25 9 4 4 2. - 0 - <_> - - <_> - 23 9 12 4 -1. - <_> - 26 9 6 4 2. - 0 - <_> - - <_> - 23 11 6 2 -1. - <_> - 23 11 3 1 2. - <_> - 26 12 3 1 2. - 0 - <_> - - <_> - 24 0 3 1 -1. - <_> - 25 0 1 1 3. - 0 - <_> - - <_> - 24 0 4 1 -1. - <_> - 25 0 2 1 2. - 0 - <_> - - <_> - 24 0 4 6 -1. - <_> - 24 0 2 3 2. - <_> - 26 3 2 3 2. - 0 - <_> - - <_> - 24 0 17 2 -1. - <_> - 24 1 17 1 2. - 0 - <_> - - <_> - 24 0 22 2 -1. - <_> - 24 1 22 1 2. - 0 - <_> - - <_> - 24 1 4 4 -1. - <_> - 24 1 2 2 2. - <_> - 26 3 2 2 2. - 0 - <_> - - <_> - 24 1 13 2 -1. - <_> - 24 2 13 1 2. - 0 - <_> - - <_> - 24 2 2 2 -1. - <_> - 24 2 1 1 2. - <_> - 25 3 1 1 2. - 0 - <_> - - <_> - 24 6 6 1 -1. - <_> - 26 6 2 1 3. - 0 - <_> - - <_> - 24 7 4 6 -1. - <_> - 24 7 2 3 2. - <_> - 26 10 2 3 2. - 0 - <_> - - <_> - 24 8 2 5 -1. - <_> - 25 8 1 5 2. - 0 - <_> - - <_> - 24 9 15 4 -1. - <_> - 29 9 5 4 3. - 0 - <_> - - <_> - 24 10 27 3 -1. - <_> - 24 11 27 1 3. - 0 - <_> - - <_> - 25 0 3 1 -1. - <_> - 26 0 1 1 3. - 0 - <_> - - <_> - 25 0 3 2 -1. - <_> - 26 1 1 2 3. - 1 - <_> - - <_> - 25 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 25 0 8 1 -1. - <_> - 27 0 4 1 2. - 0 - <_> - - <_> - 25 0 26 3 -1. - <_> - 25 1 26 1 3. - 0 - <_> - - <_> - 25 1 2 4 -1. - <_> - 25 1 1 2 2. - <_> - 26 3 1 2 2. - 0 - <_> - - <_> - 25 1 3 2 -1. - <_> - 26 2 1 2 3. - 1 - <_> - - <_> - 25 2 3 2 -1. - <_> - 26 3 1 2 3. - 1 - <_> - - <_> - 25 4 4 1 -1. - <_> - 26 4 2 1 2. - 0 - <_> - - <_> - 25 4 4 6 -1. - <_> - 25 4 2 3 2. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 25 6 3 6 -1. - <_> - 26 8 1 2 9. - 0 - <_> - - <_> - 25 7 4 2 -1. - <_> - 26 7 2 2 2. - 0 - <_> - - <_> - 25 8 4 2 -1. - <_> - 26 8 2 2 2. - 0 - <_> - - <_> - 25 9 3 3 -1. - <_> - 26 9 1 3 3. - 0 - <_> - - <_> - 25 9 13 4 -1. - <_> - 25 11 13 2 2. - 0 - <_> - - <_> - 25 10 2 2 -1. - <_> - 25 11 2 1 2. - 0 - <_> - - <_> - 26 0 3 1 -1. - <_> - 27 0 1 1 3. - 0 - <_> - - <_> - 26 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 26 0 1 12 -1. - <_> - 23 3 1 6 2. - 1 - <_> - - <_> - 26 0 18 13 -1. - <_> - 32 0 6 13 3. - 0 - <_> - - <_> - 26 0 18 2 -1. - <_> - 35 0 9 2 2. - 0 - <_> - - <_> - 26 2 1 6 -1. - <_> - 26 4 1 2 3. - 0 - <_> - - <_> - 26 2 2 2 -1. - <_> - 26 2 1 2 2. - 1 - <_> - - <_> - 26 2 3 2 -1. - <_> - 27 3 1 2 3. - 1 - <_> - - <_> - 26 2 5 3 -1. - <_> - 25 3 5 1 3. - 1 - <_> - - <_> - 26 2 10 4 -1. - <_> - 26 3 10 2 2. - 0 - <_> - - <_> - 26 3 4 6 -1. - <_> - 26 3 2 3 2. - <_> - 28 6 2 3 2. - 0 - <_> - - <_> - 26 3 5 3 -1. - <_> - 25 4 5 1 3. - 1 - <_> - - <_> - 26 4 4 6 -1. - <_> - 26 4 2 3 2. - <_> - 28 7 2 3 2. - 0 - <_> - - <_> - 26 5 4 2 -1. - <_> - 26 5 2 1 2. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 5 4 4 -1. - <_> - 26 5 2 2 2. - <_> - 28 7 2 2 2. - 0 - <_> - - <_> - 26 6 1 6 -1. - <_> - 26 8 1 2 3. - 0 - <_> - - <_> - 26 6 4 1 -1. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 7 4 3 -1. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 26 7 4 6 -1. - <_> - 26 7 2 3 2. - <_> - 28 10 2 3 2. - 0 - <_> - - <_> - 26 7 18 6 -1. - <_> - 32 7 6 6 3. - 0 - <_> - - <_> - 26 7 17 6 -1. - <_> - 26 10 17 3 2. - 0 - <_> - - <_> - 26 8 3 1 -1. - <_> - 27 8 1 1 3. - 0 - <_> - - <_> - 26 9 12 4 -1. - <_> - 29 9 6 4 2. - 0 - <_> - - <_> - 26 11 20 1 -1. - <_> - 36 11 10 1 2. - 0 - <_> - - <_> - 27 0 2 1 -1. - <_> - 28 0 1 1 2. - 0 - <_> - - <_> - 27 0 3 1 -1. - <_> - 28 0 1 1 3. - 0 - <_> - - <_> - 27 0 4 1 -1. - <_> - 29 0 2 1 2. - 0 - <_> - - <_> - 27 0 18 2 -1. - <_> - 27 0 9 1 2. - <_> - 36 1 9 1 2. - 0 - <_> - - <_> - 27 1 3 3 -1. - <_> - 28 2 1 3 3. - 1 - <_> - - <_> - 27 1 6 11 -1. - <_> - 29 1 2 11 3. - 0 - <_> - - <_> - 27 1 14 10 -1. - <_> - 34 1 7 10 2. - 0 - <_> - - <_> - 27 2 3 2 -1. - <_> - 28 3 1 2 3. - 1 - <_> - - <_> - 27 2 3 9 -1. - <_> - 28 2 1 9 3. - 0 - <_> - - <_> - 27 2 5 4 -1. - <_> - 26 3 5 2 2. - 1 - <_> - - <_> - 27 3 3 6 -1. - <_> - 28 3 1 6 3. - 0 - <_> - - <_> - 27 3 3 9 -1. - <_> - 28 3 1 9 3. - 0 - <_> - - <_> - 27 3 13 4 -1. - <_> - 27 5 13 2 2. - 0 - <_> - - <_> - 27 6 3 2 -1. - <_> - 28 7 1 2 3. - 1 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 7 1 2 3. - 0 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 8 1 2 3. - 1 - <_> - - <_> - 28 0 3 1 -1. - <_> - 29 0 1 1 3. - 0 - <_> - - <_> - 28 0 4 12 -1. - <_> - 29 0 2 12 2. - 0 - <_> - - <_> - 28 0 10 3 -1. - <_> - 28 0 5 3 2. - 1 - <_> - - <_> - 28 0 15 13 -1. - <_> - 33 0 5 13 3. - 0 - <_> - - <_> - 28 1 2 10 -1. - <_> - 29 1 1 10 2. - 0 - <_> - - <_> - 28 1 4 11 -1. - <_> - 29 1 2 11 2. - 0 - <_> - - <_> - 28 2 4 10 -1. - <_> - 29 2 2 10 2. - 0 - <_> - - <_> - 28 2 7 3 -1. - <_> - 27 3 7 1 3. - 1 - <_> - - <_> - 28 3 4 9 -1. - <_> - 29 3 2 9 2. - 0 - <_> - - <_> - 28 3 23 8 -1. - <_> - 28 5 23 4 2. - 0 - <_> - - <_> - 28 4 1 6 -1. - <_> - 28 7 1 3 2. - 0 - <_> - - <_> - 28 4 3 6 -1. - <_> - 28 6 3 2 3. - 0 - <_> - - <_> - 28 5 4 2 -1. - <_> - 30 5 2 2 2. - 0 - <_> - - <_> - 28 5 20 6 -1. - <_> - 28 8 20 3 2. - 0 - <_> - - <_> - 28 6 1 4 -1. - <_> - 27 7 1 2 2. - 1 - <_> - - <_> - 28 6 3 3 -1. - <_> - 29 7 1 3 3. - 1 - <_> - - <_> - 28 7 3 1 -1. - <_> - 29 8 1 1 3. - 1 - <_> - - <_> - 28 7 4 3 -1. - <_> - 28 8 4 1 3. - 0 - <_> - - <_> - 28 7 12 2 -1. - <_> - 28 8 12 1 2. - 0 - <_> - - <_> - 28 8 2 1 -1. - <_> - 28 8 1 1 2. - 1 - <_> - - <_> - 28 8 3 1 -1. - <_> - 29 9 1 1 3. - 1 - <_> - - <_> - 28 11 14 2 -1. - <_> - 28 11 7 1 2. - <_> - 35 12 7 1 2. - 0 - <_> - - <_> - 29 0 3 1 -1. - <_> - 30 0 1 1 3. - 0 - <_> - - <_> - 29 0 4 1 -1. - <_> - 30 0 2 1 2. - 0 - <_> - - <_> - 29 2 3 8 -1. - <_> - 30 2 1 8 3. - 0 - <_> - - <_> - 29 3 3 9 -1. - <_> - 30 3 1 9 3. - 0 - <_> - - <_> - 29 5 2 3 -1. - <_> - 29 6 2 1 3. - 0 - <_> - - <_> - 29 5 3 4 -1. - <_> - 29 6 3 2 2. - 0 - <_> - - <_> - 29 7 3 2 -1. - <_> - 30 8 1 2 3. - 1 - <_> - - <_> - 29 7 3 3 -1. - <_> - 30 8 1 3 3. - 1 - <_> - - <_> - 29 8 4 2 -1. - <_> - 30 8 2 2 2. - 0 - <_> - - <_> - 29 8 2 2 -1. - <_> - 29 8 1 2 2. - 1 - <_> - - <_> - 29 8 3 2 -1. - <_> - 30 9 1 2 3. - 1 - <_> - - <_> - 29 9 15 4 -1. - <_> - 34 9 5 4 3. - 0 - <_> - - <_> - 29 11 22 2 -1. - <_> - 40 11 11 2 2. - 0 - <_> - - <_> - 29 12 2 1 -1. - <_> - 30 12 1 1 2. - 0 - <_> - - <_> - 29 12 3 1 -1. - <_> - 30 12 1 1 3. - 0 - <_> - - <_> - 30 0 3 1 -1. - <_> - 31 0 1 1 3. - 0 - <_> - - <_> - 30 0 4 1 -1. - <_> - 31 0 2 1 2. - 0 - <_> - - <_> - 30 0 9 2 -1. - <_> - 33 3 3 2 3. - 1 - <_> - - <_> - 30 0 20 3 -1. - <_> - 35 0 10 3 2. - 0 - <_> - - <_> - 30 0 16 2 -1. - <_> - 30 1 16 1 2. - 0 - <_> - - <_> - 30 1 4 2 -1. - <_> - 30 1 2 1 2. - <_> - 32 2 2 1 2. - 0 - <_> - - <_> - 30 1 8 12 -1. - <_> - 32 1 4 12 2. - 0 - <_> - - <_> - 30 2 8 1 -1. - <_> - 32 2 4 1 2. - 0 - <_> - - <_> - 30 2 6 2 -1. - <_> - 32 2 2 2 3. - 0 - <_> - - <_> - 30 2 7 3 -1. - <_> - 29 3 7 1 3. - 1 - <_> - - <_> - 30 4 4 4 -1. - <_> - 31 4 2 4 2. - 0 - <_> - - <_> - 30 6 3 4 -1. - <_> - 30 6 3 2 2. - 1 - <_> - - <_> - 30 7 12 6 -1. - <_> - 33 7 6 6 2. - 0 - <_> - - <_> - 30 8 18 3 -1. - <_> - 36 9 6 1 9. - 0 - <_> - - <_> - 30 9 4 2 -1. - <_> - 31 9 2 2 2. - 0 - <_> - - <_> - 30 9 12 4 -1. - <_> - 33 9 6 4 2. - 0 - <_> - - <_> - 30 12 3 1 -1. - <_> - 31 12 1 1 3. - 0 - <_> - - <_> - 31 0 3 1 -1. - <_> - 32 0 1 1 3. - 0 - <_> - - <_> - 31 0 4 1 -1. - <_> - 32 0 2 1 2. - 0 - <_> - - <_> - 31 0 5 2 -1. - <_> - 31 1 5 1 2. - 0 - <_> - - <_> - 31 0 12 2 -1. - <_> - 31 0 6 1 2. - <_> - 37 1 6 1 2. - 0 - <_> - - <_> - 31 0 12 3 -1. - <_> - 31 1 12 1 3. - 0 - <_> - - <_> - 31 2 4 4 -1. - <_> - 31 2 2 2 2. - <_> - 33 4 2 2 2. - 0 - <_> - - <_> - 31 3 3 9 -1. - <_> - 31 6 3 3 3. - 0 - <_> - - <_> - 31 3 8 2 -1. - <_> - 31 3 4 2 2. - 1 - <_> - - <_> - 31 5 3 6 -1. - <_> - 32 7 1 2 9. - 0 - <_> - - <_> - 31 7 3 3 -1. - <_> - 32 7 1 3 3. - 0 - <_> - - <_> - 31 9 2 4 -1. - <_> - 31 9 1 2 2. - <_> - 32 11 1 2 2. - 0 - <_> - - <_> - 32 0 3 1 -1. - <_> - 33 0 1 1 3. - 0 - <_> - - <_> - 32 0 3 2 -1. - <_> - 33 0 1 2 3. - 0 - <_> - - <_> - 32 0 3 3 -1. - <_> - 33 1 1 3 3. - 1 - <_> - - <_> - 32 0 3 4 -1. - <_> - 32 1 3 2 2. - 0 - <_> - - <_> - 32 0 8 1 -1. - <_> - 36 0 4 1 2. - 0 - <_> - - <_> - 32 0 17 3 -1. - <_> - 32 1 17 1 3. - 0 - <_> - - <_> - 32 0 17 4 -1. - <_> - 32 1 17 2 2. - 0 - <_> - - <_> - 32 0 18 3 -1. - <_> - 32 1 18 1 3. - 0 - <_> - - <_> - 32 0 19 3 -1. - <_> - 32 1 19 1 3. - 0 - <_> - - <_> - 32 1 3 6 -1. - <_> - 33 3 1 2 9. - 0 - <_> - - <_> - 32 1 3 2 -1. - <_> - 33 2 1 2 3. - 1 - <_> - - <_> - 32 1 12 1 -1. - <_> - 36 1 4 1 3. - 0 - <_> - - <_> - 32 1 8 2 -1. - <_> - 32 1 4 1 2. - <_> - 36 2 4 1 2. - 0 - <_> - - <_> - 32 1 19 9 -1. - <_> - 32 4 19 3 3. - 0 - <_> - - <_> - 32 2 2 2 -1. - <_> - 32 3 2 1 2. - 0 - <_> - - <_> - 32 3 4 3 -1. - <_> - 33 3 2 3 2. - 0 - <_> - - <_> - 32 7 4 2 -1. - <_> - 33 7 2 2 2. - 0 - <_> - - <_> - 32 9 3 1 -1. - <_> - 33 9 1 1 3. - 0 - <_> - - <_> - 32 9 3 3 -1. - <_> - 33 10 1 1 9. - 0 - <_> - - <_> - 32 11 3 2 -1. - <_> - 32 12 3 1 2. - 0 - <_> - - <_> - 33 0 3 3 -1. - <_> - 34 1 1 3 3. - 1 - <_> - - <_> - 33 0 3 4 -1. - <_> - 34 1 1 4 3. - 1 - <_> - - <_> - 33 0 12 1 -1. - <_> - 37 0 4 1 3. - 0 - <_> - - <_> - 33 0 16 1 -1. - <_> - 37 0 8 1 2. - 0 - <_> - - <_> - 33 0 10 1 -1. - <_> - 38 0 5 1 2. - 0 - <_> - - <_> - 33 0 9 2 -1. - <_> - 33 1 9 1 2. - 0 - <_> - - <_> - 33 0 17 4 -1. - <_> - 33 1 17 2 2. - 0 - <_> - - <_> - 33 1 1 2 -1. - <_> - 33 2 1 1 2. - 0 - <_> - - <_> - 33 1 3 2 -1. - <_> - 34 2 1 2 3. - 1 - <_> - - <_> - 33 1 4 2 -1. - <_> - 34 2 2 2 2. - 1 - <_> - - <_> - 33 1 17 2 -1. - <_> - 33 2 17 1 2. - 0 - <_> - - <_> - 33 2 1 3 -1. - <_> - 33 3 1 1 3. - 0 - <_> - - <_> - 33 2 3 2 -1. - <_> - 34 3 1 2 3. - 1 - <_> - - <_> - 33 2 13 9 -1. - <_> - 33 5 13 3 3. - 0 - <_> - - <_> - 33 5 3 3 -1. - <_> - 34 6 1 1 9. - 0 - <_> - - <_> - 33 5 1 8 -1. - <_> - 33 7 1 4 2. - 0 - <_> - - <_> - 33 6 3 1 -1. - <_> - 34 7 1 1 3. - 1 - <_> - - <_> - 33 7 3 1 -1. - <_> - 34 8 1 1 3. - 1 - <_> - - <_> - 33 7 4 4 -1. - <_> - 33 7 2 2 2. - <_> - 35 9 2 2 2. - 0 - <_> - - <_> - 33 8 2 3 -1. - <_> - 32 9 2 1 3. - 1 - <_> - - <_> - 33 8 6 3 -1. - <_> - 35 8 2 3 3. - 0 - <_> - - <_> - 33 8 16 4 -1. - <_> - 33 10 16 2 2. - 0 - <_> - - <_> - 33 9 2 4 -1. - <_> - 33 11 2 2 2. - 0 - <_> - - <_> - 33 9 4 4 -1. - <_> - 33 9 2 2 2. - <_> - 35 11 2 2 2. - 0 - <_> - - <_> - 33 10 1 2 -1. - <_> - 33 11 1 1 2. - 0 - <_> - - <_> - 34 0 1 3 -1. - <_> - 33 1 1 1 3. - 1 - <_> - - <_> - 34 0 3 11 -1. - <_> - 35 0 1 11 3. - 0 - <_> - - <_> - 34 0 4 4 -1. - <_> - 34 0 2 4 2. - 1 - <_> - - <_> - 34 0 16 1 -1. - <_> - 38 0 8 1 2. - 0 - <_> - - <_> - 34 0 14 1 -1. - <_> - 41 0 7 1 2. - 0 - <_> - - <_> - 34 1 15 6 -1. - <_> - 39 1 5 6 3. - 0 - <_> - - <_> - 34 2 3 2 -1. - <_> - 35 3 1 2 3. - 1 - <_> - - <_> - 34 2 3 8 -1. - <_> - 35 2 1 8 3. - 0 - <_> - - <_> - 34 3 4 4 -1. - <_> - 35 3 2 4 2. - 0 - <_> - - <_> - 34 3 4 7 -1. - <_> - 35 3 2 7 2. - 0 - <_> - - <_> - 34 5 3 2 -1. - <_> - 35 6 1 2 3. - 1 - <_> - - <_> - 34 5 4 2 -1. - <_> - 35 6 2 2 2. - 1 - <_> - - <_> - 34 5 3 4 -1. - <_> - 35 5 1 4 3. - 0 - <_> - - <_> - 34 5 6 8 -1. - <_> - 36 5 2 8 3. - 0 - <_> - - <_> - 34 6 3 1 -1. - <_> - 35 7 1 1 3. - 1 - <_> - - <_> - 34 6 3 2 -1. - <_> - 35 7 1 2 3. - 1 - <_> - - <_> - 34 6 6 5 -1. - <_> - 36 6 2 5 3. - 0 - <_> - - <_> - 34 7 4 2 -1. - <_> - 35 7 2 2 2. - 0 - <_> - - <_> - 34 7 3 2 -1. - <_> - 35 8 1 2 3. - 1 - <_> - - <_> - 34 7 4 3 -1. - <_> - 35 7 2 3 2. - 0 - <_> - - <_> - 35 0 3 12 -1. - <_> - 36 0 1 12 3. - 0 - <_> - - <_> - 35 0 4 1 -1. - <_> - 37 0 2 1 2. - 0 - <_> - - <_> - 35 0 12 1 -1. - <_> - 41 0 6 1 2. - 0 - <_> - - <_> - 35 0 14 4 -1. - <_> - 35 0 7 2 2. - <_> - 42 2 7 2 2. - 0 - <_> - - <_> - 35 1 4 12 -1. - <_> - 36 1 2 12 2. - 0 - <_> - - <_> - 35 2 3 4 -1. - <_> - 36 3 1 4 3. - 1 - <_> - - <_> - 35 2 4 6 -1. - <_> - 36 2 2 6 2. - 0 - <_> - - <_> - 35 4 3 3 -1. - <_> - 35 5 3 1 3. - 0 - <_> - - <_> - 35 5 2 4 -1. - <_> - 36 5 1 4 2. - 0 - <_> - - <_> - 35 5 4 7 -1. - <_> - 36 5 2 7 2. - 0 - <_> - - <_> - 35 5 15 5 -1. - <_> - 40 5 5 5 3. - 0 - <_> - - <_> - 35 7 3 1 -1. - <_> - 36 8 1 1 3. - 1 - <_> - - <_> - 35 7 3 2 -1. - <_> - 36 8 1 2 3. - 1 - <_> - - <_> - 35 8 2 2 -1. - <_> - 35 8 1 2 2. - 1 - <_> - - <_> - 35 10 15 3 -1. - <_> - 35 11 15 1 3. - 0 - <_> - - <_> - 35 11 5 2 -1. - <_> - 35 12 5 1 2. - 0 - <_> - - <_> - 35 11 6 2 -1. - <_> - 35 12 6 1 2. - 0 - <_> - - <_> - 36 0 14 1 -1. - <_> - 43 0 7 1 2. - 0 - <_> - - <_> - 36 1 4 2 -1. - <_> - 36 1 2 1 2. - <_> - 38 2 2 1 2. - 0 - <_> - - <_> - 36 2 4 10 -1. - <_> - 37 2 2 10 2. - 0 - <_> - - <_> - 36 4 4 6 -1. - <_> - 37 4 2 6 2. - 0 - <_> - - <_> - 36 4 3 6 -1. - <_> - 36 4 3 3 2. - 1 - <_> - - <_> - 36 4 6 3 -1. - <_> - 35 5 6 1 3. - 1 - <_> - - <_> - 36 6 3 3 -1. - <_> - 37 7 1 3 3. - 1 - <_> - - <_> - 36 9 4 2 -1. - <_> - 38 9 2 2 2. - 0 - <_> - - <_> - 36 10 4 1 -1. - <_> - 37 10 2 1 2. - 0 - <_> - - <_> - 36 10 6 3 -1. - <_> - 39 10 3 3 2. - 0 - <_> - - <_> - 37 0 2 3 -1. - <_> - 36 1 2 1 3. - 1 - <_> - - <_> - 37 0 4 4 -1. - <_> - 37 0 2 2 2. - <_> - 39 2 2 2 2. - 0 - <_> - - <_> - 37 1 4 5 -1. - <_> - 38 2 2 5 2. - 1 - <_> - - <_> - 37 1 9 9 -1. - <_> - 37 4 9 3 3. - 0 - <_> - - <_> - 37 3 8 4 -1. - <_> - 37 5 8 2 2. - 0 - <_> - - <_> - 37 4 4 1 -1. - <_> - 38 4 2 1 2. - 0 - <_> - - <_> - 37 4 4 4 -1. - <_> - 38 4 2 4 2. - 0 - <_> - - <_> - 37 5 8 8 -1. - <_> - 39 5 4 8 2. - 0 - <_> - - <_> - 37 9 6 4 -1. - <_> - 37 9 3 2 2. - <_> - 40 11 3 2 2. - 0 - <_> - - <_> - 37 10 4 2 -1. - <_> - 37 10 2 1 2. - <_> - 39 11 2 1 2. - 0 - <_> - - <_> - 37 10 8 3 -1. - <_> - 39 10 4 3 2. - 0 - <_> - - <_> - 37 10 5 3 -1. - <_> - 37 11 5 1 3. - 0 - <_> - - <_> - 38 0 4 1 -1. - <_> - 40 0 2 1 2. - 0 - <_> - - <_> - 38 1 12 2 -1. - <_> - 38 2 12 1 2. - 0 - <_> - - <_> - 38 4 6 1 -1. - <_> - 40 4 2 1 3. - 0 - <_> - - <_> - 38 6 6 6 -1. - <_> - 40 8 2 2 9. - 0 - <_> - - <_> - 38 9 6 1 -1. - <_> - 40 9 2 1 3. - 0 - <_> - - <_> - 38 11 1 2 -1. - <_> - 38 12 1 1 2. - 0 - <_> - - <_> - 39 0 2 4 -1. - <_> - 39 1 2 2 2. - 0 - <_> - - <_> - 39 0 10 3 -1. - <_> - 39 1 10 1 3. - 0 - <_> - - <_> - 39 1 11 2 -1. - <_> - 39 2 11 1 2. - 0 - <_> - - <_> - 39 4 4 4 -1. - <_> - 40 4 2 4 2. - 0 - <_> - - <_> - 39 6 3 6 -1. - <_> - 40 8 1 2 9. - 0 - <_> - - <_> - 39 7 4 3 -1. - <_> - 40 7 2 3 2. - 0 - <_> - - <_> - 39 8 4 2 -1. - <_> - 40 8 2 2 2. - 0 - <_> - - <_> - 39 11 12 2 -1. - <_> - 45 11 6 2 2. - 0 - <_> - - <_> - 40 0 1 3 -1. - <_> - 40 1 1 1 3. - 0 - <_> - - <_> - 40 0 3 3 -1. - <_> - 40 1 3 1 3. - 0 - <_> - - <_> - 40 0 5 2 -1. - <_> - 40 1 5 1 2. - 0 - <_> - - <_> - 40 0 8 3 -1. - <_> - 40 1 8 1 3. - 0 - <_> - - <_> - 40 5 4 2 -1. - <_> - 42 5 2 2 2. - 0 - <_> - - <_> - 40 6 4 1 -1. - <_> - 41 7 2 1 2. - 1 - <_> - - <_> - 40 8 4 2 -1. - <_> - 41 8 2 2 2. - 0 - <_> - - <_> - 40 10 9 2 -1. - <_> - 40 11 9 1 2. - 0 - <_> - - <_> - 41 0 6 12 -1. - <_> - 43 0 2 12 3. - 0 - <_> - - <_> - 41 0 4 2 -1. - <_> - 41 1 4 1 2. - 0 - <_> - - <_> - 41 1 3 4 -1. - <_> - 42 2 1 4 3. - 1 - <_> - - <_> - 41 1 6 9 -1. - <_> - 41 4 6 3 3. - 0 - <_> - - <_> - 41 5 4 5 -1. - <_> - 42 5 2 5 2. - 0 - <_> - - <_> - 41 5 4 6 -1. - <_> - 42 5 2 6 2. - 0 - <_> - - <_> - 41 6 3 2 -1. - <_> - 42 7 1 2 3. - 1 - <_> - - <_> - 41 6 4 5 -1. - <_> - 42 6 2 5 2. - 0 - <_> - - <_> - 41 7 3 1 -1. - <_> - 42 8 1 1 3. - 1 - <_> - - <_> - 41 7 2 3 -1. - <_> - 41 8 2 1 3. - 0 - <_> - - <_> - 41 8 3 1 -1. - <_> - 42 8 1 1 3. - 0 - <_> - - <_> - 41 8 3 2 -1. - <_> - 42 9 1 2 3. - 1 - <_> - - <_> - 41 8 4 4 -1. - <_> - 41 8 2 2 2. - <_> - 43 10 2 2 2. - 0 - <_> - - <_> - 41 10 1 2 -1. - <_> - 41 11 1 1 2. - 0 - <_> - - <_> - 42 7 3 2 -1. - <_> - 43 8 1 2 3. - 1 - <_> - - <_> - 42 7 3 3 -1. - <_> - 43 8 1 3 3. - 1 - <_> - - <_> - 42 8 2 2 -1. - <_> - 42 8 1 2 2. - 1 - <_> - - <_> - 42 9 2 4 -1. - <_> - 42 9 1 2 2. - <_> - 43 11 1 2 2. - 0 - <_> - - <_> - 42 9 2 2 -1. - <_> - 42 9 1 2 2. - 1 - <_> - - <_> - 43 4 8 9 -1. - <_> - 47 4 4 9 2. - 0 - <_> - - <_> - 43 5 2 3 -1. - <_> - 43 6 2 1 3. - 0 - <_> - - <_> - 43 5 4 4 -1. - <_> - 43 5 4 2 2. - 1 - <_> - - <_> - 43 5 8 8 -1. - <_> - 47 5 4 8 2. - 0 - <_> - - <_> - 43 7 3 3 -1. - <_> - 44 8 1 3 3. - 1 - <_> - - <_> - 43 9 8 2 -1. - <_> - 45 9 4 2 2. - 0 - <_> - - <_> - 43 10 8 3 -1. - <_> - 45 10 4 3 2. - 0 - <_> - - <_> - 43 12 3 1 -1. - <_> - 44 12 1 1 3. - 0 - <_> - - <_> - 44 2 1 10 -1. - <_> - 44 7 1 5 2. - 0 - <_> - - <_> - 44 2 4 4 -1. - <_> - 44 2 2 2 2. - <_> - 46 4 2 2 2. - 0 - <_> - - <_> - 44 2 5 6 -1. - <_> - 44 5 5 3 2. - 0 - <_> - - <_> - 44 4 6 2 -1. - <_> - 46 4 2 2 3. - 0 - <_> - - <_> - 44 7 4 2 -1. - <_> - 45 7 2 2 2. - 0 - <_> - - <_> - 44 7 4 4 -1. - <_> - 45 7 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 46 5 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 45 5 2 2 2. - <_> - 47 7 2 2 2. - 0 - <_> - - <_> - 45 6 6 3 -1. - <_> - 47 7 2 1 9. - 0 - <_> - - <_> - 45 8 6 1 -1. - <_> - 47 8 2 1 3. - 0 - <_> - - <_> - 46 0 1 3 -1. - <_> - 46 1 1 1 3. - 0 - <_> - - <_> - 46 0 2 2 -1. - <_> - 46 1 2 1 2. - 0 - <_> - - <_> - 46 0 2 4 -1. - <_> - 46 2 2 2 2. - 0 - <_> - - <_> - 46 1 3 4 -1. - <_> - 46 2 3 2 2. - 0 - <_> - - <_> - 46 3 3 3 -1. - <_> - 47 4 1 1 9. - 0 - <_> - - <_> - 46 5 3 3 -1. - <_> - 47 6 1 1 9. - 0 - <_> - - <_> - 46 5 2 6 -1. - <_> - 46 7 2 2 3. - 0 - <_> - - <_> - 46 6 3 6 -1. - <_> - 47 8 1 2 9. - 0 - <_> - - <_> - 47 0 2 2 -1. - <_> - 47 1 2 1 2. - 0 - <_> - - <_> - 47 1 1 4 -1. - <_> - 47 2 1 2 2. - 0 - <_> - - <_> - 47 2 1 6 -1. - <_> - 47 4 1 2 3. - 0 - <_> - - <_> - 47 4 1 6 -1. - <_> - 47 6 1 2 3. - 0 - <_> - - <_> - 47 4 4 2 -1. - <_> - 49 4 2 2 2. - 0 - <_> - - <_> - 47 4 2 6 -1. - <_> - 47 6 2 2 3. - 0 - <_> - - <_> - 47 8 3 1 -1. - <_> - 48 9 1 1 3. - 1 - <_> - - <_> - 47 9 1 4 -1. - <_> - 47 11 1 2 2. - 0 - <_> - - <_> - 47 9 2 4 -1. - <_> - 47 11 2 2 2. - 0 - <_> - - <_> - 48 0 3 6 -1. - <_> - 48 3 3 3 2. - 0 - <_> - - <_> - 48 1 3 2 -1. - <_> - 49 2 1 2 3. - 1 - <_> - - <_> - 48 1 3 12 -1. - <_> - 49 1 1 12 3. - 0 - <_> - - <_> - 48 5 3 7 -1. - <_> - 49 5 1 7 3. - 0 - <_> - - <_> - 48 5 3 8 -1. - <_> - 49 5 1 8 3. - 0 - <_> - - <_> - 48 6 3 2 -1. - <_> - 49 7 1 2 3. - 1 - <_> - - <_> - 48 8 3 2 -1. - <_> - 49 9 1 2 3. - 1 - <_> - - <_> - 49 0 2 2 -1. - <_> - 50 0 1 2 2. - 0 - <_> - - <_> - 49 0 2 8 -1. - <_> - 50 0 1 8 2. - 0 - <_> - - <_> - 49 11 2 2 -1. - <_> - 50 11 1 2 2. - 0 - <_> - - <_> - 50 1 1 3 -1. - <_> - 50 2 1 1 3. - 0 - <_> - - <_> - 50 4 1 3 -1. - <_> - 50 5 1 1 3. - 0 - diff --git a/Prj-iOS/lpr/RootViewController.h b/Prj-iOS/lpr/RootViewController.h deleted file mode 100755 index 14da8d2..0000000 --- a/Prj-iOS/lpr/RootViewController.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// RootViewController.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#ifdef __cplusplus -#import -#import -#endif - -#ifdef __OBJC__ -#import -#import -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -@interface RootViewController : UIViewController - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/RootViewController.mm b/Prj-iOS/lpr/RootViewController.mm deleted file mode 100755 index 011dbab..0000000 --- a/Prj-iOS/lpr/RootViewController.mm +++ /dev/null @@ -1,197 +0,0 @@ -// -// RootViewController.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "RootViewController.h" -#import -#import "Utility.h" -#import "Pipeline.h" -#import "CameraViewController.h" - -@interface RootViewController () - -@property (nonatomic, strong) UIButton* albumButton; -@property (nonatomic, strong) UIButton* cameraButton; -@property (nonatomic, strong) UIImageView* imageView; -@property (nonatomic, strong) UILabel* resultLabel; - -@end - -@implementation RootViewController -{ - cv::Mat source_image; -} - -#pragma mark - Lazy Initialize -- (UIButton *)albumButton -{ - if (!_albumButton) { - _albumButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_albumButton setTitle:@"打开相册" forState:UIControlStateNormal]; - [_albumButton setBackgroundColor:[UIColor redColor]]; - [_albumButton addTarget:self action:@selector(openAlbum) forControlEvents:UIControlEventTouchUpInside]; - } - return _albumButton; -} - -- (UIButton *)cameraButton -{ - if (!_cameraButton) { - _cameraButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cameraButton setBackgroundColor:[UIColor redColor]]; - [_cameraButton setTitle:@"实时拍照" forState:UIControlStateNormal]; - [_cameraButton addTarget:self action:@selector(openCamera) forControlEvents:UIControlEventTouchUpInside]; - } - return _cameraButton; -} - -- (UIImageView *)imageView -{ - if (!_imageView) { - _imageView = [[UIImageView alloc] init]; - _imageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _imageView; -} - -- (UILabel *)resultLabel -{ - if (!_resultLabel) { - _resultLabel = [UILabel new]; - _resultLabel.textColor = [UIColor redColor]; - _resultLabel.textAlignment = NSTextAlignmentLeft; - _resultLabel.font = [UIFont systemFontOfSize:15]; - } - return _resultLabel; -} - -#pragma mark - Life Cycle -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view. - self.view.backgroundColor = [UIColor whiteColor]; - self.navigationItem.title = @"车牌识别Demo"; - - [self.view addSubview:self.albumButton]; - [self.albumButton mas_makeConstraints:^(MASConstraintMaker* make) { - make.centerX.equalTo(self.view).offset(-80); - make.bottom.equalTo(self.mas_bottomLayoutGuideTop).offset(-20); - make.width.mas_equalTo(100); - make.height.mas_equalTo(50); - }]; - - [self.view addSubview:self.cameraButton]; - [self.cameraButton mas_makeConstraints:^(MASConstraintMaker* make) { - make.centerX.equalTo(self.view).offset(80); - make.bottom.equalTo(self.albumButton); - make.width.mas_equalTo(100); - make.height.mas_equalTo(50); - }]; - - [self.view addSubview:self.resultLabel]; - [self.resultLabel mas_makeConstraints:^(MASConstraintMaker* make) { - make.left.right.equalTo(self.view); - make.bottom.lessThanOrEqualTo(self.albumButton.mas_top); - }]; - - [self.view addSubview:self.imageView]; - [self.imageView mas_makeConstraints:^(MASConstraintMaker* make) { - make.top.left.right.equalTo(self.view); - make.bottom.lessThanOrEqualTo(self.resultLabel.mas_top); - }]; -} - -#pragma mark - Actions -- (void)openAlbum -{ - UIImagePickerController* picker = [[UIImagePickerController alloc] init]; - picker.delegate = self; - - if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) - return; - - picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - - [self presentViewController:picker animated:YES completion:nil]; -} - -- (void)openCamera -{ - CameraViewController* video = [CameraViewController new]; - video.resultCB = ^(NSString* text, UIImage* image) { - self.imageView.image = image; - self.resultLabel.text = text; - }; - [self presentViewController:video animated:YES completion:nil]; -} - -#pragma mark - Private Methods -- (NSString *)getPath:(NSString*)fileName -{ - NSString *bundlePath = [NSBundle mainBundle].bundlePath; - NSString *path = [bundlePath stringByAppendingPathComponent:fileName]; - return path; -} - -- (void)simpleRecognition:(cv::Mat&)src -{ - NSString *path_1 = [self getPath:@"cascade.xml"]; - NSString *path_2 = [self getPath:@"HorizonalFinemapping.prototxt"]; - NSString *path_3 = [self getPath:@"HorizonalFinemapping.caffemodel"]; - NSString *path_4 = [self getPath:@"Segmentation.prototxt"]; - NSString *path_5 = [self getPath:@"Segmentation.caffemodel"]; - NSString *path_6 = [self getPath:@"CharacterRecognization.prototxt"]; - NSString *path_7 = [self getPath:@"CharacterRecognization.caffemodel"]; - - std::string *cpath_1 = new std::string([path_1 UTF8String]); - std::string *cpath_2 = new std::string([path_2 UTF8String]); - std::string *cpath_3 = new std::string([path_3 UTF8String]); - std::string *cpath_4 = new std::string([path_4 UTF8String]); - std::string *cpath_5 = new std::string([path_5 UTF8String]); - std::string *cpath_6 = new std::string([path_6 UTF8String]); - std::string *cpath_7 = new std::string([path_7 UTF8String]); - - - pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7); - - std::vector list_res = pr2.RunPiplineAsImage(src); - std::string concat_results = ""; - for(auto one:list_res) { - if(one.confidence>0.7) { - concat_results += one.getPlateName()+","; - } - } - - NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding]; - if (str.length > 0) { - str = [str substringToIndex:str.length-1]; - str = [NSString stringWithFormat:@"识别结果: %@",str]; - } else { - str = [NSString stringWithFormat:@"识别结果: 未识别成功"]; - } - - [self.resultLabel setText:str]; -} - -#pragma mark - UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info -{ - [picker dismissViewControllerAnimated:YES completion:nil]; - - UIImage* temp = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:temp]; - source_image = [Utility cvMatFromUIImage:temp_image]; - [self simpleRecognition:source_image]; - self.imageView.image = temp; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker -{ - [picker dismissViewControllerAnimated:YES completion:nil]; -} - -@end diff --git a/Prj-iOS/lpr/Source/include/CNNRecognizer.h b/Prj-iOS/lpr/Source/include/CNNRecognizer.h deleted file mode 100755 index ad491a0..0000000 --- a/Prj-iOS/lpr/Source/include/CNNRecognizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by 庾金科 on 21/10/2017. -// - -#ifndef SWIFTPR_CNNRECOGNIZER_H -#define SWIFTPR_CNNRECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - class CNNRecognizer: public GeneralRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - - CNNRecognizer(std::string prototxt,std::string caffemodel); - label recognizeCharacter(cv::Mat character); - private: - cv::dnn::Net net; - - }; - -} - -#endif //SWIFTPR_CNNRECOGNIZER_H diff --git a/Prj-iOS/lpr/Source/include/FastDeskew.h b/Prj-iOS/lpr/Source/include/FastDeskew.h deleted file mode 100755 index 08359e5..0000000 --- a/Prj-iOS/lpr/Source/include/FastDeskew.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FASTDESKEW_H -#define SWIFTPR_FASTDESKEW_H - -#include -#include -namespace pr{ - - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize); -// cv::Mat spatialTransformer(cv::Mat skewImage); - -}//namepace pr - - -#endif //SWIFTPR_FASTDESKEW_H diff --git a/Prj-iOS/lpr/Source/include/FineMapping.h b/Prj-iOS/lpr/Source/include/FineMapping.h deleted file mode 100755 index 352202e..0000000 --- a/Prj-iOS/lpr/Source/include/FineMapping.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FINEMAPPING_H -#define SWIFTPR_FINEMAPPING_H - -#include -#include - -#include -namespace pr{ - class FineMapping{ - public: - FineMapping(); - - - FineMapping(std::string prototxt,std::string caffemodel); - static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17); - cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding); - - - private: - cv::dnn::Net net; - - }; - - - - -} -#endif //SWIFTPR_FINEMAPPING_H diff --git a/Prj-iOS/lpr/Source/include/Pipeline.h b/Prj-iOS/lpr/Source/include/Pipeline.h deleted file mode 100755 index 03d1604..0000000 --- a/Prj-iOS/lpr/Source/include/Pipeline.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// Created by 庾金科 on 22/10/2017. -// - -#ifndef SWIFTPR_PIPLINE_H -#define SWIFTPR_PIPLINE_H - -#include "PlateDetection.h" -#include "PlateSegmentation.h" -#include "CNNRecognizer.h" -#include "PlateInfo.h" -#include "FastDeskew.h" -#include "FineMapping.h" -#include "Recognizer.h" - -namespace pr{ - class PipelinePR{ - public: - GeneralRecognizer *generalRecognizer; - PlateDetection *plateDetection; - PlateSegmentation *plateSegmentation; - FineMapping *fineMapping; - - - - PipelinePR(std::string detector_filename, - std::string finemapping_prototxt,std::string finemapping_caffemodel, - std::string segmentation_prototxt,std::string segmentation_caffemodel, - std::string charRecognization_proto,std::string charRecognization_caffemodel - ); - ~PipelinePR(); - - - - std::vector plateRes; - std::vector RunPiplineAsImage(cv::Mat plateImage); - - - - - - - - }; - - -} -#endif //SWIFTPR_PIPLINE_H diff --git a/Prj-iOS/lpr/Source/include/PlateDetection.h b/Prj-iOS/lpr/Source/include/PlateDetection.h deleted file mode 100755 index f4cf567..0000000 --- a/Prj-iOS/lpr/Source/include/PlateDetection.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEDETECTION_H -#define SWIFTPR_PLATEDETECTION_H - -#include -#include "PlateInfo.h" -#include -namespace pr{ - class PlateDetection{ - public: - PlateDetection(std::string filename_cascade); - PlateDetection(); - void LoadModel(std::string filename_cascade); - void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800); -// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400); - - -// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage); - - - - private: - cv::CascadeClassifier cascade; - - - }; - -}// namespace pr - -#endif //SWIFTPR_PLATEDETECTION_H diff --git a/Prj-iOS/lpr/Source/include/PlateInfo.h b/Prj-iOS/lpr/Source/include/PlateInfo.h deleted file mode 100755 index fbf2a8b..0000000 --- a/Prj-iOS/lpr/Source/include/PlateInfo.h +++ /dev/null @@ -1,127 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEINFO_H -#define SWIFTPR_PLATEINFO_H -#include -namespace pr { - - typedef std::vector Character; - - enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; - enum CharType {CHINESE,LETTER,LETTER_NUMS}; - - - class PlateInfo { - public: - std::vector > plateChars; - std::vector > plateCoding; - - float confidence = 0; - - - PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - name = plateName; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) { - licensePlate = plateData; - ROI = plateRect; - } - PlateInfo() { - - } - - cv::Mat getPlateImage() { - return licensePlate; - } - - void setPlateImage(cv::Mat plateImage){ - licensePlate = plateImage; - } - - cv::Rect getPlateRect() { - return ROI; - } - - void setPlateRect(cv::Rect plateRect) { - ROI = plateRect; - } - cv::String getPlateName() { - return name; - - } - void setPlateName(cv::String plateName) { - name = plateName; - } - int getPlateType() { - return Type; - } - - void appendPlateChar(const std::pair &plateChar) - { - plateChars.push_back(plateChar); - } - - void appendPlateCoding(const std::pair &charProb){ - plateCoding.push_back(charProb); - } - - // cv::Mat getPlateChars(int id) { - // if(id mappingTable) { - std::string decode; - for(auto plate:plateCoding) { - float *prob = (float *)plate.second.data; - if(plate.first == CHINESE) { - - decode += mappingTable[std::max_element(prob,prob+31) - prob]; - confidence+=*std::max_element(prob,prob+31); - - -// std::cout<<*std::max_element(prob,prob+31)< -#include "PlateInfo.h" - -namespace pr{ - - - class PlateSegmentation{ - public: - const int PLATE_NORMAL = 6; - const int PLATE_NORMAL_GREEN = 7; - const int DEFAULT_WIDTH = 20; - PlateSegmentation(std::string phototxt,std::string caffemodel); - PlateSegmentation(){} - void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects); - - void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones); - void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair > &candidatePts); - void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects); - void ExtractRegions(PlateInfo &plateInfo,std::vector &rects); - cv::Mat classifyResponse(const cv::Mat &cropped); - private: - cv::dnn::Net net; - - -// RefineRegion() - - }; - -}//namespace pr - -#endif //SWIFTPR_PLATESEGMENTATION_H diff --git a/Prj-iOS/lpr/Source/include/Recognizer.h b/Prj-iOS/lpr/Source/include/Recognizer.h deleted file mode 100755 index 809b717..0000000 --- a/Prj-iOS/lpr/Source/include/Recognizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Created by 庾金科 on 20/10/2017. -// - - -#ifndef SWIFTPR_RECOGNIZER_H -#define SWIFTPR_RECOGNIZER_H - -#include "PlateInfo.h" -#include "opencv2/dnn.hpp" -namespace pr{ - typedef cv::Mat label; - class GeneralRecognizer{ - public: - virtual label recognizeCharacter(cv::Mat character) = 0; - void SegmentBasedSequenceRecognition(PlateInfo &plateinfo); - - }; - -} -#endif //SWIFTPR_RECOGNIZER_H diff --git a/Prj-iOS/lpr/Source/include/niBlackThreshold.h b/Prj-iOS/lpr/Source/include/niBlackThreshold.h deleted file mode 100755 index 5ad7e14..0000000 --- a/Prj-iOS/lpr/Source/include/niBlackThreshold.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// Created by 庾金科 on 26/10/2017. -// - -#ifndef SWIFTPR_NIBLACKTHRESHOLD_H -#define SWIFTPR_NIBLACKTHRESHOLD_H - - -#include -using namespace cv; - -enum LocalBinarizationMethods{ - BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 . - BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 . - BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 . - BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 . -}; - - -void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue, - int type, int blockSize, double k, int binarizationMethod ) -{ - // Input grayscale image - Mat src = _src.getMat(); - CV_Assert(src.channels() == 1); - CV_Assert(blockSize % 2 == 1 && blockSize > 1); - if (binarizationMethod == BINARIZATION_SAUVOLA) { - CV_Assert(src.depth() == CV_8U); - } - type &= THRESH_MASK; - // Compute local threshold (T = mean + k * stddev) - // using mean and standard deviation in the neighborhood of each pixel - // (intermediate calculations are done with floating-point precision) - Mat test; - Mat thresh; - { - // note that: Var[X] = E[X^2] - E[X]^2 - Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum; - double srcMin, stddevMax; - boxFilter(src, mean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - variance = sqmean - mean.mul(mean); - sqrt(variance, stddev); - switch (binarizationMethod) - { - case BINARIZATION_NIBLACK: - thresh = mean + stddev * static_cast(k); - - break; - case BINARIZATION_SAUVOLA: - thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.)); - break; - case BINARIZATION_WOLF: - minMaxIdx(src, &srcMin,NULL); - minMaxIdx(stddev, NULL, &stddevMax); - thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax); - break; - case BINARIZATION_NICK: - sqrt(variance + sqmean, sqrtVarianceMeanSum); - thresh = mean + static_cast(k) * sqrtVarianceMeanSum; - break; - default: - CV_Error( CV_StsBadArg, "Unknown binarization method" ); - break; - } - thresh.convertTo(thresh, src.depth()); - - thresh.convertTo(test, src.depth()); -// -// cv::imshow("imagex",test); -// cv::waitKey(0); - - } - // Prepare output image - _dst.create(src.size(), src.type()); - Mat dst = _dst.getMat(); - CV_Assert(src.data != dst.data); // no inplace processing - // Apply thresholding: ( pixel > threshold ) ? foreground : background - Mat mask; - switch (type) - { - case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0 - case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval - compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE)); - dst.setTo(0); - dst.setTo(maxValue, mask); - break; - case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src - compare(src, thresh, mask, CMP_GT); - src.copyTo(dst); - thresh.copyTo(dst, mask); - break; - case THRESH_TOZERO: // dst = (src > thresh) ? src : 0 - case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src - compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE)); - dst.setTo(0); - src.copyTo(dst, mask); - break; - default: - CV_Error( CV_StsBadArg, "Unknown threshold type" ); - break; - } -} - -#endif //SWIFTPR_NIBLACKTHRESHOLD_H diff --git a/Prj-iOS/lpr/Source/src/CNNRecognizer.cpp b/Prj-iOS/lpr/Source/src/CNNRecognizer.cpp deleted file mode 100755 index 909753c..0000000 --- a/Prj-iOS/lpr/Source/src/CNNRecognizer.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by 庾金科 on 21/10/2017. -// - -#include "../include/CNNRecognizer.h" - -namespace pr{ - CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){ - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - - label CNNRecognizer::recognizeCharacter(cv::Mat charImage){ - if(charImage.channels()== 3) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); - cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Source/src/FastDeskew.cpp b/Prj-iOS/lpr/Source/src/FastDeskew.cpp deleted file mode 100755 index caad643..0000000 --- a/Prj-iOS/lpr/Source/src/FastDeskew.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// -// Created by 庾金科 on 02/10/2017. -// - - - -#include "../include/FastDeskew.h" - -namespace pr{ - - - const int ANGLE_MIN = 30 ; - const int ANGLE_MAX = 150 ; - const int PLATE_H = 36; - const int PLATE_W = 136; - - int angle(float x,float y) - { - return atan2(x,y)*180/3.1415; - } - - std::vector avgfilter(std::vector angle_list,int windowsSize) { - std::vector angle_list_filtered(angle_list.size() - windowsSize + 1); - for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) { - float avg = 0.00f; - for (int j = 0; j < windowsSize; j++) { - avg += angle_list[i + j]; - } - avg = avg / windowsSize; - angle_list_filtered[i] = avg; - } - - return angle_list_filtered; - } - - - void drawHist(std::vector seq){ - cv::Mat image(300,seq.size(),CV_8U); - image.setTo(0); - - for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) ); -// else -// extend_padding = static_cast(skewPlate.rows/tan(cv::abs(angle)/180* 3.14) ); - -// std::cout<<"extend:"<0) { - cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height), - cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size); - - - } - else { - cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0), - cv::Point2f(size_o.width, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC); - - } - return dst; - } - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){ - - - const int FILTER_WINDOWS_SIZE = 5; - std::vector angle_list(180); - memset(angle_list.data(),0,angle_list.size()*sizeof(int)); - - cv::Mat bak; - skewImage.copyTo(bak); - if(skewImage.channels() == 3) - cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY); - - if(skewImage.channels() == 1) - { - cv::Mat eigen; - - cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5); - for( int j = 0; j < skewImage.rows; j+=blockSize ) - { for( int i = 0; i < skewImage.cols; i+=blockSize ) - { - float x2 = eigen.at(j, i)[4]; - float y2 = eigen.at(j, i)[5]; - int angle_cell = angle(x2,y2); - angle_list[(angle_cell + 180)%180]+=1.0; - - } - } - } - std::vector filtered = avgfilter(angle_list,5); - - int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2; - if(maxPos>ANGLE_MAX) - maxPos = (-maxPos+90+180)%180; - if(maxPos(maxPos),60.0f); - return deskewed; - } - - - -}//namespace pr diff --git a/Prj-iOS/lpr/Source/src/FineMapping.cpp b/Prj-iOS/lpr/Source/src/FineMapping.cpp deleted file mode 100755 index 6890eff..0000000 --- a/Prj-iOS/lpr/Source/src/FineMapping.cpp +++ /dev/null @@ -1,205 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#include "FineMapping.h" -namespace pr{ - - const int FINEMAPPING_H = 50; - const int FINEMAPPING_W = 120; - const int PADDING_UP_DOWN = 30; - void drawRect(cv::Mat image,cv::Rect rect) - { - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); - } - - - FineMapping::FineMapping(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - - } - - cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding) - { - -// if(FinedVertical.channels()==1) -// cv::cvtColor(FinedVertical,FinedVertical,cv::COLOR_GRAY2BGR); - cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16), - cv::Scalar(0,0,0),false); - - net.setInput(inputBlob,"data"); - cv::Mat prob = net.forward(); - int front = static_cast(prob.at(0,0)*FinedVertical.cols); - int back = static_cast(prob.at(0,1)*FinedVertical.cols); - front -= leftPadding ; - if(front<0) front = 0; - back +=rightPadding; - if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1; - cv::Mat cropped = FinedVertical.colRange(front,back).clone(); - return cropped; - - - } - std::pair FitLineRansac(std::vector pts,int zeroadd = 0 ) - { - std::pair res; - if(pts.size()>2) - { - cv::Vec4f line; - cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01); - float vx = line[0]; - float vy = line[1]; - float x = line[2]; - float y = line[3]; - int lefty = static_cast((-x * vy / vx) + y); - int righty = static_cast(((136- x) * vy / vx) + y); - res.first = lefty+PADDING_UP_DOWN+zeroadd; - res.second = righty+PADDING_UP_DOWN+zeroadd; - return res; - } - res.first = zeroadd; - res.second = zeroadd; - return res; - } - - cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ - - - cv::Mat PreInputProposal; - cv::Mat proposal; - - cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - if(InputProposal.channels() == 3) - cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); - else - PreInputProposal.copyTo(proposal); - -// proposal = PreInputProposal; - - // this will improve some sen - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); -// cv::erode(proposal,proposal,kernal); - - - float diff = static_cast(upper-lower); - diff/=static_cast(sliceNum-1); - cv::Mat binary_adaptive; - std::vector line_upper; - std::vector line_lower; - int contours_nums=0; - - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - - std:: cout<<"contours_nums "< > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); -// cv::imshow("image",binary_adaptive); -// cv::waitKey(0); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } -// std:: cout<<"contours_nums "< A; - std::pair B; - A = FitLineRansac(line_upper, -2); - B = FitLineRansac(line_lower, 2); - int leftyB = A.first; - int rightyB = A.second; - int leftyA = B.first; - int rightyA = B.second; - int cols = rgb.cols; - int rows = rgb.rows; -// pts_map1 = np.float32([[cols - 1, rightyA], [0, leftyA],[cols - 1, rightyB], [0, leftyB]]) -// pts_map2 = np.float32([[136,36],[0,36],[136,0],[0,0]]) -// mat = cv2.getPerspectiveTransform(pts_map1,pts_map2) -// image = cv2.warpPerspective(rgb,mat,(136,36),flags=cv2.INTER_CUBIC) - std::vector corners(4); - corners[0] = cv::Point2f(cols - 1, rightyA); - corners[1] = cv::Point2f(0, leftyA); - corners[2] = cv::Point2f(cols - 1, rightyB); - corners[3] = cv::Point2f(0, leftyB); - std::vector corners_trans(4); - corners_trans[0] = cv::Point2f(136, 36); - corners_trans[1] = cv::Point2f(0, 36); - corners_trans[2] = cv::Point2f(136, 0); - corners_trans[3] = cv::Point2f(0, 0); - cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans); - cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); - cv::warpPerspective(rgb, quad, transform, quad.size()); - return quad; - - } - - -} - - diff --git a/Prj-iOS/lpr/Source/src/Pipeline.cpp b/Prj-iOS/lpr/Source/src/Pipeline.cpp deleted file mode 100755 index 9ab9d91..0000000 --- a/Prj-iOS/lpr/Source/src/Pipeline.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// -// Created by 庾金科 on 23/10/2017. -// - -#include "../include/Pipeline.h" - - -namespace pr { - - std::string str[]={"京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"}; - std::vector chars_code(str, str+65); - - -// std::vector chars_code {"京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"}; - - PipelinePR::PipelinePR(std::string detector_filename, - std::string finemapping_prototxt, std::string finemapping_caffemodel, - std::string segmentation_prototxt, std::string segmentation_caffemodel, - std::string charRecognization_proto, std::string charRecognization_caffemodel) { - plateDetection = new PlateDetection(detector_filename); - fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel); - plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel); - generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel); - } - - PipelinePR::~PipelinePR() { - - delete plateDetection; - delete fineMapping; - delete plateSegmentation; - delete generalRecognizer; - - } - - std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage) { - std::vector results; - std::vector plates; - plateDetection->plateDetectionRough(plateImage,plates); - - for (pr::PlateInfo plateinfo:plates) { - - cv::Mat image_finemapping = plateinfo.getPlateImage(); - image_finemapping = fineMapping->FineMappingVertical(image_finemapping); - image_finemapping = pr::fastdeskew(image_finemapping, 5); - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, 5); - cv::resize(image_finemapping, image_finemapping, cv::Size(136, 36)); - plateinfo.setPlateImage(image_finemapping); - std::vector rects; - plateSegmentation->segmentPlatePipline(plateinfo, 1, rects); - plateSegmentation->ExtractRegions(plateinfo, rects); - cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE); - - plateinfo.setPlateImage(image_finemapping); - generalRecognizer->SegmentBasedSequenceRecognition(plateinfo); - plateinfo.decodePlateNormal(chars_code); - results.push_back(plateinfo); - std::cout << plateinfo.getPlateName() << std::endl; - - - } - -// for (auto str:results) { -// std::cout << str << std::endl; -// } - return results; - - }//namespace pr - - - -} diff --git a/Prj-iOS/lpr/Source/src/PlateDetection.cpp b/Prj-iOS/lpr/Source/src/PlateDetection.cpp deleted file mode 100755 index b207190..0000000 --- a/Prj-iOS/lpr/Source/src/PlateDetection.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// -#include "../include/PlateDetection.h" - -#include "util.h" - -namespace pr{ - - - PlateDetection::PlateDetection(std::string filename_cascade){ - cascade.load(filename_cascade); - - }; - - - void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ - - cv::Mat processImage; - - cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); - - - std::vector platesRegions; -// std::vector plates; - cv::Size minSize(min_w,min_w/4); - cv::Size maxSize(max_w,max_w/4); -// cv::imshow("input",InputImage); -// cv::waitKey(0); - cascade.detectMultiScale( processImage, platesRegions, - 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); - for(auto plate:platesRegions) - { - // extend rects -// x -= w * 0.14 -// w += w * 0.28 -// y -= h * 0.6 -// h += h * 1.1; - int zeroadd_w = static_cast(plate.width*0.28); - int zeroadd_h = static_cast(plate.height*1.2); - int zeroadd_x = static_cast(plate.width*0.14); - int zeroadd_y = static_cast(plate.height*0.6); - plate.x-=zeroadd_x; - plate.y-=zeroadd_y; - plate.height += zeroadd_h; - plate.width += zeroadd_w; - cv::Mat plateImage = util::cropFromImage(InputImage,plate); - PlateInfo plateInfo(plateImage,plate); - plateInfos.push_back(plateInfo); - - } - } -// std::vector PlateDetection::plateDetectionRough(cv::Mat InputImage,cv::Rect roi,int min_w,int max_w){ -// cv::Mat roi_region = util::cropFromImage(InputImage,roi); -// return plateDetectionRough(roi_region,min_w,max_w); -// } - - - - -}//namespace pr diff --git a/Prj-iOS/lpr/Source/src/PlateSegmentation.cpp b/Prj-iOS/lpr/Source/src/PlateSegmentation.cpp deleted file mode 100755 index 3904df9..0000000 --- a/Prj-iOS/lpr/Source/src/PlateSegmentation.cpp +++ /dev/null @@ -1,402 +0,0 @@ -// -// Created by 庾金科 on 16/10/2017. -// - -#include "../include/PlateSegmentation.h" -#include "../include/niBlackThreshold.h" - - -//#define DEBUG -namespace pr{ - - PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){ - cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } - - void drawHist(float* seq,int size,const char* name){ - cv::Mat image(300,size,CV_8U); - image.setTo(0); - float* start =seq; - float* end = seq+size; - float l = *std::max_element(start,end); - for(int i = 0;i>1),rect.y + (rect.height>>1)); - int rebuildLeft = (rect.width>>1 )+ left; - int rebuildRight = (rect.width>>1 )+ right; - int rebuildTop = (rect.height>>1 )+ top; - int rebuildBottom = (rect.height>>1 )+ bottom; - return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize); - - } - - - - void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){ - int w = candidatePts[5] - candidatePts[4]; - int cols = plateImage.cols; - int rows = plateImage.rows; - for(int i = 0 ; i < candidatePts.size() ; i++) - { - int left = 0; - int right = 0 ; - - if(i == 0 ){ - left= candidatePts[i]; - right = left+w+padding; - } - else { - left = candidatePts[i] - padding; - right = left + w + padding * 2; - } - - computeSafeMargin(right,cols); - computeSafeMargin(left,cols); - cv::Rect roi(left,0,right - left,rows-1); - cv::Mat roiImage; - plateImage(roi).copyTo(roiImage); - - if (i>=1) - { - - cv::Mat roi_thres; -// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY); - - niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.3,BINARIZATION_NIBLACK); - - std::vector > contours; - cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE); - cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1); - - cv::Rect final_bdbox; - cv::Point final_center; - int final_dist = INT_MAX; - - - for(auto contour:contours) - { - cv::Rect bdbox = cv::boundingRect(contour); - cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1)); - int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x); - if(dist rows>>1) - { final_dist =dist; - final_center = center; - final_bdbox = bdbox; - } - } - - //rebuild box - if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10) - final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size()); - else { - if(i == candidatePts.size()-1) - final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size()); - else - final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size()); - - -// std::cout<0&&i+j+r > &candidatePts){ - int rows = respones.rows; - int cols = respones.cols; - - - - float *data = (float*)respones.data; - float *engNum_prob = data; - float *false_prob = data+cols; - float *ch_prob = data+cols*2; - - avgfilter(engNum_prob,cols,5); - avgfilter(false_prob,cols,5); -// avgfilter(ch_prob,cols,5); - std::vector candidate_pts(7); -#ifdef DEBUG - drawHist(engNum_prob,cols,"engNum_prob"); - drawHist(false_prob,cols,"false_prob"); - drawHist(ch_prob,cols,"ch_prob"); - //cv::waitKey(0); -#endif - - - - - int cp_list[7]; - float loss_selected = -1; - - for(int start = 0 ; start < 20 ; start+=2) - for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){ - for(int interval = windowsWidth/2; interval < windowsWidth; interval++) - { - int cp1_ch = start; - int cp2_p0 = cp1_ch+ width; - int cp3_p1 = cp2_p0+ width + interval; - int cp4_p2 = cp3_p1 + width; - int cp5_p3 = cp4_p2 + width+1; - int cp6_p4 = cp5_p3 + width+2; - int cp7_p5= cp6_p4+ width+2; - - int md1 = (cp1_ch+cp2_p0)>>1; - int md2 = (cp2_p0+cp3_p1)>>1; - int md3 = (cp3_p1+cp4_p2)>>1; - int md4 = (cp4_p2+cp5_p3)>>1; - int md5 = (cp5_p3+cp6_p4)>>1; - int md6 = (cp6_p4+cp7_p5)>>1; - - - - - if(cp7_p5>=cols) - continue; - float loss = ch_prob[cp1_ch]+ - engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5] - + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]); -// float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]); - - - - - if(loss>loss_selected) - { - loss_selected = loss; - cp_list[0]= cp1_ch; - cp_list[1]= cp2_p0; - cp_list[2]= cp3_p1; - cp_list[3]= cp4_p2; - cp_list[4]= cp5_p3; - cp_list[5]= cp6_p4; - cp_list[6]= cp7_p5; - } - } - } - candidate_pts[0] = cp_list[0]; - candidate_pts[1] = cp_list[1]; - candidate_pts[2] = cp_list[2]; - candidate_pts[3] = cp_list[3]; - candidate_pts[4] = cp_list[4]; - candidate_pts[5] = cp_list[5]; - candidate_pts[6] = cp_list[6]; - - candidatePts.first = loss_selected; - candidatePts.second = candidate_pts; - - }; - - - void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){ - - - cv::resize(plateImage,plateImage,cv::Size(136,36)); - - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - - int height = plateImage.rows - 1; - int width = plateImage.cols - 1; - - for(int i = 0 ; i < plateImage.cols - windowsWidth +1 ; i +=stride) - { - cv::Rect roi(i,0,windowsWidth,height); - cv::Mat roiImage = plateImageGray(roi); - cv::Mat response = classifyResponse(roiImage); - respones.push_back(response); - } - - - - - respones = respones.t(); -// std::pair> images ; -// -// -// std::cout< &Char_rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); // get src image . - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - //do binarzation - // - std::pair > sections ; // segment points variables . - - cv::Mat respones; //three response of every sub region from origin image . - segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones); - templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections); - -// std::cout< &rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); - for(int i = 0 ; i < rects.size() ; i++){ - cv::Mat charImage; - plateImage(rects[i]).copyTo(charImage); - if(charImage.channels()) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); -// cv::imshow("image",charImage); -// cv::waitKey(0); - cv::equalizeHist(charImage,charImage); -// - -// - - - std::pair char_instance; - if(i == 0 ){ - - char_instance.first = CHINESE; - - - } else if(i == 1){ - char_instance.first = LETTER; - } - else{ - char_instance.first = LETTER_NUMS; - } - char_instance.second = charImage; - plateInfo.appendPlateChar(char_instance); - - } - - } - -}//namespace pr diff --git a/Prj-iOS/lpr/Source/src/Recognizer.cpp b/Prj-iOS/lpr/Source/src/Recognizer.cpp deleted file mode 100755 index 0cad4e6..0000000 --- a/Prj-iOS/lpr/Source/src/Recognizer.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// Created by 庾金科 on 22/10/2017. -// - -#include "../include/Recognizer.h" - -namespace pr{ - void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){ - - - for(auto char_instance:plateinfo.plateChars) - { - - - std::pair res; - cv::Mat code_table= recognizeCharacter(char_instance.second); - res.first = char_instance.first; - code_table.copyTo(res.second); - plateinfo.appendPlateCoding(res); - - } - - - - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/Source/src/util.h b/Prj-iOS/lpr/Source/src/util.h deleted file mode 100755 index 76a452f..0000000 --- a/Prj-iOS/lpr/Source/src/util.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// Created by 庾金科 on 04/04/2017. -// - -#include - -namespace util{ - - template void swap ( T& a, T& b ) - { - T c(a); a=b; b=c; - } - - template T min(T& a,T& b ) - { - return a>b?b:a; - - } - - cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ - int w = image.cols-1; - int h = image.rows-1; - rect.x = std::max(rect.x,0); - rect.y = std::max(rect.y,0); - rect.height = std::min(rect.height,h-rect.y); - rect.width = std::min(rect.width,w-rect.x); - cv::Mat temp(rect.size(), image.type()); - cv::Mat cropped; - temp = image(rect); - temp.copyTo(cropped); - return cropped; - - } - - cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect) - { - cv::Mat M, rotated, cropped; - float angle = rect.angle; - cv::Size rect_size(rect.size.width,rect.size.height); - if (rect.angle < -45.) { - angle += 90.0; - swap(rect_size.width, rect_size.height); - } - M = cv::getRotationMatrix2D(rect.center, angle, 1.0); - cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC); - cv::getRectSubPix(rotated, rect_size, rect.center, cropped); - return cropped; - } - - cv::Mat calcHist(const cv::Mat &image) - { - cv::Mat hsv; - std::vector hsv_planes; - cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV); - cv::split(hsv,hsv_planes); - cv::Mat hist; - int histSize = 256; - float range[] = {0,255}; - const float* histRange = {range}; - - cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true); - return hist; - - } - float computeSimilir(const cv::Mat &A,const cv::Mat &B) - { - - cv::Mat histA,histB; - histA = calcHist(A); - histB = calcHist(B); - return cv::compareHist(histA,histB,CV_COMP_CORREL); - - } - - - - - -}//namespace util diff --git a/Prj-iOS/lpr/Utility.h b/Prj-iOS/lpr/Utility.h deleted file mode 100755 index f2a870d..0000000 --- a/Prj-iOS/lpr/Utility.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Utility.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// -#ifdef __cplusplus -#import -#endif -#ifdef __OBJC__ -#import -#import -#endif -using namespace cv; - -NS_ASSUME_NONNULL_BEGIN - -@interface Utility : NSObject - -+ (cv::Mat)cvMatFromUIImage:(UIImage *)image; -+ (UIImage *)UIImageFromCVMat:(cv::Mat)image; -+ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image; -+ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image; -+ (UIImage *)imageWithMat:(const cv::Mat&) image andImageOrientation: (UIImageOrientation) orientation; -+ (UIImage *)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation) orientation; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/Utility.mm b/Prj-iOS/lpr/Utility.mm deleted file mode 100755 index d78785c..0000000 --- a/Prj-iOS/lpr/Utility.mm +++ /dev/null @@ -1,320 +0,0 @@ -// -// Utility.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "Utility.h" - -@implementation Utility - -+ (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat -{ - NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()]; - CGColorSpaceRef colorSpace; - - if (cvMat.elemSize() == 1) { - colorSpace = CGColorSpaceCreateDeviceGray(); - } else { - colorSpace = CGColorSpaceCreateDeviceRGB(); - } - - CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); - - // Creating CGImage from cv::Mat - CGImageRef imageRef = CGImageCreate(cvMat.cols, //width - cvMat.rows, //height - 8, //bits per component - 8 * cvMat.elemSize(), //bits per pixel - cvMat.step[0], //bytesPerRow - colorSpace, //colorspace - kCGImageAlphaNone|kCGBitmapByteOrderDefault,// bitmap info - provider, //CGDataProviderRef - NULL, //decode - false, //should interpolate - kCGRenderingIntentDefault //intent - ); - - // Getting UIImage from CGImage - UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp]; - CGImageRelease(imageRef); - CGDataProviderRelease(provider); - CGColorSpaceRelease(colorSpace); - - return finalImage; -} - -//缩放调整图片 -+ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image -{ - static int kMaxResolution = 480; - CGImageRef imgRef = image.CGImage; - CGFloat width = CGImageGetWidth(imgRef); - CGFloat height = CGImageGetHeight(imgRef); - - CGAffineTransform transform = CGAffineTransformIdentity; - CGRect bounds = CGRectMake(0, 0, width, height); - if (width > kMaxResolution || height > kMaxResolution) { - CGFloat ratio = width/height; - if (ratio > 1) { - bounds.size.width = kMaxResolution; - bounds.size.height = bounds.size.width / ratio; - } else { - bounds.size.height = kMaxResolution; - bounds.size.width = bounds.size.height * ratio; - } - } - CGFloat scaleRatio = bounds.size.width / width; - CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); - CGFloat boundHeight; - UIImageOrientation orient = image.imageOrientation; - switch(orient) { - case UIImageOrientationUp: - transform = CGAffineTransformIdentity; - break; - case UIImageOrientationUpMirrored: - transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - break; - case UIImageOrientationDown: - transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); - transform = CGAffineTransformRotate(transform, M_PI); - break; - case UIImageOrientationDownMirrored: - transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); - transform = CGAffineTransformScale(transform, 1.0, -1.0); - break; - case UIImageOrientationLeftMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationLeft: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationRightMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeScale(-1.0, 1.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - case UIImageOrientationRight: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - default: - [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; - } - - UIGraphicsBeginImageContext(bounds.size); - CGContextRef context = UIGraphicsGetCurrentContext(); - if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) { - CGContextScaleCTM(context, -scaleRatio, scaleRatio); - CGContextTranslateCTM(context, -height, 0); - } else { - CGContextScaleCTM(context, scaleRatio, -scaleRatio); - CGContextTranslateCTM(context, 0, -height); - } - CGContextConcatCTM(context, transform); - CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - NSLog(@"resize w%f,H%f",returnImage.size.width,returnImage.size.height); - return returnImage; -} - -+ (UIImage*)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation)orientation -{ - UIImageOrientation imgOrientation = UIImageOrientationUp; - - switch (orientation) - { - case UIDeviceOrientationLandscapeLeft: - imgOrientation =UIImageOrientationLeftMirrored; break; - - case UIDeviceOrientationLandscapeRight: - imgOrientation = UIImageOrientationDown; break; - - case UIDeviceOrientationPortraitUpsideDown: - imgOrientation = UIImageOrientationRightMirrored; break; - case UIDeviceOrientationFaceUp: - imgOrientation = UIImageOrientationRightMirrored; break; - - default: - case UIDeviceOrientationPortrait: - imgOrientation = UIImageOrientationRight; break; - }; - - return [Utility imageWithMat:image andImageOrientation:imgOrientation]; -} - -+ (UIImage*)imageWithMat:(const cv::Mat&)image andImageOrientation:(UIImageOrientation)orientation; -{ - cv::Mat rgbaView; - - if (image.channels() == 3) - { - cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); - } - else if (image.channels() == 4) - { - cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); - } - else if (image.channels() == 1) - { - cv::cvtColor(image, rgbaView, COLOR_GRAY2RGBA); - } - - NSData *data = [NSData dataWithBytes:rgbaView.data length:rgbaView.elemSize() * rgbaView.total()]; - - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - - CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); - - CGBitmapInfo bmInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big; - - // Creating CGImage from cv::Mat - CGImageRef imageRef = CGImageCreate(rgbaView.cols, //width - rgbaView.rows, //height - 8, //bits per component - 8 * rgbaView.elemSize(), //bits per pixel - rgbaView.step.p[0], //bytesPerRow - colorSpace, //colorspace - bmInfo,// bitmap info - provider, //CGDataProviderRef - NULL, //decode - false, //should interpolate - kCGRenderingIntentDefault //intent - ); - - // Getting UIImage from CGImage - UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1 orientation:orientation]; - CGImageRelease(imageRef); - CGDataProviderRelease(provider); - CGColorSpaceRelease(colorSpace); - - return finalImage; -} - -+ (cv::Mat)cvMatFromUIImage:(UIImage *)image -{ - CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage); - CGFloat cols = image.size.width; - CGFloat rows = image.size.height; - - cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels - - CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data - cols, // Width of bitmap - rows, // Height of bitmap - 8, // Bits per component - cvMat.step[0], // Bytes per row - colorSpace, // Colorspace - kCGImageAlphaNoneSkipLast | - kCGBitmapByteOrderDefault); // Bitmap info flags - - CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage); - CGContextRelease(contextRef); - CGColorSpaceRelease(colorSpace); - cv::Mat cvMat3(rows, cols, CV_8UC3); // 8 bits per component, 4 channels - cv::cvtColor(cvMat, cvMat3,COLOR_RGBA2RGB); - - return cvMat3; -} - -+ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image -{ - static int kMaxResolution = 640; - CGImageRef imgRef = image.CGImage; - CGFloat width = CGImageGetWidth(imgRef); - CGFloat height = CGImageGetHeight(imgRef); - CGAffineTransform transform = CGAffineTransformIdentity; - CGRect bounds = CGRectMake( 0, 0, width, height); - if (width > kMaxResolution || height > kMaxResolution) { - CGFloat ratio = width/height; - if (ratio > 1) { - bounds.size.width = kMaxResolution; - bounds.size.height = bounds.size.width / ratio; - } else { - bounds.size.height = kMaxResolution; - bounds.size.width = bounds.size.height * ratio; - } - } - - CGFloat scaleRatio = bounds.size.width / width; - CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); - CGFloat boundHeight; - UIImageOrientation orient = image.imageOrientation; - switch(orient) { - case UIImageOrientationUp: - transform = CGAffineTransformIdentity; - break; - case UIImageOrientationUpMirrored: - transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - break; - case UIImageOrientationDown: - transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); - transform = CGAffineTransformRotate(transform, M_PI); - break; - case UIImageOrientationDownMirrored: - transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); - transform = CGAffineTransformScale(transform, 1.0, -1.0); - break; - case UIImageOrientationLeftMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationLeft: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationRight: - case UIImageOrientationRightMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeScale(-1.0, 1.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - default: - [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; - } - UIGraphicsBeginImageContext( bounds.size ); - CGContextRef context = UIGraphicsGetCurrentContext(); - if ( orient == UIImageOrientationRight || orient == UIImageOrientationLeft ) { - CGContextScaleCTM(context, -scaleRatio, scaleRatio); - CGContextTranslateCTM(context, -height, 0); - } - else { - CGContextScaleCTM(context, scaleRatio, -scaleRatio); - CGContextTranslateCTM(context, 0, -height); - } - CGContextConcatCTM( context, transform ); - CGContextDrawImage( UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef ); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return returnImage; -} - -@end diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj b/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj deleted file mode 100755 index 4af42aa..0000000 --- a/Prj-iOS/lpr/lpr.xcodeproj/project.pbxproj +++ /dev/null @@ -1,550 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 343B620D21997FC800D03830 /* SegmentationFreeRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */; }; - 343B6210219980FE00D03830 /* SegmenationFree-Inception.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */; }; - 343B6211219980FE00D03830 /* SegmenationFree-Inception.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */; }; - 343B621521998AB200D03830 /* CameraViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 343B621421998AB200D03830 /* CameraViewController.mm */; }; - 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDD02182DD9300B162D4 /* AppDelegate.m */; }; - 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDD82182DD9400B162D4 /* Assets.xcassets */; }; - 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */; }; - 34ECFDDF2182DD9400B162D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFDDE2182DD9400B162D4 /* main.m */; }; - 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */; }; - 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */; }; - 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */; }; - 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */; }; - 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE112182DEF500B162D4 /* Recognizer.cpp */; }; - 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE122182DEF500B162D4 /* FineMapping.cpp */; }; - 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */; }; - 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */; }; - 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */; }; - 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE1F2182DF2E00B162D4 /* cascade.xml */; }; - 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */; }; - 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */; }; - 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */; }; - 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */ = {isa = PBXBuildFile; fileRef = 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */; }; - 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE2C2182E10700B162D4 /* RootViewController.mm */; }; - 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE342182E56900B162D4 /* AVFoundation.framework */; }; - 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34ECFE372182E5F100B162D4 /* Utility.mm */; }; - 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34ECFE392182FAB700B162D4 /* CoreImage.framework */; }; - A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A33861A99BC945120023AC25 /* libPods-lpr.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 343B620B21997FC100D03830 /* SegmentationFreeRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentationFreeRecognizer.h; sourceTree = ""; }; - 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SegmentationFreeRecognizer.cpp; sourceTree = ""; }; - 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SegmenationFree-Inception.caffemodel"; sourceTree = ""; }; - 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "SegmenationFree-Inception.prototxt"; sourceTree = ""; }; - 343B621321998AB200D03830 /* CameraViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CameraViewController.h; path = lpr/CameraViewController.h; sourceTree = SOURCE_ROOT; }; - 343B621421998AB200D03830 /* CameraViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CameraViewController.mm; path = lpr/CameraViewController.mm; sourceTree = SOURCE_ROOT; }; - 34ECFDCC2182DD9300B162D4 /* lpr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lpr.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 34ECFDD02182DD9300B162D4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 34ECFDD82182DD9400B162D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 34ECFDDB2182DD9400B162D4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 34ECFDDD2182DD9400B162D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 34ECFDDE2182DD9400B162D4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateSegmentation.h; sourceTree = ""; }; - 34ECFE042182DEF500B162D4 /* Recognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Recognizer.h; sourceTree = ""; }; - 34ECFE052182DEF500B162D4 /* PlateDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateDetection.h; sourceTree = ""; }; - 34ECFE062182DEF500B162D4 /* PlateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlateInfo.h; sourceTree = ""; }; - 34ECFE072182DEF500B162D4 /* FineMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FineMapping.h; sourceTree = ""; }; - 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = niBlackThreshold.h; sourceTree = ""; }; - 34ECFE092182DEF500B162D4 /* FastDeskew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastDeskew.h; sourceTree = ""; }; - 34ECFE0A2182DEF500B162D4 /* Pipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pipeline.h; sourceTree = ""; }; - 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNNRecognizer.h; sourceTree = ""; }; - 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateSegmentation.cpp; sourceTree = ""; }; - 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlateDetection.cpp; sourceTree = ""; }; - 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Pipeline.cpp; sourceTree = ""; }; - 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FastDeskew.cpp; sourceTree = ""; }; - 34ECFE112182DEF500B162D4 /* Recognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Recognizer.cpp; sourceTree = ""; }; - 34ECFE122182DEF500B162D4 /* FineMapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FineMapping.cpp; sourceTree = ""; }; - 34ECFE132182DEF500B162D4 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; - 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CNNRecognizer.cpp; sourceTree = ""; }; - 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = HorizonalFinemapping.caffemodel; sourceTree = ""; }; - 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = CharacterRecognization.caffemodel; sourceTree = ""; }; - 34ECFE1F2182DF2E00B162D4 /* cascade.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = cascade.xml; sourceTree = ""; }; - 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Segmentation.prototxt; sourceTree = ""; }; - 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HorizonalFinemapping.prototxt; sourceTree = ""; }; - 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */ = {isa = PBXFileReference; lastKnownFileType = file; path = Segmentation.caffemodel; sourceTree = ""; }; - 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CharacterRecognization.prototxt; sourceTree = ""; }; - 34ECFE2B2182E10700B162D4 /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 34ECFE2C2182E10700B162D4 /* RootViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RootViewController.mm; sourceTree = ""; }; - 34ECFE342182E56900B162D4 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 34ECFE362182E5F100B162D4 /* Utility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = ""; }; - 34ECFE372182E5F100B162D4 /* Utility.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Utility.mm; sourceTree = ""; }; - 34ECFE392182FAB700B162D4 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; - 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.release.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.release.xcconfig"; sourceTree = ""; }; - A33861A99BC945120023AC25 /* libPods-lpr.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-lpr.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-lpr.debug.xcconfig"; path = "Pods/Target Support Files/Pods-lpr/Pods-lpr.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 34ECFDC92182DD9300B162D4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 34ECFE3A2182FAB700B162D4 /* CoreImage.framework in Frameworks */, - 34ECFE352182E56900B162D4 /* AVFoundation.framework in Frameworks */, - A396A338993421DC89845E63 /* libPods-lpr.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 34ECFDC32182DD9300B162D4 = { - isa = PBXGroup; - children = ( - 34ECFDCE2182DD9300B162D4 /* lpr */, - 34ECFE1C2182DF2E00B162D4 /* Resource */, - 34ECFDCD2182DD9300B162D4 /* Products */, - DE72138A4B42368326688C6A /* Pods */, - 97C4CF37B3E356C8641CE105 /* Frameworks */, - ); - sourceTree = ""; - }; - 34ECFDCD2182DD9300B162D4 /* Products */ = { - isa = PBXGroup; - children = ( - 34ECFDCC2182DD9300B162D4 /* lpr.app */, - ); - name = Products; - sourceTree = ""; - }; - 34ECFDCE2182DD9300B162D4 /* lpr */ = { - isa = PBXGroup; - children = ( - 34ECFE012182DEF500B162D4 /* Source */, - 34ECFDCF2182DD9300B162D4 /* AppDelegate.h */, - 34ECFDD02182DD9300B162D4 /* AppDelegate.m */, - 34ECFDD82182DD9400B162D4 /* Assets.xcassets */, - 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */, - 34ECFDDD2182DD9400B162D4 /* Info.plist */, - 34ECFDDE2182DD9400B162D4 /* main.m */, - 34ECFE2B2182E10700B162D4 /* RootViewController.h */, - 34ECFE2C2182E10700B162D4 /* RootViewController.mm */, - 343B621321998AB200D03830 /* CameraViewController.h */, - 343B621421998AB200D03830 /* CameraViewController.mm */, - 34ECFE362182E5F100B162D4 /* Utility.h */, - 34ECFE372182E5F100B162D4 /* Utility.mm */, - ); - path = lpr; - sourceTree = ""; - }; - 34ECFE012182DEF500B162D4 /* Source */ = { - isa = PBXGroup; - children = ( - 34ECFE022182DEF500B162D4 /* include */, - 34ECFE0C2182DEF500B162D4 /* src */, - ); - path = Source; - sourceTree = ""; - }; - 34ECFE022182DEF500B162D4 /* include */ = { - isa = PBXGroup; - children = ( - 343B620B21997FC100D03830 /* SegmentationFreeRecognizer.h */, - 34ECFE032182DEF500B162D4 /* PlateSegmentation.h */, - 34ECFE042182DEF500B162D4 /* Recognizer.h */, - 34ECFE052182DEF500B162D4 /* PlateDetection.h */, - 34ECFE062182DEF500B162D4 /* PlateInfo.h */, - 34ECFE072182DEF500B162D4 /* FineMapping.h */, - 34ECFE082182DEF500B162D4 /* niBlackThreshold.h */, - 34ECFE092182DEF500B162D4 /* FastDeskew.h */, - 34ECFE0A2182DEF500B162D4 /* Pipeline.h */, - 34ECFE0B2182DEF500B162D4 /* CNNRecognizer.h */, - ); - path = include; - sourceTree = ""; - }; - 34ECFE0C2182DEF500B162D4 /* src */ = { - isa = PBXGroup; - children = ( - 343B620C21997FC700D03830 /* SegmentationFreeRecognizer.cpp */, - 34ECFE0D2182DEF500B162D4 /* PlateSegmentation.cpp */, - 34ECFE0E2182DEF500B162D4 /* PlateDetection.cpp */, - 34ECFE0F2182DEF500B162D4 /* Pipeline.cpp */, - 34ECFE102182DEF500B162D4 /* FastDeskew.cpp */, - 34ECFE112182DEF500B162D4 /* Recognizer.cpp */, - 34ECFE122182DEF500B162D4 /* FineMapping.cpp */, - 34ECFE132182DEF500B162D4 /* util.h */, - 34ECFE142182DEF500B162D4 /* CNNRecognizer.cpp */, - ); - path = src; - sourceTree = ""; - }; - 34ECFE1C2182DF2E00B162D4 /* Resource */ = { - isa = PBXGroup; - children = ( - 343B620E219980FD00D03830 /* SegmenationFree-Inception.caffemodel */, - 343B620F219980FE00D03830 /* SegmenationFree-Inception.prototxt */, - 34ECFE1D2182DF2E00B162D4 /* HorizonalFinemapping.caffemodel */, - 34ECFE1E2182DF2E00B162D4 /* CharacterRecognization.caffemodel */, - 34ECFE1F2182DF2E00B162D4 /* cascade.xml */, - 34ECFE202182DF2E00B162D4 /* Segmentation.prototxt */, - 34ECFE212182DF2E00B162D4 /* HorizonalFinemapping.prototxt */, - 34ECFE222182DF2E00B162D4 /* Segmentation.caffemodel */, - 34ECFE232182DF2E00B162D4 /* CharacterRecognization.prototxt */, - ); - path = Resource; - sourceTree = ""; - }; - 97C4CF37B3E356C8641CE105 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 34ECFE392182FAB700B162D4 /* CoreImage.framework */, - 34ECFE342182E56900B162D4 /* AVFoundation.framework */, - A33861A99BC945120023AC25 /* libPods-lpr.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - DE72138A4B42368326688C6A /* Pods */ = { - isa = PBXGroup; - children = ( - E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */, - 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 34ECFDCB2182DD9300B162D4 /* lpr */ = { - isa = PBXNativeTarget; - buildConfigurationList = 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */; - buildPhases = ( - 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */, - 34ECFDC82182DD9300B162D4 /* Sources */, - 34ECFDC92182DD9300B162D4 /* Frameworks */, - 34ECFDCA2182DD9300B162D4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = lpr; - productName = lpr; - productReference = 34ECFDCC2182DD9300B162D4 /* lpr.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 34ECFDC42182DD9300B162D4 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1000; - ORGANIZATIONNAME = lprSample; - TargetAttributes = { - 34ECFDCB2182DD9300B162D4 = { - CreatedOnToolsVersion = 10.0; - }; - }; - }; - buildConfigurationList = 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 34ECFDC32182DD9300B162D4; - productRefGroup = 34ECFDCD2182DD9300B162D4 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 34ECFDCB2182DD9300B162D4 /* lpr */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 34ECFDCA2182DD9300B162D4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 343B6210219980FE00D03830 /* SegmenationFree-Inception.caffemodel in Resources */, - 34ECFE2A2182DF2F00B162D4 /* CharacterRecognization.prototxt in Resources */, - 34ECFDDC2182DD9400B162D4 /* LaunchScreen.storyboard in Resources */, - 34ECFDD92182DD9400B162D4 /* Assets.xcassets in Resources */, - 34ECFE282182DF2F00B162D4 /* HorizonalFinemapping.prototxt in Resources */, - 34ECFE242182DF2F00B162D4 /* HorizonalFinemapping.caffemodel in Resources */, - 34ECFE272182DF2F00B162D4 /* Segmentation.prototxt in Resources */, - 34ECFE262182DF2F00B162D4 /* cascade.xml in Resources */, - 34ECFE292182DF2F00B162D4 /* Segmentation.caffemodel in Resources */, - 343B6211219980FE00D03830 /* SegmenationFree-Inception.prototxt in Resources */, - 34ECFE252182DF2F00B162D4 /* CharacterRecognization.caffemodel in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 12CCA15FA936D51F737FDEDF /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-lpr-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 34ECFDC82182DD9300B162D4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 343B620D21997FC800D03830 /* SegmentationFreeRecognizer.cpp in Sources */, - 34ECFE1A2182DEF500B162D4 /* FineMapping.cpp in Sources */, - 34ECFE182182DEF500B162D4 /* FastDeskew.cpp in Sources */, - 34ECFE162182DEF500B162D4 /* PlateDetection.cpp in Sources */, - 34ECFDDF2182DD9400B162D4 /* main.m in Sources */, - 34ECFE382182E5F100B162D4 /* Utility.mm in Sources */, - 34ECFE2D2182E10700B162D4 /* RootViewController.mm in Sources */, - 34ECFE172182DEF500B162D4 /* Pipeline.cpp in Sources */, - 34ECFE152182DEF500B162D4 /* PlateSegmentation.cpp in Sources */, - 34ECFE1B2182DEF500B162D4 /* CNNRecognizer.cpp in Sources */, - 34ECFDD12182DD9300B162D4 /* AppDelegate.m in Sources */, - 343B621521998AB200D03830 /* CameraViewController.mm in Sources */, - 34ECFE192182DEF500B162D4 /* Recognizer.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 34ECFDDA2182DD9400B162D4 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 34ECFDDB2182DD9400B162D4 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 34ECFDE02182DD9400B162D4 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/lpr/Source/incllude\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 10.1; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 34ECFDE12182DD9400B162D4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - "\"$(SRCROOT)/lpr/Source/incllude\"", - "\"$(SRCROOT)\"", - ); - IPHONEOS_DEPLOYMENT_TARGET = 10.1; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 34ECFDE32182DD9400B162D4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E169020B9373AF28E9C472DD /* Pods-lpr.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; - CLANG_CXX_LIBRARY = "compiler-default"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = YZGMTHK294; - ENABLE_BITCODE = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_ROOT}/Headers/Public\"", - "\"${PODS_ROOT}/Headers/Public/OpenCV\"", - ); - INFOPLIST_FILE = lpr/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 34ECFDE42182DD9400B162D4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66BAD4CEFABD6705C5100968 /* Pods-lpr.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "compiler-default"; - CLANG_CXX_LIBRARY = "compiler-default"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = YZGMTHK294; - ENABLE_BITCODE = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "\"${PODS_ROOT}/Headers/Public\"", - "\"${PODS_ROOT}/Headers/Public/OpenCV\"", - ); - INFOPLIST_FILE = lpr/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.TongxingPay.IDCardRecognizeDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 34ECFDC72182DD9300B162D4 /* Build configuration list for PBXProject "lpr" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 34ECFDE02182DD9400B162D4 /* Debug */, - 34ECFDE12182DD9400B162D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 34ECFDE22182DD9400B162D4 /* Build configuration list for PBXNativeTarget "lpr" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 34ECFDE32182DD9400B162D4 /* Debug */, - 34ECFDE42182DD9400B162D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 34ECFDC42182DD9300B162D4 /* Project object */; -} diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index 39e1b8b..0000000 --- a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100755 index 18d9810..0000000 --- a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index 7314580..0000000 Binary files a/Prj-iOS/lpr/lpr.xcodeproj/project.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist b/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100755 index 008c546..0000000 --- a/Prj-iOS/lpr/lpr.xcodeproj/xcuserdata/tbao.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SchemeUserState - - lpr.xcscheme - - orderHint - 2 - - lpr.xcscheme_^#shared#^_ - - orderHint - 2 - - - - diff --git a/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata b/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index d677399..0000000 --- a/Prj-iOS/lpr/lpr.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100755 index 18d9810..0000000 --- a/Prj-iOS/lpr/lpr.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index a999c2c..0000000 Binary files a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100755 index 37996a6..0000000 --- a/Prj-iOS/lpr/lpr.xcworkspace/xcuserdata/tbao.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Prj-iOS/lpr/lpr/AppDelegate.h b/Prj-iOS/lpr/lpr/AppDelegate.h deleted file mode 100755 index 8ef26f5..0000000 --- a/Prj-iOS/lpr/lpr/AppDelegate.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// AppDelegate.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - - -@end - diff --git a/Prj-iOS/lpr/lpr/AppDelegate.m b/Prj-iOS/lpr/lpr/AppDelegate.m deleted file mode 100755 index e022066..0000000 --- a/Prj-iOS/lpr/lpr/AppDelegate.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// AppDelegate.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "AppDelegate.h" -#import "RootViewController.h" - -@interface AppDelegate () - -@end - -@implementation AppDelegate - - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Override point for customization after application launch. - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]]; - [self.window makeKeyAndVisible]; - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. -} - - -- (void)applicationDidEnterBackground:(UIApplication *)application { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - - -- (void)applicationWillEnterForeground:(UIApplication *)application { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. -} - - -@end diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100755 index d8db8d6..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json deleted file mode 100755 index da4a164..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json deleted file mode 100755 index 8ca20de..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "back_camera_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "back_camera_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png deleted file mode 100755 index 41e7387..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png deleted file mode 100755 index be4379d..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/back_camera_btn.imageset/back_camera_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json deleted file mode 100755 index fc0efcf..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "flash_camera_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "flash_camera_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png deleted file mode 100755 index 91027cd..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png deleted file mode 100755 index e751b60..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/flash_camera_btn.imageset/flash_camera_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json deleted file mode 100755 index 7f06e8f..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "locker_btn_def@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "locker_btn_def@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png deleted file mode 100755 index daeadf0..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png deleted file mode 100755 index 2e05dae..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/locker_btn_def.imageset/locker_btn_def@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json deleted file mode 100755 index 5fccab2..0000000 --- a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "take_pic_btn@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "take_pic_btn@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png deleted file mode 100755 index fb47d20..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@2x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png b/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png deleted file mode 100755 index db0393b..0000000 Binary files a/Prj-iOS/lpr/lpr/Assets.xcassets/take_pic_btn.imageset/take_pic_btn@3x.png and /dev/null differ diff --git a/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard b/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard deleted file mode 100755 index bfa3612..0000000 --- a/Prj-iOS/lpr/lpr/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Prj-iOS/lpr/lpr/CameraViewController.h b/Prj-iOS/lpr/lpr/CameraViewController.h deleted file mode 100755 index 8331b68..0000000 --- a/Prj-iOS/lpr/lpr/CameraViewController.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// CameraViewController.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#ifdef __cplusplus -#import -#import -#endif - -#ifdef __OBJC__ -#import -#import -#import -#import -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^ResultCallBack)(NSString *reuslt, UIImage *image); - -@interface CameraViewController : UIViewController - -@property(nonatomic, copy) ResultCallBack resultCB; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/lpr/CameraViewController.mm b/Prj-iOS/lpr/lpr/CameraViewController.mm deleted file mode 100755 index ec285bf..0000000 --- a/Prj-iOS/lpr/lpr/CameraViewController.mm +++ /dev/null @@ -1,517 +0,0 @@ -// -// CameraViewController.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "CameraViewController.h" -#import "Utility.h" -#import "Pipeline.h" - -//屏幕的宽、高 -#define kScreenWidth [UIScreen mainScreen].bounds.size.width -#define kScreenHeight [UIScreen mainScreen].bounds.size.height - -@interface CameraViewController () -{ - AVCaptureSession *_session; - AVCaptureDeviceInput *_captureInput; - AVCaptureStillImageOutput *_captureOutput; - AVCaptureVideoPreviewLayer *_preview; - AVCaptureDevice *_device; - - NSTimer *_timer; //定时器 - BOOL _on; //闪光灯状态 - BOOL _capture;//导航栏动画是否完成 - BOOL _isFoucePixel;//是否相位对焦 - CGRect _imgRect;//拍照裁剪 - int _count;//每几帧识别 - CGFloat _isLensChanged;//镜头位置 - - /*相位聚焦下镜头位置 镜头晃动 值不停的改变 */ - CGFloat _isIOS8AndFoucePixelLensPosition; - - /* - 控制识别速度,最小值为1!数值越大识别越慢。 - 相机初始化时,设置默认值为1(不要改动),判断设备若为相位对焦时,设置此值为2(可以修改,最小为1,越大越慢) - 此值的功能是为了减小相位对焦下,因识别速度过快 - 此值在相机初始化中设置,在相机代理中使用,用户若无特殊需求不用修改。 - */ - int _MaxFR; - - cv::Mat source_image; -} - -@property (assign, nonatomic) BOOL adjustingFocus; -@property (nonatomic, retain) CALayer *customLayer; -@property (nonatomic,assign) BOOL isProcessingImage; - -@property (nonatomic, strong) UIImage* image; - -@end - -@implementation CameraViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view. - self.view.backgroundColor = [UIColor clearColor]; - - //初始化相机 - [self initialize]; - - //创建相机界面控件 - [self createCameraView]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - _capture = NO; - [self performSelector:@selector(changeCapture) withObject:nil afterDelay:0.4]; - //不支持相位对焦情况下(iPhone6以后的手机支持相位对焦) 设置定时器 开启连续对焦 - if (!_isFoucePixel) { - _timer = [NSTimer scheduledTimerWithTimeInterval:1.3 target:self selector:@selector(fouceMode) userInfo:nil repeats:YES]; - } - - AVCaptureDevice*camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; - int flags = NSKeyValueObservingOptionNew; - //注册通知 - [camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil]; - if (_isFoucePixel) { - [camDevice addObserver:self forKeyPath:@"lensPosition" options:flags context:nil]; - } - [_session startRunning]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - self.navigationController.navigationBarHidden = NO; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - - if (!_isFoucePixel) { - [_timer invalidate]; - _timer = nil; - } - AVCaptureDevice*camDevice =[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; - [camDevice removeObserver:self forKeyPath:@"adjustingFocus"]; - if (_isFoucePixel) { - [camDevice removeObserver:self forKeyPath:@"lensPosition"]; - } - [_session stopRunning]; - - _capture = NO; -} - -- (void)changeCapture { - _capture = YES; -} - -#pragma mark - Private Methods -//初始化相机 -- (void)initialize { - //判断摄像头授权 - AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; - if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){ - self.view.backgroundColor = [UIColor blackColor]; -// UIAlertView * alt = [[UIAlertView alloc] initWithTitle:@"未获得授权使用摄像头" message:@"请在'设置-隐私-相机'打开" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; -// [alt show]; - UIAlertController * alert = [UIAlertController - alertControllerWithTitle:@"未获得授权使用摄像头" - message:@"请在'设置-隐私-相机'打开" - preferredStyle:UIAlertControllerStyleAlert]; - - - __weak typeof(self) weakSelf = self; - UIAlertAction* yesButton = [UIAlertAction - actionWithTitle:@"OK" - style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) { - //Handle your yes please button action here - [weakSelf.navigationController popViewControllerAnimated:YES]; - }]; - - - [alert addAction:yesButton]; - [self presentViewController:alert animated:YES completion:nil]; - return; - } - - _MaxFR = 1; - //1.创建会话层 - _session = [[AVCaptureSession alloc] init]; - [_session setSessionPreset:AVCaptureSessionPreset1920x1080]; - - //2.创建、配置输入设备 - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices){ - if (device.position == AVCaptureDevicePositionBack){ - _device = device; - _captureInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; - } - } - [_session addInput:_captureInput]; - - //2.创建视频流输出 - AVCaptureVideoDataOutput *captureOutput = [[AVCaptureVideoDataOutput alloc] init]; - captureOutput.alwaysDiscardsLateVideoFrames = YES; - dispatch_queue_t queue; - queue = dispatch_queue_create("cameraQueue", NULL); - [captureOutput setSampleBufferDelegate:self queue:queue]; - NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey; - NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]; - NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key]; - [captureOutput setVideoSettings:videoSettings]; - [_session addOutput:captureOutput]; - - //3.创建、配置静态拍照输出 - _captureOutput = [[AVCaptureStillImageOutput alloc] init]; - NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG,AVVideoCodecKey,nil]; - [_captureOutput setOutputSettings:outputSettings]; - [_session addOutput:_captureOutput]; - - //4.预览图层 - _preview = [AVCaptureVideoPreviewLayer layerWithSession: _session]; - _preview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); - _preview.videoGravity = AVLayerVideoGravityResizeAspectFill; - [self.view.layer addSublayer:_preview]; - - //判断是否相位对焦 - if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { - AVCaptureDeviceFormat *deviceFormat = _device.activeFormat; - if (deviceFormat.autoFocusSystem == AVCaptureAutoFocusSystemPhaseDetection){ - _isFoucePixel = YES; - _MaxFR = 2; - } - } -} - -- (void)createCameraView -{ - //设置覆盖层 - CAShapeLayer *maskWithHole = [CAShapeLayer layer]; - // Both frames are defined in the same coordinate system - CGRect biggerRect = self.view.bounds; - CGFloat offset = 1.0f; - if ([[UIScreen mainScreen] scale] >= 2) { - offset = 0.5; - } - CGRect smallFrame = CGRectMake(45, 100, 300, 500); - CGRect smallerRect = CGRectInset(smallFrame, -offset, -offset) ; - UIBezierPath *maskPath = [UIBezierPath bezierPath]; - [maskPath moveToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMaxY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMaxY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))]; - [maskPath moveToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMaxY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMaxY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))]; - [maskWithHole setPath:[maskPath CGPath]]; - [maskWithHole setFillRule:kCAFillRuleEvenOdd]; - [maskWithHole setFillColor:[[UIColor colorWithWhite:0 alpha:0.35] CGColor]]; - [self.view.layer addSublayer:maskWithHole]; - [self.view.layer setMasksToBounds:YES]; - - /* 相机按钮 适配了iPhone和ipad 不同需求自行修改界面*/ - //返回、闪光灯按钮 - CGFloat backWidth = 35; - if (kScreenHeight>=1024) { - backWidth = 50; - } - CGFloat s = 80; - CGFloat s1 = 0; - if (kScreenHeight==480) { - s = 60; - s1 = 10; - } - UIButton *backBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/16,kScreenWidth/16-s1, backWidth, backWidth)]; - [backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - [backBtn setImage:[UIImage imageNamed:@"back_camera_btn"] forState:UIControlStateNormal]; - backBtn.titleLabel.textAlignment = NSTextAlignmentLeft; - [self.view addSubview:backBtn]; - - UIButton *flashBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth-kScreenWidth/16-backWidth,kScreenWidth/16-s1, backWidth, backWidth)]; - [flashBtn setImage:[UIImage imageNamed:@"flash_camera_btn"] forState:UIControlStateNormal]; - [flashBtn addTarget:self action:@selector(modeBtn) forControlEvents:UIControlEventTouchUpInside]; - [self.view addSubview:flashBtn]; - - //拍照视图 上拉按钮 拍照按钮 - UIButton *upBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-60, kScreenHeight-20, 120, 20)]; - upBtn.tag = 1001; - [upBtn addTarget:self action:@selector(upBtn:) forControlEvents:UIControlEventTouchUpInside]; - [upBtn setImage:[UIImage imageNamed:@"locker_btn_def"] forState:UIControlStateNormal]; - [self.view addSubview:upBtn]; - - UIButton *photoBtn = [[UIButton alloc]initWithFrame:CGRectMake(kScreenWidth/2-30,kScreenHeight-s,60, 60)]; - photoBtn.tag = 1000; - photoBtn.hidden = YES; - [photoBtn setImage:[UIImage imageNamed:@"take_pic_btn"] forState:UIControlStateNormal]; - [photoBtn addTarget:self action:@selector(photoBtn) forControlEvents:UIControlEventTouchUpInside]; - [photoBtn setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted]; - [self.view addSubview:photoBtn]; - [self.view bringSubviewToFront:photoBtn]; -} - -//隐藏状态栏 -- (UIStatusBarStyle)preferredStatusBarStyle{ - return UIStatusBarStyleDefault; -} -- (BOOL)prefersStatusBarHidden{ - return YES; -} - -//对焦 -- (void)fouceMode -{ - NSError *error; - AVCaptureDevice *device = [self cameraWithPosition:AVCaptureDevicePositionBack]; - if ([device isFocusModeSupported:AVCaptureFocusModeAutoFocus]) - { - if ([device lockForConfiguration:&error]) { - CGPoint cameraPoint = [_preview captureDevicePointOfInterestForPoint:self.view.center]; - [device setFocusPointOfInterest:cameraPoint]; - [device setFocusMode:AVCaptureFocusModeAutoFocus]; - [device unlockForConfiguration]; - } else { - //NSLog(@"Error: %@", error); - } - } -} - -- (AVCaptureDevice *)cameraWithPosition:(AVCaptureDevicePosition)position -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices){ - if (device.position == position){ - return device; - } - } - return nil; -} - -- (NSString *)getPath:(NSString*)fileName -{ - NSString *bundlePath = [NSBundle mainBundle].bundlePath; - NSString *path = [bundlePath stringByAppendingPathComponent:fileName]; - return path; -} - -- (NSString *)simpleRecognition:(cv::Mat&)src -{ - NSString *path_1 = [self getPath:@"cascade.xml"]; - NSString *path_2 = [self getPath:@"HorizonalFinemapping.prototxt"]; - NSString *path_3 = [self getPath:@"HorizonalFinemapping.caffemodel"]; - NSString *path_4 = [self getPath:@"Segmentation.prototxt"]; - NSString *path_5 = [self getPath:@"Segmentation.caffemodel"]; - NSString *path_6 = [self getPath:@"CharacterRecognization.prototxt"]; - NSString *path_7 = [self getPath:@"CharacterRecognization.caffemodel"]; - NSString *path_8 = [self getPath:@"SegmenationFree-Inception.prototxt"]; - NSString *path_9 = [self getPath:@"SegmenationFree-Inception.caffemodel"]; - - std::string *cpath_1 = new std::string([path_1 UTF8String]); - std::string *cpath_2 = new std::string([path_2 UTF8String]); - std::string *cpath_3 = new std::string([path_3 UTF8String]); - std::string *cpath_4 = new std::string([path_4 UTF8String]); - std::string *cpath_5 = new std::string([path_5 UTF8String]); - std::string *cpath_6 = new std::string([path_6 UTF8String]); - std::string *cpath_7 = new std::string([path_7 UTF8String]); - std::string *cpath_8 = new std::string([path_8 UTF8String]); - std::string *cpath_9 = new std::string([path_9 UTF8String]); - - - pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7, *cpath_8, *cpath_9); - - std::vector list_res = pr2.RunPiplineAsImage(src, pr::SEGMENTATION_FREE_METHOD); - std::string concat_results = ""; - for(auto one:list_res) { - if(one.confidence>0.7) { - concat_results += one.getPlateName()+","; - } - } - - NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding]; - if (str.length > 0) { - str = [str substringToIndex:str.length-1]; - str = [NSString stringWithFormat:@"%@",str]; - } else { - str = [NSString stringWithFormat:@"未识别成功"]; - } - NSLog(@"===> 识别结果 = %@", str); - - return str; -} - -#pragma mark - Actions -//返回按钮按钮点击事件 -- (void)backAction -{ - [self dismissViewControllerAnimated:YES completion:nil]; -} - -//闪光灯按钮点击事件 -- (void)modeBtn -{ - if (![_device hasTorch]) { - //NSLog(@"no torch"); - } else { - [_device lockForConfiguration:nil]; - if (!_on) { - [_device setTorchMode: AVCaptureTorchModeOn]; - _on = YES; - }else{ - [_device setTorchMode: AVCaptureTorchModeOff]; - _on = NO; - } - [_device unlockForConfiguration]; - } -} - -//上拉按钮点击事件 -- (void)upBtn:(UIButton *)upBtn -{ - UIButton *photoBtn = (UIButton *)[self.view viewWithTag:1000]; - photoBtn.hidden = NO; - upBtn.hidden = YES; -} - -//拍照按钮点击事件 -- (void)photoBtn -{ - self.isProcessingImage = YES; - //get connection - AVCaptureConnection *videoConnection = nil; - for (AVCaptureConnection *connection in _captureOutput.connections) { - for (AVCaptureInputPort *port in [connection inputPorts]) { - if ([[port mediaType] isEqual:AVMediaTypeVideo] ) { - videoConnection = connection; - break; - } - } - if (videoConnection) { break; } - } - - //get UIImage - __weak typeof(self) weakSelf = self; - [_captureOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: - ^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - if (imageSampleBuffer != NULL) { - //停止取景 - [_session stopRunning]; - - NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; - UIImage *tempImage = [[UIImage alloc] initWithData:imageData]; - - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:tempImage]; - source_image = [Utility cvMatFromUIImage:temp_image]; - NSString* text = [weakSelf simpleRecognition:source_image]; - - NSMutableDictionary* resultDict = [NSMutableDictionary new]; - resultDict[@"image"] = temp_image; - resultDict[@"text"] = text; - [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO]; - weakSelf.isProcessingImage = NO; - } - }]; -} - -//从摄像头缓冲区获取图像 -#pragma mark - AVCaptureSession delegate -- (void)captureOutput:(AVCaptureOutput *)captureOutput -didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer - fromConnection:(AVCaptureConnection *)connection -{ - CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); - CVPixelBufferLockBaseAddress(imageBuffer,0); - uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer); - size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); - size_t width = CVPixelBufferGetWidth(imageBuffer); - size_t height = CVPixelBufferGetHeight(imageBuffer); - - /*We unlock the image buffer*/ - CVPixelBufferUnlockBaseAddress(imageBuffer,0); - - /*Create a CGImageRef from the CVImageBufferRef*/ - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - CGImageRef newImage = CGBitmapContextCreateImage(newContext); - - /*We release some components*/ - CGContextRelease(newContext); - CGColorSpaceRelease(colorSpace); - - /*We display the result on the image view (We need to change the orientation of the image so that the video is displayed correctly)*/ - self.image = [UIImage imageWithCGImage:newImage scale:1.0 orientation:UIImageOrientationUp]; - /*We relase the CGImageRef*/ - CGImageRelease(newImage); - - //检边识别 - if (_capture == YES) { //导航栏动画完成 - if (self.isProcessingImage==NO) { //点击拍照后 不去识别 - if (!self.adjustingFocus) { //反差对焦下 非正在对焦状态(相位对焦下self.adjustingFocus此值不会改变) - if (_isLensChanged == _isIOS8AndFoucePixelLensPosition) { - _count++; - if (_count >= _MaxFR) { - - //识别 - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:self.image]; - source_image = [Utility cvMatFromUIImage:temp_image]; - NSString* text = [self simpleRecognition:source_image]; - - if (text.length == 7) { //识别成功 - _count = 0; - // 停止取景 - [_session stopRunning]; - //设置震动 - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - - NSMutableDictionary* resultDict = [NSMutableDictionary new]; - resultDict[@"image"] = temp_image; - resultDict[@"text"] = text; - - [self performSelectorOnMainThread:@selector(readyToGetImage:) withObject:resultDict waitUntilDone:NO]; - } - } - } else { - _isLensChanged = _isIOS8AndFoucePixelLensPosition; - _count = 0; - } - } - } - } - CVPixelBufferUnlockBaseAddress(imageBuffer,0); -} - -//找边成功开始拍照 -- (void)readyToGetImage:(NSDictionary *)resultDict -{ - [self dismissViewControllerAnimated:NO completion:^{ - }]; - - if (self.resultCB) { - self.resultCB(resultDict[@"text"], resultDict[@"image"]); - } -} - -- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context { - - /*反差对焦 监听反差对焦此*/ - if([keyPath isEqualToString:@"adjustingFocus"]){ - self.adjustingFocus =[[change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1]]; - } - /*监听相位对焦此*/ - if([keyPath isEqualToString:@"lensPosition"]){ - _isIOS8AndFoucePixelLensPosition =[[change objectForKey:NSKeyValueChangeNewKey] floatValue]; - //NSLog(@"监听_isIOS8AndFoucePixelLensPosition == %f",_isIOS8AndFoucePixelLensPosition); - } -} - - -@end diff --git a/Prj-iOS/lpr/lpr/Info.plist b/Prj-iOS/lpr/lpr/Info.plist deleted file mode 100755 index 19d69a9..0000000 --- a/Prj-iOS/lpr/lpr/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSCameraUsageDescription - 欢迎使用相机 - NSPhotoLibraryUsageDescription - 欢迎使用相册 - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Prj-iOS/lpr/lpr/RootViewController.h b/Prj-iOS/lpr/lpr/RootViewController.h deleted file mode 100755 index 14da8d2..0000000 --- a/Prj-iOS/lpr/lpr/RootViewController.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// RootViewController.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#ifdef __cplusplus -#import -#import -#endif - -#ifdef __OBJC__ -#import -#import -#import -#endif - -NS_ASSUME_NONNULL_BEGIN - -@interface RootViewController : UIViewController - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/lpr/RootViewController.mm b/Prj-iOS/lpr/lpr/RootViewController.mm deleted file mode 100755 index df13584..0000000 --- a/Prj-iOS/lpr/lpr/RootViewController.mm +++ /dev/null @@ -1,201 +0,0 @@ -// -// RootViewController.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "RootViewController.h" -#import -#import "CameraViewController.h" -#import "Utility.h" -#import "Pipeline.h" - -@interface RootViewController () - -@property (nonatomic, strong) UIButton* albumButton; -@property (nonatomic, strong) UIButton* cameraButton; -@property (nonatomic, strong) UIImageView* imageView; -@property (nonatomic, strong) UILabel* resultLabel; - -@end - -@implementation RootViewController -{ - cv::Mat source_image; -} - -#pragma mark - Lazy Initialize -- (UIButton *)albumButton -{ - if (!_albumButton) { - _albumButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_albumButton setTitle:@"打开相册" forState:UIControlStateNormal]; - [_albumButton setBackgroundColor:[UIColor redColor]]; - [_albumButton addTarget:self action:@selector(openAlbum) forControlEvents:UIControlEventTouchUpInside]; - } - return _albumButton; -} - -- (UIButton *)cameraButton -{ - if (!_cameraButton) { - _cameraButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cameraButton setBackgroundColor:[UIColor redColor]]; - [_cameraButton setTitle:@"实时拍照" forState:UIControlStateNormal]; - [_cameraButton addTarget:self action:@selector(openCamera) forControlEvents:UIControlEventTouchUpInside]; - } - return _cameraButton; -} - -- (UIImageView *)imageView -{ - if (!_imageView) { - _imageView = [[UIImageView alloc] init]; - _imageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _imageView; -} - -- (UILabel *)resultLabel -{ - if (!_resultLabel) { - _resultLabel = [UILabel new]; - _resultLabel.textColor = [UIColor redColor]; - _resultLabel.textAlignment = NSTextAlignmentLeft; - _resultLabel.font = [UIFont systemFontOfSize:15]; - } - return _resultLabel; -} - -#pragma mark - Life Cycle -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view. - self.view.backgroundColor = [UIColor whiteColor]; - self.navigationItem.title = @"车牌识别Demo"; - - [self.view addSubview:self.albumButton]; - [self.albumButton mas_makeConstraints:^(MASConstraintMaker* make) { - make.centerX.equalTo(self.view).offset(-80); - make.bottom.equalTo(self.mas_bottomLayoutGuideTop).offset(-20); - make.width.mas_equalTo(100); - make.height.mas_equalTo(50); - }]; - - [self.view addSubview:self.cameraButton]; - [self.cameraButton mas_makeConstraints:^(MASConstraintMaker* make) { - make.centerX.equalTo(self.view).offset(80); - make.bottom.equalTo(self.albumButton); - make.width.mas_equalTo(100); - make.height.mas_equalTo(50); - }]; - - [self.view addSubview:self.resultLabel]; - [self.resultLabel mas_makeConstraints:^(MASConstraintMaker* make) { - make.left.right.equalTo(self.view); - make.bottom.lessThanOrEqualTo(self.albumButton.mas_top); - }]; - - [self.view addSubview:self.imageView]; - [self.imageView mas_makeConstraints:^(MASConstraintMaker* make) { - make.top.left.right.equalTo(self.view); - make.bottom.lessThanOrEqualTo(self.resultLabel.mas_top); - }]; -} - -#pragma mark - Actions -- (void)openAlbum -{ - UIImagePickerController* picker = [[UIImagePickerController alloc] init]; - picker.delegate = self; - - if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) - return; - - picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - - [self presentViewController:picker animated:YES completion:nil]; -} - -- (void)openCamera -{ - CameraViewController* video = [CameraViewController new]; - video.resultCB = ^(NSString* text, UIImage* image) { - self.imageView.image = image; - self.resultLabel.text = text; - }; - [self presentViewController:video animated:YES completion:nil]; -} - -#pragma mark - Private Methods -- (NSString *)getPathFromBundle:(NSString*)fileName -{ - NSString *bundlePath = [NSBundle mainBundle].bundlePath; - NSString *path = [bundlePath stringByAppendingPathComponent:fileName]; - return path; -} - -- (void)freeRecognition:(cv::Mat&)src -{ - NSString *path_1 = [self getPathFromBundle:@"cascade.xml"]; - NSString *path_2 = [self getPathFromBundle:@"HorizonalFinemapping.prototxt"]; - NSString *path_3 = [self getPathFromBundle:@"HorizonalFinemapping.caffemodel"]; - NSString *path_4 = [self getPathFromBundle:@"Segmentation.prototxt"]; - NSString *path_5 = [self getPathFromBundle:@"Segmentation.caffemodel"]; - NSString *path_6 = [self getPathFromBundle:@"CharacterRecognization.prototxt"]; - NSString *path_7 = [self getPathFromBundle:@"CharacterRecognization.caffemodel"]; - NSString *path_8 = [self getPathFromBundle:@"SegmenationFree-Inception.prototxt"]; - NSString *path_9 = [self getPathFromBundle:@"SegmenationFree-Inception.caffemodel"]; - - std::string *cpath_1 = new std::string([path_1 UTF8String]); - std::string *cpath_2 = new std::string([path_2 UTF8String]); - std::string *cpath_3 = new std::string([path_3 UTF8String]); - std::string *cpath_4 = new std::string([path_4 UTF8String]); - std::string *cpath_5 = new std::string([path_5 UTF8String]); - std::string *cpath_6 = new std::string([path_6 UTF8String]); - std::string *cpath_7 = new std::string([path_7 UTF8String]); - std::string *cpath_8 = new std::string([path_8 UTF8String]); - std::string *cpath_9 = new std::string([path_9 UTF8String]); - - - pr::PipelinePR pr2 = pr::PipelinePR(*cpath_1, *cpath_2, *cpath_3, *cpath_4, *cpath_5, *cpath_6, *cpath_7, *cpath_8, *cpath_9); - - std::vector list_res = pr2.RunPiplineAsImage(src, pr::SEGMENTATION_FREE_METHOD); - std::string concat_results = ""; - for(auto one:list_res) { - if(one.confidence>0.7) { - concat_results += one.getPlateName()+","; - } - } - - NSString *str = [NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding]; - if (str.length > 0) { - str = [str substringToIndex:str.length-1]; - str = [NSString stringWithFormat:@"识别结果: %@",str]; - } else { - str = [NSString stringWithFormat:@"识别结果: 未识别成功"]; - } - - [self.resultLabel setText:str]; -} - -#pragma mark - UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info -{ - [picker dismissViewControllerAnimated:YES completion:nil]; - - UIImage* temp = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; - UIImage *temp_image = [Utility scaleAndRotateImageBackCamera:temp]; - source_image = [Utility cvMatFromUIImage:temp_image]; - [self freeRecognition:source_image]; - self.imageView.image = temp; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker -{ - [picker dismissViewControllerAnimated:YES completion:nil]; -} - -@end diff --git a/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h b/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h deleted file mode 100755 index a577733..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/CNNRecognizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Jack Yu on 21/10/2017. -// - -#ifndef SWIFTPR_CNNRECOGNIZER_H -#define SWIFTPR_CNNRECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - class CNNRecognizer: public GeneralRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - - CNNRecognizer(std::string prototxt,std::string caffemodel); - label recognizeCharacter(cv::Mat character); - private: - cv::dnn::Net net; - - }; - -} - -#endif //SWIFTPR_CNNRECOGNIZER_H diff --git a/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h b/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h deleted file mode 100755 index 456f08d..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/FastDeskew.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FASTDESKEW_H -#define SWIFTPR_FASTDESKEW_H - -#include -#include -namespace pr{ - - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize); -// cv::Mat spatialTransformer(cv::Mat skewImage); - -}//namepace pr - - -#endif //SWIFTPR_FASTDESKEW_H diff --git a/Prj-iOS/lpr/lpr/Source/include/FineMapping.h b/Prj-iOS/lpr/lpr/Source/include/FineMapping.h deleted file mode 100755 index 352202e..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/FineMapping.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by 庾金科 on 22/09/2017. -// - -#ifndef SWIFTPR_FINEMAPPING_H -#define SWIFTPR_FINEMAPPING_H - -#include -#include - -#include -namespace pr{ - class FineMapping{ - public: - FineMapping(); - - - FineMapping(std::string prototxt,std::string caffemodel); - static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17); - cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding); - - - private: - cv::dnn::Net net; - - }; - - - - -} -#endif //SWIFTPR_FINEMAPPING_H diff --git a/Prj-iOS/lpr/lpr/Source/include/Pipeline.h b/Prj-iOS/lpr/lpr/Source/include/Pipeline.h deleted file mode 100755 index 144cc80..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/Pipeline.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// Created by 庾金科 on 22/10/2017. -// - -#ifndef SWIFTPR_PIPLINE_H -#define SWIFTPR_PIPLINE_H - -#include "PlateDetection.h" -#include "PlateSegmentation.h" -#include "CNNRecognizer.h" -#include "PlateInfo.h" -#include "FastDeskew.h" -#include "FineMapping.h" -#include "Recognizer.h" -#include "SegmentationFreeRecognizer.h" - -namespace pr{ - -// std::string str_code[]={"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"}; -// const std::vector CH_PLATE_CODE(str_code, str_code+83); - - const int SEGMENTATION_FREE_METHOD = 0; - const int SEGMENTATION_BASED_METHOD = 1; - - class PipelinePR { - public: - GeneralRecognizer *generalRecognizer; - PlateDetection *plateDetection; - PlateSegmentation *plateSegmentation; - FineMapping *fineMapping; - SegmentationFreeRecognizer *segmentationFreeRecognizer; - - PipelinePR(std::string detector_filename, - std::string finemapping_prototxt,std::string finemapping_caffemodel, - std::string segmentation_prototxt,std::string segmentation_caffemodel, - std::string charRecognization_proto,std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel - ); - ~PipelinePR(); - - std::vector plateRes; - std::vector RunPiplineAsImage(cv::Mat plateImage,int method); - }; -} -#endif //SWIFTPR_PIPLINE_H diff --git a/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h b/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h deleted file mode 100755 index f4cf567..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/PlateDetection.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEDETECTION_H -#define SWIFTPR_PLATEDETECTION_H - -#include -#include "PlateInfo.h" -#include -namespace pr{ - class PlateDetection{ - public: - PlateDetection(std::string filename_cascade); - PlateDetection(); - void LoadModel(std::string filename_cascade); - void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800); -// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400); - - -// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage); - - - - private: - cv::CascadeClassifier cascade; - - - }; - -}// namespace pr - -#endif //SWIFTPR_PLATEDETECTION_H diff --git a/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h b/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h deleted file mode 100755 index f1ea716..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/PlateInfo.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// Created by 庾金科 on 20/09/2017. -// - -#ifndef SWIFTPR_PLATEINFO_H -#define SWIFTPR_PLATEINFO_H -#include -namespace pr { - - typedef std::vector Character; - - enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; - enum CharType {CHINESE,LETTER,LETTER_NUMS,INVALID}; - - - class PlateInfo { - public: - std::vector > plateChars; - std::vector > plateCoding; - float confidence = 0; - PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - name = plateName; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) { - licensePlate = plateData; - ROI = plateRect; - Type = plateType; - } - PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) { - licensePlate = plateData; - ROI = plateRect; - } - PlateInfo() { - - } - - cv::Mat getPlateImage() { - return licensePlate; - } - - void setPlateImage(cv::Mat plateImage){ - licensePlate = plateImage; - } - - cv::Rect getPlateRect() { - return ROI; - } - - void setPlateRect(cv::Rect plateRect) { - ROI = plateRect; - } - cv::String getPlateName() { - return name; - - } - void setPlateName(cv::String plateName) { - name = plateName; - } - int getPlateType() { - return Type; - } - - void appendPlateChar(const std::pair &plateChar) - { - plateChars.push_back(plateChar); - } - - void appendPlateCoding(const std::pair &charProb){ - plateCoding.push_back(charProb); - } - - // cv::Mat getPlateChars(int id) { - // if(id mappingTable) { - std::string decode; - for(auto plate:plateCoding) { - float *prob = (float *)plate.second.data; - if(plate.first == CHINESE) { - - decode += mappingTable[std::max_element(prob,prob+31) - prob]; - confidence+=*std::max_element(prob,prob+31); - - -// std::cout<<*std::max_element(prob,prob+31)< -#include "PlateInfo.h" - -namespace pr{ - - - class PlateSegmentation{ - public: - const int PLATE_NORMAL = 6; - const int PLATE_NORMAL_GREEN = 7; - const int DEFAULT_WIDTH = 20; - PlateSegmentation(std::string phototxt,std::string caffemodel); - PlateSegmentation(){} - void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects); - - void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones); - void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair > &candidatePts); - void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects); - void ExtractRegions(PlateInfo &plateInfo,std::vector &rects); - cv::Mat classifyResponse(const cv::Mat &cropped); - private: - cv::dnn::Net net; - - -// RefineRegion() - - }; - -}//namespace pr - -#endif //SWIFTPR_PLATESEGMENTATION_H diff --git a/Prj-iOS/lpr/lpr/Source/include/Recognizer.h b/Prj-iOS/lpr/lpr/Source/include/Recognizer.h deleted file mode 100755 index 04a565f..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/Recognizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by 庾金科 on 20/10/2017. -// - - -#ifndef SWIFTPR_RECOGNIZER_H -#define SWIFTPR_RECOGNIZER_H - -#include -#include "PlateInfo.h" -namespace pr{ - typedef cv::Mat label; - class GeneralRecognizer{ - public: - virtual label recognizeCharacter(cv::Mat character) = 0; -// virtual cv::Mat SegmentationFreeForSinglePlate(cv::Mat plate) = 0; - void SegmentBasedSequenceRecognition(PlateInfo &plateinfo); - void SegmentationFreeSequenceRecognition(PlateInfo &plateInfo); - - }; - -} -#endif //SWIFTPR_RECOGNIZER_H diff --git a/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h b/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h deleted file mode 100755 index 583899e..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/SegmentationFreeRecognizer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// Created by 庾金科 on 28/11/2017. -// - -#ifndef SWIFTPR_SEGMENTATIONFREERECOGNIZER_H -#define SWIFTPR_SEGMENTATIONFREERECOGNIZER_H - -#include "Recognizer.h" -namespace pr{ - - - class SegmentationFreeRecognizer{ - public: - const int CHAR_INPUT_W = 14; - const int CHAR_INPUT_H = 30; - const int CHAR_LEN = 84; - - SegmentationFreeRecognizer(std::string prototxt,std::string caffemodel); - std::pair SegmentationFreeForSinglePlate(cv::Mat plate,std::vector mapping_table); - - - private: - cv::dnn::Net net; - - }; - -} -#endif //SWIFTPR_SEGMENTATIONFREERECOGNIZER_H diff --git a/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h b/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h deleted file mode 100755 index 5ad7e14..0000000 --- a/Prj-iOS/lpr/lpr/Source/include/niBlackThreshold.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// Created by 庾金科 on 26/10/2017. -// - -#ifndef SWIFTPR_NIBLACKTHRESHOLD_H -#define SWIFTPR_NIBLACKTHRESHOLD_H - - -#include -using namespace cv; - -enum LocalBinarizationMethods{ - BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 . - BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 . - BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 . - BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 . -}; - - -void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue, - int type, int blockSize, double k, int binarizationMethod ) -{ - // Input grayscale image - Mat src = _src.getMat(); - CV_Assert(src.channels() == 1); - CV_Assert(blockSize % 2 == 1 && blockSize > 1); - if (binarizationMethod == BINARIZATION_SAUVOLA) { - CV_Assert(src.depth() == CV_8U); - } - type &= THRESH_MASK; - // Compute local threshold (T = mean + k * stddev) - // using mean and standard deviation in the neighborhood of each pixel - // (intermediate calculations are done with floating-point precision) - Mat test; - Mat thresh; - { - // note that: Var[X] = E[X^2] - E[X]^2 - Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum; - double srcMin, stddevMax; - boxFilter(src, mean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize), - Point(-1,-1), true, BORDER_REPLICATE); - variance = sqmean - mean.mul(mean); - sqrt(variance, stddev); - switch (binarizationMethod) - { - case BINARIZATION_NIBLACK: - thresh = mean + stddev * static_cast(k); - - break; - case BINARIZATION_SAUVOLA: - thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.)); - break; - case BINARIZATION_WOLF: - minMaxIdx(src, &srcMin,NULL); - minMaxIdx(stddev, NULL, &stddevMax); - thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax); - break; - case BINARIZATION_NICK: - sqrt(variance + sqmean, sqrtVarianceMeanSum); - thresh = mean + static_cast(k) * sqrtVarianceMeanSum; - break; - default: - CV_Error( CV_StsBadArg, "Unknown binarization method" ); - break; - } - thresh.convertTo(thresh, src.depth()); - - thresh.convertTo(test, src.depth()); -// -// cv::imshow("imagex",test); -// cv::waitKey(0); - - } - // Prepare output image - _dst.create(src.size(), src.type()); - Mat dst = _dst.getMat(); - CV_Assert(src.data != dst.data); // no inplace processing - // Apply thresholding: ( pixel > threshold ) ? foreground : background - Mat mask; - switch (type) - { - case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0 - case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval - compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE)); - dst.setTo(0); - dst.setTo(maxValue, mask); - break; - case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src - compare(src, thresh, mask, CMP_GT); - src.copyTo(dst); - thresh.copyTo(dst, mask); - break; - case THRESH_TOZERO: // dst = (src > thresh) ? src : 0 - case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src - compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE)); - dst.setTo(0); - src.copyTo(dst, mask); - break; - default: - CV_Error( CV_StsBadArg, "Unknown threshold type" ); - break; - } -} - -#endif //SWIFTPR_NIBLACKTHRESHOLD_H diff --git a/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp deleted file mode 100755 index 1003e67..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/CNNRecognizer.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by Jack Yu on 21/10/2017. -// - -#include "CNNRecognizer.h" - -namespace pr{ - CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){ - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - - label CNNRecognizer::recognizeCharacter(cv::Mat charImage){ - if(charImage.channels()== 3) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); - cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } -} diff --git a/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp b/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp deleted file mode 100755 index 5da3644..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/FastDeskew.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by Jack Yu on 02/10/2017. -// - - - -#include "FastDeskew.h" - -namespace pr{ - const int ANGLE_MIN = 30 ; - const int ANGLE_MAX = 150 ; - const int PLATE_H = 36; - const int PLATE_W = 136; - - int angle(float x,float y) - { - return atan2(x,y)*180/3.1415; - } - - std::vector avgfilter(std::vector angle_list,int windowsSize) { - std::vector angle_list_filtered(angle_list.size() - windowsSize + 1); - for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) { - float avg = 0.00f; - for (int j = 0; j < windowsSize; j++) { - avg += angle_list[i + j]; - } - avg = avg / windowsSize; - angle_list_filtered[i] = avg; - } - - return angle_list_filtered; - } - - - void drawHist(std::vector seq){ - cv::Mat image(300,seq.size(),CV_8U); - image.setTo(0); - - for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) ); - cv::Size size(skewPlate.cols + extend_padding ,skewPlate.rows); - float interval = abs(sin((angle /180) * 3.14)* skewPlate.rows); - cv::Point2f pts1[4] = {cv::Point2f(0,0),cv::Point2f(0,size_o.height),cv::Point2f(size_o.width,0),cv::Point2f(size_o.width,size_o.height)}; - if(angle>0) { - cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height), - cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size); - } - else { - cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0), - cv::Point2f(size_o.width, size_o.height)}; - cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); - cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC); - } - return dst; - } - cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){ - const int FILTER_WINDOWS_SIZE = 5; - std::vector angle_list(180); - memset(angle_list.data(),0,angle_list.size()*sizeof(int)); - cv::Mat bak; - skewImage.copyTo(bak); - if(skewImage.channels() == 3) - cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY); - if(skewImage.channels() == 1) - { - cv::Mat eigen; - cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5); - for( int j = 0; j < skewImage.rows; j+=blockSize ) - { for( int i = 0; i < skewImage.cols; i+=blockSize ) - { - float x2 = eigen.at(j, i)[4]; - float y2 = eigen.at(j, i)[5]; - int angle_cell = angle(x2,y2); - angle_list[(angle_cell + 180)%180]+=1.0; - } - } - } - std::vector filtered = avgfilter(angle_list,5); - int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2; - if(maxPos>ANGLE_MAX) - maxPos = (-maxPos+90+180)%180; - if(maxPos(maxPos),60.0f); - return deskewed; - } - - - -}//namespace pr diff --git a/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp b/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp deleted file mode 100755 index 2032b15..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/FineMapping.cpp +++ /dev/null @@ -1,170 +0,0 @@ -#include "FineMapping.h" -namespace pr{ - - const int FINEMAPPING_H = 60 ; - const int FINEMAPPING_W = 140; - const int PADDING_UP_DOWN = 30; - void drawRect(cv::Mat image,cv::Rect rect) - { - cv::Point p1(rect.x,rect.y); - cv::Point p2(rect.x+rect.width,rect.y+rect.height); - cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); - } - - - FineMapping::FineMapping(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - - } - - cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding) - { - -// if(FinedVertical.channels()==1) -// cv::cvtColor(FinedVertical,FinedVertical,cv::COLOR_GRAY2BGR); - cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16), - cv::Scalar(0,0,0),false); - - net.setInput(inputBlob,"data"); - cv::Mat prob = net.forward(); - int front = static_cast(prob.at(0,0)*FinedVertical.cols); - int back = static_cast(prob.at(0,1)*FinedVertical.cols); - front -= leftPadding ; - if(front<0) front = 0; - back +=rightPadding; - if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1; - cv::Mat cropped = FinedVertical.colRange(front,back).clone(); - return cropped; - - - } - std::pair FitLineRansac(std::vector pts,int zeroadd = 0 ) - { - std::pair res; - if(pts.size()>2) - { - cv::Vec4f line; - cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01); - float vx = line[0]; - float vy = line[1]; - float x = line[2]; - float y = line[3]; - int lefty = static_cast((-x * vy / vx) + y); - int righty = static_cast(((136- x) * vy / vx) + y); - res.first = lefty+PADDING_UP_DOWN+zeroadd; - res.second = righty+PADDING_UP_DOWN+zeroadd; - return res; - } - res.first = zeroadd; - res.second = zeroadd; - return res; - } - - cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ - cv::Mat PreInputProposal; - cv::Mat proposal; - cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - if(InputProposal.channels() == 3) - cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); - else - PreInputProposal.copyTo(proposal); - // this will improve some sen - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); - float diff = static_cast(upper-lower); - diff/=static_cast(sliceNum-1); - cv::Mat binary_adaptive; - std::vector line_upper; - std::vector line_lower; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - if(contours_nums<41) - { - cv::bitwise_not(InputProposal,InputProposal); - cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,5)); - cv::Mat bak; - cv::resize(InputProposal,bak,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); - cv::erode(bak,bak,kernal); - if(InputProposal.channels() == 3) - cv::cvtColor(bak,proposal,cv::COLOR_BGR2GRAY); - else - proposal = bak; - int contours_nums=0; - for(int i = 0 ; i < sliceNum ; i++) - { - std::vector > contours; - float k =lower + i*diff; - cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); - cv::Mat draw; - binary_adaptive.copyTo(draw); - cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); - for(auto contour: contours) - { - cv::Rect bdbox =cv::boundingRect(contour); - float lwRatio = bdbox.height/static_cast(bdbox.width); - int bdboxAera = bdbox.width*bdbox.height; - if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300) - || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) - { - - cv::Point p1(bdbox.x, bdbox.y); - cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); - line_upper.push_back(p1); - line_lower.push_back(p2); - contours_nums+=1; - } - } - } - } - cv::Mat rgb; - cv::copyMakeBorder(PreInputProposal, rgb, PADDING_UP_DOWN, PADDING_UP_DOWN, 0, 0, cv::BORDER_REPLICATE); - std::pair A; - std::pair B; - A = FitLineRansac(line_upper, -1); - B = FitLineRansac(line_lower, 1); - int leftyB = A.first; - int rightyB = A.second; - int leftyA = B.first; - int rightyA = B.second; - int cols = rgb.cols; - int rows = rgb.rows; - std::vector corners(4); - corners[0] = cv::Point2f(cols - 1, rightyA); - corners[1] = cv::Point2f(0, leftyA); - corners[2] = cv::Point2f(cols - 1, rightyB); - corners[3] = cv::Point2f(0, leftyB); - std::vector corners_trans(4); - corners_trans[0] = cv::Point2f(136, 36); - corners_trans[1] = cv::Point2f(0, 36); - corners_trans[2] = cv::Point2f(136, 0); - corners_trans[3] = cv::Point2f(0, 0); - cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans); - cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); - cv::warpPerspective(rgb, quad, transform, quad.size()); - return quad; - } -} - - diff --git a/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp b/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp deleted file mode 100755 index 561bb68..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/Pipeline.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// -// Created by 庾金科 on 23/10/2017. -// - -#include "Pipeline.h" - - -namespace pr { - - std::string str_code[]={"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"}; - const std::vector CH_PLATE_CODE(str_code, str_code+83); - - - const int HorizontalPadding = 4; - PipelinePR::PipelinePR(std::string detector_filename, - std::string finemapping_prototxt, std::string finemapping_caffemodel, - std::string segmentation_prototxt, std::string segmentation_caffemodel, - std::string charRecognization_proto, std::string charRecognization_caffemodel, - std::string segmentationfree_proto,std::string segmentationfree_caffemodel) { - plateDetection = new PlateDetection(detector_filename); - fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel); - plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel); - generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel); - segmentationFreeRecognizer = new SegmentationFreeRecognizer(segmentationfree_proto,segmentationfree_caffemodel); - - } - - PipelinePR::~PipelinePR() { - - delete plateDetection; - delete fineMapping; - delete plateSegmentation; - delete (CNNRecognizer *)generalRecognizer; - delete segmentationFreeRecognizer; - - - } - - std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage,int method) { - std::vector results; - std::vector plates; - plateDetection->plateDetectionRough(plateImage,plates,36,700); - - for (pr::PlateInfo plateinfo:plates) { - - cv::Mat image_finemapping = plateinfo.getPlateImage(); - image_finemapping = fineMapping->FineMappingVertical(image_finemapping); - image_finemapping = pr::fastdeskew(image_finemapping, 5); - - - - //Segmentation-based - - if(method==SEGMENTATION_BASED_METHOD) - { - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, HorizontalPadding); - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); -// cv::imshow("image_finemapping",image_finemapping); -// cv::waitKey(0); - plateinfo.setPlateImage(image_finemapping); - std::vector rects; - - plateSegmentation->segmentPlatePipline(plateinfo, 1, rects); - plateSegmentation->ExtractRegions(plateinfo, rects); - cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE); - plateinfo.setPlateImage(image_finemapping); - generalRecognizer->SegmentBasedSequenceRecognition(plateinfo); - plateinfo.decodePlateNormal(pr::CH_PLATE_CODE); - - } - //Segmentation-free - else if(method==SEGMENTATION_FREE_METHOD) - { - - image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 4, HorizontalPadding+3); - - cv::resize(image_finemapping, image_finemapping, cv::Size(136+HorizontalPadding, 36)); -// cv::imwrite("./test.png",image_finemapping); -// cv::imshow("image_finemapping",image_finemapping); -// cv::waitKey(0); - plateinfo.setPlateImage(image_finemapping); -// std::vector rects; - - std::pair res = segmentationFreeRecognizer->SegmentationFreeForSinglePlate(plateinfo.getPlateImage(),pr::CH_PLATE_CODE); - plateinfo.confidence = res.second; - plateinfo.setPlateName(res.first); - } - - - - results.push_back(plateinfo); - } - -// for (auto str:results) { -// std::cout << str << std::endl; -// } - return results; - - }//namespace pr - - - -} diff --git a/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp b/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp deleted file mode 100755 index cb3eeef..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/PlateDetection.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "PlateDetection.h" -#include "util.h" -namespace pr{ - PlateDetection::PlateDetection(std::string filename_cascade){ - cascade.load(filename_cascade); - - }; - void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ - cv::Mat processImage; - cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); - std::vector platesRegions; - cv::Size minSize(min_w,min_w/4); - cv::Size maxSize(max_w,max_w/4); - cascade.detectMultiScale( processImage, platesRegions, - 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); - for(auto plate:platesRegions) - { - int zeroadd_w = static_cast(plate.width*0.30); - int zeroadd_h = static_cast(plate.height*2); - int zeroadd_x = static_cast(plate.width*0.15); - int zeroadd_y = static_cast(plate.height*1); - plate.x-=zeroadd_x; - plate.y-=zeroadd_y; - plate.height += zeroadd_h; - plate.width += zeroadd_w; - cv::Mat plateImage = util::cropFromImage(InputImage,plate); - PlateInfo plateInfo(plateImage,plate); - plateInfos.push_back(plateInfo); - - } - } -}//namespace pr diff --git a/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp b/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp deleted file mode 100755 index d35c0de..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/PlateSegmentation.cpp +++ /dev/null @@ -1,404 +0,0 @@ -// -// Created by Jack Yu on 16/10/2017. -// - -#include "PlateSegmentation.h" -#include "niBlackThreshold.h" - - -//#define DEBUG -namespace pr{ - - PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){ - cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false); - net.setInput(inputBlob,"data"); - return net.forward(); - } - - void drawHist(float* seq,int size,const char* name){ - cv::Mat image(300,size,CV_8U); - image.setTo(0); - float* start =seq; - float* end = seq+size; - float l = *std::max_element(start,end); - for(int i = 0;i>1),rect.y + (rect.height>>1)); - int rebuildLeft = (rect.width>>1 )+ left; - int rebuildRight = (rect.width>>1 )+ right; - int rebuildTop = (rect.height>>1 )+ top; - int rebuildBottom = (rect.height>>1 )+ bottom; - return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize); - - } - - - - void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){ - int w = candidatePts[5] - candidatePts[4]; - int cols = plateImage.cols; - int rows = plateImage.rows; - for(int i = 0 ; i < candidatePts.size() ; i++) - { - int left = 0; - int right = 0 ; - - if(i == 0 ){ - left= candidatePts[i]; - right = left+w+padding; - } - else { - left = candidatePts[i] - padding; - right = left + w + padding * 2; - } - - computeSafeMargin(right,cols); - computeSafeMargin(left,cols); - cv::Rect roi(left,0,right - left,rows-1); - cv::Mat roiImage; - plateImage(roi).copyTo(roiImage); - - if (i>=1) - { - - cv::Mat roi_thres; -// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY); - - niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.27,BINARIZATION_NIBLACK); - - std::vector > contours; - cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE); - cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1); - - cv::Rect final_bdbox; - cv::Point final_center; - int final_dist = INT_MAX; - - - for(auto contour:contours) - { - cv::Rect bdbox = cv::boundingRect(contour); - cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1)); - int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x); - if(dist rows>>1) - { final_dist =dist; - final_center = center; - final_bdbox = bdbox; - } - } - - //rebuild box - if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10) - final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size()); - else { - if(i == candidatePts.size()-1) - final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size()); - else - final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size()); - - -// std::cout<0&&i+j+r > &candidatePts){ - int rows = respones.rows; - int cols = respones.cols; - - - - float *data = (float*)respones.data; - float *engNum_prob = data; - float *false_prob = data+cols; - float *ch_prob = data+cols*2; - - avgfilter(engNum_prob,cols,5); - avgfilter(false_prob,cols,5); -// avgfilter(ch_prob,cols,5); - std::vector candidate_pts(7); -//#ifdef DEBUG -// drawHist(engNum_prob,cols,"engNum_prob"); -// drawHist(false_prob,cols,"false_prob"); -// drawHist(ch_prob,cols,"ch_prob"); -// cv::waitKey(0); -//#endif - - - - - int cp_list[7]; - float loss_selected = -10; - - for(int start = 0 ; start < 20 ; start+=2) - for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){ - for(int interval = windowsWidth/2; interval < windowsWidth; interval++) - { - int cp1_ch = start; - int cp2_p0 = cp1_ch+ width; - int cp3_p1 = cp2_p0+ width + interval; - int cp4_p2 = cp3_p1 + width; - int cp5_p3 = cp4_p2 + width+1; - int cp6_p4 = cp5_p3 + width+2; - int cp7_p5= cp6_p4+ width+2; - - int md1 = (cp1_ch+cp2_p0)>>1; - int md2 = (cp2_p0+cp3_p1)>>1; - int md3 = (cp3_p1+cp4_p2)>>1; - int md4 = (cp4_p2+cp5_p3)>>1; - int md5 = (cp5_p3+cp6_p4)>>1; - int md6 = (cp6_p4+cp7_p5)>>1; - - - - - if(cp7_p5>=cols) - continue; -// float loss = ch_prob[cp1_ch]+ -// engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5] -// + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]); - float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]); - - if(loss>loss_selected) - { - loss_selected = loss; - cp_list[0]= cp1_ch; - cp_list[1]= cp2_p0; - cp_list[2]= cp3_p1; - cp_list[3]= cp4_p2; - cp_list[4]= cp5_p3; - cp_list[5]= cp6_p4; - cp_list[6]= cp7_p5; - } - } - } - candidate_pts[0] = cp_list[0]; - candidate_pts[1] = cp_list[1]; - candidate_pts[2] = cp_list[2]; - candidate_pts[3] = cp_list[3]; - candidate_pts[4] = cp_list[4]; - candidate_pts[5] = cp_list[5]; - candidate_pts[6] = cp_list[6]; - - candidatePts.first = loss_selected; - candidatePts.second = candidate_pts; - - }; - - - void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){ - - -// cv::resize(plateImage,plateImage,cv::Size(136,36)); - - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - int padding = plateImage.cols-136 ; -// int padding = 0 ; - int height = plateImage.rows - 1; - int width = plateImage.cols - 1 - padding; - for(int i = 0 ; i < width - windowsWidth +1 ; i +=stride) - { - cv::Rect roi(i,0,windowsWidth,height); - cv::Mat roiImage = plateImageGray(roi); - cv::Mat response = classifyResponse(roiImage); - respones.push_back(response); - } - - - - - respones = respones.t(); -// std::pair> images ; -// -// -// std::cout< &Char_rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); // get src image . - cv::Mat plateImageGray; - cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); - //do binarzation - // - std::pair > sections ; // segment points variables . - - cv::Mat respones; //three response of every sub region from origin image . - segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones); - templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections); - for(int i = 0; i < sections.second.size() ; i++) - { - sections.second[i]*=stride; - - } - -// std::cout< &rects){ - cv::Mat plateImage = plateInfo.getPlateImage(); - for(int i = 0 ; i < rects.size() ; i++){ - cv::Mat charImage; - plateImage(rects[i]).copyTo(charImage); - if(charImage.channels()) - cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); -// cv::imshow("image",charImage); -// cv::waitKey(0); - cv::equalizeHist(charImage,charImage); -// - -// - - - std::pair char_instance; - if(i == 0 ){ - - char_instance.first = CHINESE; - - - } else if(i == 1){ - char_instance.first = LETTER; - } - else{ - char_instance.first = LETTER_NUMS; - } - char_instance.second = charImage; - plateInfo.appendPlateChar(char_instance); - - } - - } - -}//namespace pr diff --git a/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp deleted file mode 100755 index 3bfafef..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/Recognizer.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by Jack Yu on 22/10/2017. -// - -#include "Recognizer.h" - -namespace pr{ - void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){ - for(auto char_instance:plateinfo.plateChars) - { - std::pair res; - if(char_instance.second.rows*char_instance.second.cols>40) { - label code_table = recognizeCharacter(char_instance.second); - res.first = char_instance.first; - code_table.copyTo(res.second); - plateinfo.appendPlateCoding(res); - } else{ - res.first = INVALID; - plateinfo.appendPlateCoding(res); - } - } - } -} diff --git a/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp b/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp deleted file mode 100755 index 2e6706d..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/SegmentationFreeRecognizer.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// -// Created by Jack Yu on 28/11/2017. -// -#include "SegmentationFreeRecognizer.h" - -namespace pr { - SegmentationFreeRecognizer::SegmentationFreeRecognizer(std::string prototxt, std::string caffemodel) { - net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); - } - inline int judgeCharRange(int id) - {return id<31 || id>63; - } - std::pair decodeResults(cv::Mat code_table,std::vector mapping_table,float thres) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - std::vector > seq_decode_res; - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - - float sum_confidence = 0; - int plate_lenghth = 0 ; - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - { - float *fstart = ((float *) (code_table.data) + i * labellength ); - float confidence = *(fstart+seq[i]); - std::pair pair_(seq[i],confidence); - seq_decode_res.push_back(pair_); - } - } - int i = 0; - if (seq_decode_res.size()>1 && judgeCharRange(seq_decode_res[0].first) && judgeCharRange(seq_decode_res[1].first)) - { - i=2; - int c = seq_decode_res[0].second res; - res.second = sum_confidence/plate_lenghth; - res.first = name; - return res; - - } - std::string decodeResults(cv::Mat code_table,std::vector mapping_table) - { - cv::MatSize mtsize = code_table.size; - int sequencelength = mtsize[2]; - int labellength = mtsize[1]; - cv::transpose(code_table.reshape(1,1).reshape(1,labellength),code_table); - std::string name = ""; - std::vector seq(sequencelength); - for(int i = 0 ; i < sequencelength; i++) { - float *fstart = ((float *) (code_table.data) + i * labellength ); - int id = std::max_element(fstart,fstart+labellength) - fstart; - seq[i] =id; - } - for(int i = 0 ; i< sequencelength ; i++) - { - if(seq[i]!=labellength-1 && (i==0 || seq[i]!=seq[i-1])) - name+=mapping_table[seq[i]]; - } - return name; - } - std::pair SegmentationFreeRecognizer::SegmentationFreeForSinglePlate(cv::Mat Image,std::vector mapping_table) { - cv::transpose(Image,Image); - cv::Mat inputBlob = cv::dnn::blobFromImage(Image, 1 / 255.0, cv::Size(40,160)); - net.setInput(inputBlob, "data"); - cv::Mat char_prob_mat = net.forward(); - return decodeResults(char_prob_mat,mapping_table,0.00); - } -} diff --git a/Prj-iOS/lpr/lpr/Source/src/util.h b/Prj-iOS/lpr/lpr/Source/src/util.h deleted file mode 100755 index 3f9f52c..0000000 --- a/Prj-iOS/lpr/lpr/Source/src/util.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// Created by Jack Yu on 04/04/2017. -// - -#include -namespace util{ - template void swap ( T& a, T& b ) - { - T c(a); a=b; b=c; - } - template T min(T& a,T& b ) - { - return a>b?b:a; - } - - cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ - int w = image.cols-1; - int h = image.rows-1; - rect.x = std::max(rect.x,0); - rect.y = std::max(rect.y,0); - rect.height = std::min(rect.height,h-rect.y); - rect.width = std::min(rect.width,w-rect.x); - cv::Mat temp(rect.size(), image.type()); - cv::Mat cropped; - temp = image(rect); - temp.copyTo(cropped); - return cropped; - - } - - cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect) - { - cv::Mat M, rotated, cropped; - float angle = rect.angle; - cv::Size rect_size(rect.size.width,rect.size.height); - if (rect.angle < -45.) { - angle += 90.0; - swap(rect_size.width, rect_size.height); - } - M = cv::getRotationMatrix2D(rect.center, angle, 1.0); - cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC); - cv::getRectSubPix(rotated, rect_size, rect.center, cropped); - return cropped; - } - - cv::Mat calcHist(const cv::Mat &image) - { - cv::Mat hsv; - std::vector hsv_planes; - cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV); - cv::split(hsv,hsv_planes); - cv::Mat hist; - int histSize = 256; - float range[] = {0,255}; - const float* histRange = {range}; - cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true); - return hist; - } - - float computeSimilir(const cv::Mat &A,const cv::Mat &B) - { - cv::Mat histA,histB; - histA = calcHist(A); - histB = calcHist(B); - return cv::compareHist(histA,histB,CV_COMP_CORREL); - } -}//namespace util diff --git a/Prj-iOS/lpr/lpr/Utility.h b/Prj-iOS/lpr/lpr/Utility.h deleted file mode 100755 index f2a870d..0000000 --- a/Prj-iOS/lpr/lpr/Utility.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Utility.h -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// -#ifdef __cplusplus -#import -#endif -#ifdef __OBJC__ -#import -#import -#endif -using namespace cv; - -NS_ASSUME_NONNULL_BEGIN - -@interface Utility : NSObject - -+ (cv::Mat)cvMatFromUIImage:(UIImage *)image; -+ (UIImage *)UIImageFromCVMat:(cv::Mat)image; -+ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image; -+ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image; -+ (UIImage *)imageWithMat:(const cv::Mat&) image andImageOrientation: (UIImageOrientation) orientation; -+ (UIImage *)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation) orientation; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Prj-iOS/lpr/lpr/Utility.mm b/Prj-iOS/lpr/lpr/Utility.mm deleted file mode 100755 index d78785c..0000000 --- a/Prj-iOS/lpr/lpr/Utility.mm +++ /dev/null @@ -1,320 +0,0 @@ -// -// Utility.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import "Utility.h" - -@implementation Utility - -+ (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat -{ - NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()]; - CGColorSpaceRef colorSpace; - - if (cvMat.elemSize() == 1) { - colorSpace = CGColorSpaceCreateDeviceGray(); - } else { - colorSpace = CGColorSpaceCreateDeviceRGB(); - } - - CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); - - // Creating CGImage from cv::Mat - CGImageRef imageRef = CGImageCreate(cvMat.cols, //width - cvMat.rows, //height - 8, //bits per component - 8 * cvMat.elemSize(), //bits per pixel - cvMat.step[0], //bytesPerRow - colorSpace, //colorspace - kCGImageAlphaNone|kCGBitmapByteOrderDefault,// bitmap info - provider, //CGDataProviderRef - NULL, //decode - false, //should interpolate - kCGRenderingIntentDefault //intent - ); - - // Getting UIImage from CGImage - UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp]; - CGImageRelease(imageRef); - CGDataProviderRelease(provider); - CGColorSpaceRelease(colorSpace); - - return finalImage; -} - -//缩放调整图片 -+ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image -{ - static int kMaxResolution = 480; - CGImageRef imgRef = image.CGImage; - CGFloat width = CGImageGetWidth(imgRef); - CGFloat height = CGImageGetHeight(imgRef); - - CGAffineTransform transform = CGAffineTransformIdentity; - CGRect bounds = CGRectMake(0, 0, width, height); - if (width > kMaxResolution || height > kMaxResolution) { - CGFloat ratio = width/height; - if (ratio > 1) { - bounds.size.width = kMaxResolution; - bounds.size.height = bounds.size.width / ratio; - } else { - bounds.size.height = kMaxResolution; - bounds.size.width = bounds.size.height * ratio; - } - } - CGFloat scaleRatio = bounds.size.width / width; - CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); - CGFloat boundHeight; - UIImageOrientation orient = image.imageOrientation; - switch(orient) { - case UIImageOrientationUp: - transform = CGAffineTransformIdentity; - break; - case UIImageOrientationUpMirrored: - transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - break; - case UIImageOrientationDown: - transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); - transform = CGAffineTransformRotate(transform, M_PI); - break; - case UIImageOrientationDownMirrored: - transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); - transform = CGAffineTransformScale(transform, 1.0, -1.0); - break; - case UIImageOrientationLeftMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationLeft: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationRightMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeScale(-1.0, 1.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - case UIImageOrientationRight: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - default: - [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; - } - - UIGraphicsBeginImageContext(bounds.size); - CGContextRef context = UIGraphicsGetCurrentContext(); - if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) { - CGContextScaleCTM(context, -scaleRatio, scaleRatio); - CGContextTranslateCTM(context, -height, 0); - } else { - CGContextScaleCTM(context, scaleRatio, -scaleRatio); - CGContextTranslateCTM(context, 0, -height); - } - CGContextConcatCTM(context, transform); - CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - NSLog(@"resize w%f,H%f",returnImage.size.width,returnImage.size.height); - return returnImage; -} - -+ (UIImage*)imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation)orientation -{ - UIImageOrientation imgOrientation = UIImageOrientationUp; - - switch (orientation) - { - case UIDeviceOrientationLandscapeLeft: - imgOrientation =UIImageOrientationLeftMirrored; break; - - case UIDeviceOrientationLandscapeRight: - imgOrientation = UIImageOrientationDown; break; - - case UIDeviceOrientationPortraitUpsideDown: - imgOrientation = UIImageOrientationRightMirrored; break; - case UIDeviceOrientationFaceUp: - imgOrientation = UIImageOrientationRightMirrored; break; - - default: - case UIDeviceOrientationPortrait: - imgOrientation = UIImageOrientationRight; break; - }; - - return [Utility imageWithMat:image andImageOrientation:imgOrientation]; -} - -+ (UIImage*)imageWithMat:(const cv::Mat&)image andImageOrientation:(UIImageOrientation)orientation; -{ - cv::Mat rgbaView; - - if (image.channels() == 3) - { - cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); - } - else if (image.channels() == 4) - { - cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); - } - else if (image.channels() == 1) - { - cv::cvtColor(image, rgbaView, COLOR_GRAY2RGBA); - } - - NSData *data = [NSData dataWithBytes:rgbaView.data length:rgbaView.elemSize() * rgbaView.total()]; - - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - - CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); - - CGBitmapInfo bmInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big; - - // Creating CGImage from cv::Mat - CGImageRef imageRef = CGImageCreate(rgbaView.cols, //width - rgbaView.rows, //height - 8, //bits per component - 8 * rgbaView.elemSize(), //bits per pixel - rgbaView.step.p[0], //bytesPerRow - colorSpace, //colorspace - bmInfo,// bitmap info - provider, //CGDataProviderRef - NULL, //decode - false, //should interpolate - kCGRenderingIntentDefault //intent - ); - - // Getting UIImage from CGImage - UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1 orientation:orientation]; - CGImageRelease(imageRef); - CGDataProviderRelease(provider); - CGColorSpaceRelease(colorSpace); - - return finalImage; -} - -+ (cv::Mat)cvMatFromUIImage:(UIImage *)image -{ - CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage); - CGFloat cols = image.size.width; - CGFloat rows = image.size.height; - - cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels - - CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data - cols, // Width of bitmap - rows, // Height of bitmap - 8, // Bits per component - cvMat.step[0], // Bytes per row - colorSpace, // Colorspace - kCGImageAlphaNoneSkipLast | - kCGBitmapByteOrderDefault); // Bitmap info flags - - CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage); - CGContextRelease(contextRef); - CGColorSpaceRelease(colorSpace); - cv::Mat cvMat3(rows, cols, CV_8UC3); // 8 bits per component, 4 channels - cv::cvtColor(cvMat, cvMat3,COLOR_RGBA2RGB); - - return cvMat3; -} - -+ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image -{ - static int kMaxResolution = 640; - CGImageRef imgRef = image.CGImage; - CGFloat width = CGImageGetWidth(imgRef); - CGFloat height = CGImageGetHeight(imgRef); - CGAffineTransform transform = CGAffineTransformIdentity; - CGRect bounds = CGRectMake( 0, 0, width, height); - if (width > kMaxResolution || height > kMaxResolution) { - CGFloat ratio = width/height; - if (ratio > 1) { - bounds.size.width = kMaxResolution; - bounds.size.height = bounds.size.width / ratio; - } else { - bounds.size.height = kMaxResolution; - bounds.size.width = bounds.size.height * ratio; - } - } - - CGFloat scaleRatio = bounds.size.width / width; - CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); - CGFloat boundHeight; - UIImageOrientation orient = image.imageOrientation; - switch(orient) { - case UIImageOrientationUp: - transform = CGAffineTransformIdentity; - break; - case UIImageOrientationUpMirrored: - transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - break; - case UIImageOrientationDown: - transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); - transform = CGAffineTransformRotate(transform, M_PI); - break; - case UIImageOrientationDownMirrored: - transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); - transform = CGAffineTransformScale(transform, 1.0, -1.0); - break; - case UIImageOrientationLeftMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); - transform = CGAffineTransformScale(transform, -1.0, 1.0); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationLeft: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); - transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); - break; - case UIImageOrientationRight: - case UIImageOrientationRightMirrored: - boundHeight = bounds.size.height; - bounds.size.height = bounds.size.width; - bounds.size.width = boundHeight; - transform = CGAffineTransformMakeScale(-1.0, 1.0); - transform = CGAffineTransformRotate(transform, M_PI / 2.0); - break; - default: - [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; - } - UIGraphicsBeginImageContext( bounds.size ); - CGContextRef context = UIGraphicsGetCurrentContext(); - if ( orient == UIImageOrientationRight || orient == UIImageOrientationLeft ) { - CGContextScaleCTM(context, -scaleRatio, scaleRatio); - CGContextTranslateCTM(context, -height, 0); - } - else { - CGContextScaleCTM(context, scaleRatio, -scaleRatio); - CGContextTranslateCTM(context, 0, -height); - } - CGContextConcatCTM( context, transform ); - CGContextDrawImage( UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef ); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return returnImage; -} - -@end diff --git a/Prj-iOS/lpr/lpr/main.m b/Prj-iOS/lpr/lpr/main.m deleted file mode 100755 index 5e5e2ce..0000000 --- a/Prj-iOS/lpr/lpr/main.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// main.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/Prj-iOS/lpr/main.m b/Prj-iOS/lpr/main.m deleted file mode 100755 index 5e5e2ce..0000000 --- a/Prj-iOS/lpr/main.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// main.m -// lpr -// -// Created by baotim on 2018/10/26. -// Copyright © 2018 lprSample. All rights reserved. -// - -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/WebAPI.py b/WebAPI.py deleted file mode 100644 index 01509f3..0000000 --- a/WebAPI.py +++ /dev/null @@ -1,55 +0,0 @@ -#coding=utf-8 -from flask import Flask, render_template, request -from werkzeug import secure_filename - -import cv2 -import numpy as np - -#导入opencv - -from hyperlpr import pipline -#导入车牌识别库 - - -app = Flask(__name__) -#设置App name - - -def recognize(filename): - image = cv2.imread(filename) - return HyperLPR_plate_recognition(image) - #return pipline.RecognizePlateJson(image) - -import base64 - -def recognizeBase64(base64_code): - file_bytes = np.asarray(bytearray(base64.b64decode(base64_code)),dtype=np.uint8) - image_data_ndarray = cv2.imdecode(file_bytes,1) - return pipline.RecognizePlateJson(image_data_ndarray) - - -import time - -@app.route('/uploader', methods=['GET', 'POST'])#设置请求路由 -def upload_file(): - if request.method == 'POST': - #如果请求方法是POST - f = request.files['file'] - f.save("./images_rec/"+secure_filename(f.filename)) - #保存请求上来的文件 - t0 = time.time() - res = recognize("./images_rec/"+secure_filename(f.filename)) - print "识别时间",time.time() - t0 - return res - #返回识别结果 - # return 'file uploaded successfully' - return render_template('upload.html') - - - -if __name__ == '__main__': - #入口函数 - - app.run("0.0.0.0",port=8000) - #运行app 指定IP 指定端口 - diff --git a/hyperlpr_pip_pkg/demo.py b/hyperlpr_pip_pkg/demo.py index 3a98249..454b58e 100644 --- a/hyperlpr_pip_pkg/demo.py +++ b/hyperlpr_pip_pkg/demo.py @@ -1,5 +1,5 @@ import cv2 from hyperlpr import * -image = cv2.imread("./test_images/test_db2.jpg") -print(HyperLPR_plate_recognition(image, 16, charSelectionDeskew=False, DB=True)) +image = cv2.imread("./test_images/test.jpg") +print(HyperLPR_plate_recognition(image, 16, charSelectionDeskew=False, DB=False)) diff --git a/hyperlpr_pip_pkg/hyperlpr/table_chs.py b/hyperlpr_pip_pkg/hyperlpr/table_chs.py index 8cef91e..390be3d 100644 --- a/hyperlpr_pip_pkg/hyperlpr/table_chs.py +++ b/hyperlpr_pip_pkg/hyperlpr/table_chs.py @@ -1,3 +1,4 @@ +#coding=utf-8 chars = [ u"京", u"沪", u"津", u"渝", u"冀", u"晋", u"蒙", u"辽", u"吉", u"黑", u"苏", u"浙", u"皖", u"闽", u"赣", u"鲁", u"豫", u"鄂", u"湘", u"粤", u"桂", u"琼", u"川", u"贵", u"云", u"藏", u"陕", u"甘", u"青", u"宁", u"新", u"0", diff --git a/model/cascade.xml b/model/cascade.xml deleted file mode 100644 index 277775b..0000000 --- a/model/cascade.xml +++ /dev/null @@ -1,12117 +0,0 @@ - - - - BOOST - HAAR - 13 - 51 - - GAB - 9.9900001287460327e-001 - 5.0000000000000000e-001 - 9.4999999999999996e-001 - 1 - 100 - - 0 - 1 - ALL - 20 - - - <_> - 8 - -1.9158077239990234e+000 - - <_> - - 0 -1 344 -8.1478752195835114e-002 - - 6.2639594078063965e-001 -8.1564724445343018e-001 - <_> - - 0 -1 701 -1.2957378290593624e-002 - - 7.7114331722259521e-001 -4.9504086375236511e-001 - <_> - - 0 -1 687 -9.2470366507768631e-003 - - 8.1202191114425659e-001 -2.8070560097694397e-001 - <_> - - 0 -1 614 1.2374955229461193e-002 - - -2.5367051362991333e-001 7.3795551061630249e-001 - <_> - - 0 -1 299 -4.7858944162726402e-003 - - 7.1150565147399902e-001 -3.0462509393692017e-001 - <_> - - 0 -1 297 3.8920845836400986e-003 - - -2.8375166654586792e-001 7.3174893856048584e-001 - <_> - - 0 -1 814 -8.8258963078260422e-003 - - 7.5333666801452637e-001 -1.9880458712577820e-001 - <_> - - 0 -1 845 -6.7375516518950462e-003 - - 7.5299704074859619e-001 -2.3570337891578674e-001 - - <_> - 12 - -2.2599112987518311e+000 - - <_> - - 0 -1 577 -1.4449171721935272e-002 - - 5.5890566110610962e-001 -7.6307392120361328e-001 - <_> - - 0 -1 364 -3.8289055228233337e-002 - - 5.1702296733856201e-001 -5.7946079969406128e-001 - <_> - - 0 -1 124 -1.4895259402692318e-002 - - 6.1277741193771362e-001 -3.2827928662300110e-001 - <_> - - 0 -1 579 8.3044255152344704e-003 - - -3.3253005146980286e-001 7.2171914577484131e-001 - <_> - - 0 -1 314 6.0594235546886921e-003 - - -3.2760250568389893e-001 4.9508789181709290e-001 - <_> - - 0 -1 699 -6.8011749535799026e-003 - - 6.6238498687744141e-001 -2.4112002551555634e-001 - <_> - - 0 -1 295 -1.1183910071849823e-002 - - 7.1757602691650391e-001 -2.0989039540290833e-001 - <_> - - 0 -1 767 1.3139605522155762e-002 - - -1.8845251202583313e-001 6.7252415418624878e-001 - <_> - - 0 -1 689 -6.1739999800920486e-003 - - 6.3675141334533691e-001 -2.4877758324146271e-001 - <_> - - 0 -1 230 -9.2421043664216995e-003 - - 6.5140277147293091e-001 -2.1352872252464294e-001 - <_> - - 0 -1 48 -1.0526084899902344e-001 - - -9.0194213390350342e-001 1.8239501118659973e-001 - <_> - - 0 -1 281 1.2764739990234375e-001 - - 1.6771897673606873e-001 -7.7668786048889160e-001 - - <_> - 14 - -2.6526770591735840e+000 - - <_> - - 0 -1 829 -1.3842798769474030e-002 - - 4.1735208034515381e-001 -7.4295550584793091e-001 - <_> - - 0 -1 97 1.4765590429306030e-002 - - -5.1845699548721313e-001 5.0078016519546509e-001 - <_> - - 0 -1 21 3.1671046745032072e-003 - - -3.2739469408988953e-001 5.1253867149353027e-001 - <_> - - 0 -1 812 -9.5202140510082245e-003 - - 7.1236211061477661e-001 -2.3344238102436066e-001 - <_> - - 0 -1 703 -1.2149499729275703e-002 - - 6.4311891794204712e-001 -2.5991156697273254e-001 - <_> - - 0 -1 385 -1.0172967612743378e-001 - - -7.3093742132186890e-001 2.3339104652404785e-001 - <_> - - 0 -1 858 -6.2750680372118950e-003 - - 6.4128917455673218e-001 -2.3738093674182892e-001 - <_> - - 0 -1 518 1.5905253589153290e-002 - - -2.3312157392501831e-001 5.6561905145645142e-001 - <_> - - 0 -1 873 -5.6511810980737209e-003 - - 6.3098442554473877e-001 -2.2128470242023468e-001 - <_> - - 0 -1 229 1.0334834456443787e-002 - - -1.6205528378486633e-001 7.1688497066497803e-001 - <_> - - 0 -1 373 -1.4500595629215240e-002 - - 5.2634650468826294e-001 -2.5339555740356445e-001 - <_> - - 0 -1 720 8.4515195339918137e-003 - - -1.9005575776100159e-001 6.2645190954208374e-001 - <_> - - 0 -1 519 1.6612716019153595e-002 - - -1.9349065423011780e-001 6.6134274005889893e-001 - <_> - - 0 -1 561 1.0179553180932999e-002 - - -1.9179263710975647e-001 6.1396795511245728e-001 - - <_> - 16 - -2.2411971092224121e+000 - - <_> - - 0 -1 344 -9.5315366983413696e-002 - - 2.0634920895099640e-001 -7.6994550228118896e-001 - <_> - - 0 -1 577 -1.1904314160346985e-002 - - 4.6030580997467041e-001 -4.5124572515487671e-001 - <_> - - 0 -1 736 8.0967023968696594e-003 - - -2.9279080033302307e-001 5.1358801126480103e-001 - <_> - - 0 -1 766 -1.4768393710255623e-002 - - 6.9709998369216919e-001 -1.9789521396160126e-001 - <_> - - 0 -1 332 -7.3709283024072647e-003 - - 6.4356821775436401e-001 -1.9384047389030457e-001 - <_> - - 0 -1 331 7.4571794830262661e-003 - - -2.0553122460842133e-001 6.7929607629776001e-001 - <_> - - 0 -1 943 5.8717206120491028e-003 - - -1.9075798988342285e-001 6.3178658485412598e-001 - <_> - - 0 -1 563 -6.3720787875354290e-003 - - 6.1133956909179688e-001 -1.9197526574134827e-001 - <_> - - 0 -1 185 -1.7508253455162048e-002 - - 5.5003905296325684e-001 -2.0409923791885376e-001 - <_> - - 0 -1 539 -4.2271558195352554e-003 - - 5.9483224153518677e-001 -2.0080061256885529e-001 - <_> - - 0 -1 919 5.0116949714720249e-003 - - -1.8873518705368042e-001 5.8758223056793213e-001 - <_> - - 0 -1 298 8.4183514118194580e-002 - - 1.9158974289894104e-001 -7.3058295249938965e-001 - <_> - - 0 -1 776 4.5591969974339008e-003 - - -2.1568548679351807e-001 5.4940956830978394e-001 - <_> - - 0 -1 776 -3.6774221807718277e-003 - - 6.5714693069458008e-001 -2.3908025026321411e-001 - <_> - - 0 -1 844 1.3156082481145859e-002 - - -1.6889381408691406e-001 5.4372692108154297e-001 - <_> - - 0 -1 508 1.2298718094825745e-002 - - -1.7204846441745758e-001 5.3114622831344604e-001 - - <_> - 20 - -2.3278577327728271e+000 - - <_> - - 0 -1 684 -4.2540580034255981e-002 - - 2.4365724623203278e-001 -7.2478657960891724e-001 - <_> - - 0 -1 317 -2.1006479859352112e-002 - - 3.9405155181884766e-001 -5.1031738519668579e-001 - <_> - - 0 -1 13 1.2750471010804176e-002 - - -2.6155433058738708e-001 5.3219014406204224e-001 - <_> - - 0 -1 12 -1.0928934812545776e-001 - - -7.9762983322143555e-001 1.6522131860256195e-001 - <_> - - 0 -1 742 -8.2451943308115005e-003 - - 6.1570894718170166e-001 -1.6545474529266357e-001 - <_> - - 0 -1 651 -6.1263595707714558e-003 - - 6.5689104795455933e-001 -1.6943360865116119e-001 - <_> - - 0 -1 650 5.0333887338638306e-003 - - -1.9622130692005157e-001 5.7385104894638062e-001 - <_> - - 0 -1 34 1.0666935704648495e-002 - - -2.1881586313247681e-001 4.5024806261062622e-001 - <_> - - 0 -1 291 -1.0632696561515331e-002 - - 6.3769024610519409e-001 -1.6428084671497345e-001 - <_> - - 0 -1 237 -1.4020981267094612e-002 - - 6.1583393812179565e-001 -1.6708594560623169e-001 - <_> - - 0 -1 765 1.2589931488037109e-002 - - -2.0485720038414001e-001 4.7809442877769470e-001 - <_> - - 0 -1 753 -1.3003132306039333e-002 - - 6.5572524070739746e-001 -1.6035726666450500e-001 - <_> - - 0 -1 222 -5.7425271719694138e-002 - - -8.2782661914825439e-001 1.4296714961528778e-001 - <_> - - 0 -1 833 -3.7263054400682449e-003 - - 4.9777820706367493e-001 -2.1036401391029358e-001 - <_> - - 0 -1 825 1.2980616651475430e-002 - - -1.7779336869716644e-001 6.1292153596878052e-001 - <_> - - 0 -1 276 -3.4886042121797800e-003 - - 4.1184583306312561e-001 -2.0970273017883301e-001 - <_> - - 0 -1 813 -1.1452829465270042e-002 - - 5.6084501743316650e-001 -1.5244032442569733e-001 - <_> - - 0 -1 321 3.7844986654818058e-003 - - -2.8913837671279907e-001 2.7224406599998474e-001 - <_> - - 0 -1 876 -4.7596222721040249e-003 - - 5.2785235643386841e-001 -1.5034112334251404e-001 - <_> - - 0 -1 896 -1.7377159092575312e-003 - - 5.5644094944000244e-001 -2.0121455192565918e-001 - - <_> - 28 - -2.3750255107879639e+000 - - <_> - - 0 -1 347 -1.0104553401470184e-001 - - 1.3032685220241547e-001 -7.3142945766448975e-001 - <_> - - 0 -1 596 -1.8494745716452599e-002 - - 5.6178814172744751e-001 -3.3690422773361206e-001 - <_> - - 0 -1 629 1.0897371917963028e-002 - - -2.6694682240486145e-001 4.6661883592605591e-001 - <_> - - 0 -1 839 8.4953904151916504e-003 - - -2.0583645999431610e-001 4.6663123369216919e-001 - <_> - - 0 -1 44 6.3092201948165894e-002 - - 1.2652839720249176e-001 -7.4331611394882202e-001 - <_> - - 0 -1 305 -4.8850802704691887e-003 - - 5.1036185026168823e-001 -1.7127794027328491e-001 - <_> - - 0 -1 295 -1.2086534872651100e-002 - - 5.3874844312667847e-001 -1.7047831416130066e-001 - <_> - - 0 -1 163 -4.0194295346736908e-002 - - 6.0334587097167969e-001 -1.8293543159961700e-001 - <_> - - 0 -1 265 -9.7945984452962875e-003 - - 4.8900371789932251e-001 -1.7746040225028992e-001 - <_> - - 0 -1 597 6.7133754491806030e-003 - - -1.8603576719760895e-001 4.9050629138946533e-001 - <_> - - 0 -1 128 1.5135381370782852e-002 - - 1.5555633604526520e-001 -6.6330802440643311e-001 - <_> - - 0 -1 480 7.4470564723014832e-003 - - 1.2465479969978333e-001 -6.3456755876541138e-001 - <_> - - 0 -1 559 -1.7742723226547241e-002 - - 4.8904901742935181e-001 -1.6264849901199341e-001 - <_> - - 0 -1 821 -1.5695080161094666e-002 - - 4.1306030750274658e-001 -1.9036959111690521e-001 - <_> - - 0 -1 819 -4.3798778206110001e-003 - - 4.8768985271453857e-001 -1.5558160841464996e-001 - <_> - - 0 -1 836 -4.8424974083900452e-003 - - 4.6657896041870117e-001 -1.6847038269042969e-001 - <_> - - 0 -1 90 7.4649546295404434e-003 - - -1.7167872190475464e-001 4.3042477965354919e-001 - <_> - - 0 -1 883 5.1524871960282326e-003 - - -1.4530055224895477e-001 4.7056230902671814e-001 - <_> - - 0 -1 890 9.8812151700258255e-003 - - -1.4264582097530365e-001 5.0057184696197510e-001 - <_> - - 0 -1 393 -3.0181273818016052e-002 - - -6.5408444404602051e-001 1.0674032568931580e-001 - <_> - - 0 -1 694 9.2962123453617096e-003 - - -1.4381234347820282e-001 4.9470436573028564e-001 - <_> - - 0 -1 77 -7.6252631843090057e-003 - - -5.2033776044845581e-001 1.3706678152084351e-001 - <_> - - 0 -1 801 -1.1497072875499725e-002 - - 3.4252560138702393e-001 -1.9132094085216522e-001 - <_> - - 0 -1 670 -4.4177635572850704e-003 - - 4.6443006396293640e-001 -1.3389693200588226e-001 - <_> - - 0 -1 647 -2.4282713420689106e-003 - - 4.1310977935791016e-001 -1.3224220275878906e-001 - <_> - - 0 -1 686 1.0079141706228256e-002 - - -1.3342842459678650e-001 5.5696302652359009e-001 - <_> - - 0 -1 570 3.5632357001304626e-002 - - 9.1464981436729431e-002 -7.0863521099090576e-001 - <_> - - 0 -1 840 -1.9085695967078209e-003 - - 2.6823535561561584e-001 -1.9665902853012085e-001 - - <_> - 34 - -2.5052807331085205e+000 - - <_> - - 0 -1 268 1.5469970181584358e-002 - - -6.7369276285171509e-001 3.0393996834754944e-001 - <_> - - 0 -1 700 -2.2830318659543991e-002 - - 4.9829742312431335e-001 -3.5193654894828796e-001 - <_> - - 0 -1 521 1.8841657787561417e-002 - - -2.1037499606609344e-001 4.8866468667984009e-001 - <_> - - 0 -1 262 1.1541565880179405e-002 - - -1.8598809838294983e-001 5.2916365861892700e-001 - <_> - - 0 -1 219 -2.4122973904013634e-002 - - 5.2869701385498047e-001 -1.6163693368434906e-001 - <_> - - 0 -1 6 1.4711560681462288e-002 - - -2.5017279386520386e-001 3.2298168540000916e-001 - <_> - - 0 -1 520 -1.5706669539213181e-002 - - 5.0967657566070557e-001 -1.5732303261756897e-001 - <_> - - 0 -1 948 -4.1158739477396011e-003 - - 4.9462157487869263e-001 -1.2155625224113464e-001 - <_> - - 0 -1 770 -1.0694706812500954e-002 - - 6.1407995223999023e-001 -1.2956763803958893e-001 - <_> - - 0 -1 387 -3.6484465003013611e-002 - - 3.1439977884292603e-001 -2.2812500596046448e-001 - <_> - - 0 -1 345 5.4322574287652969e-002 - - -8.7467961013317108e-002 7.1243762969970703e-001 - <_> - - 0 -1 250 -8.9914854615926743e-003 - - 3.7887179851531982e-001 -1.7758503556251526e-001 - <_> - - 0 -1 52 1.5299601480364799e-002 - - 1.5142892301082611e-001 -5.4104751348495483e-001 - <_> - - 0 -1 792 -6.0345130041241646e-003 - - 3.8750106096267700e-001 -1.7849484086036682e-001 - <_> - - 0 -1 610 -2.0873975008726120e-003 - - -5.5879276990890503e-001 1.3142852485179901e-001 - <_> - - 0 -1 642 -2.0619889255613089e-003 - - -5.1919680833816528e-001 1.0321786254644394e-001 - <_> - - 0 -1 259 3.6544300615787506e-002 - - -1.6965624690055847e-001 3.9208900928497314e-001 - <_> - - 0 -1 382 1.4528267784044147e-003 - - -3.4218248724937439e-001 1.8518145382404327e-001 - <_> - - 0 -1 196 -2.6956547051668167e-002 - - -8.3279663324356079e-001 7.7962644398212433e-002 - <_> - - 0 -1 533 -1.0518556460738182e-002 - - 4.5597425103187561e-001 -1.4934070408344269e-001 - <_> - - 0 -1 740 5.4534617811441422e-003 - - -1.5347433090209961e-001 3.5846599936485291e-001 - <_> - - 0 -1 534 -5.6011183187365532e-003 - - 3.6314359307289124e-001 -1.5886513888835907e-001 - <_> - - 0 -1 927 1.0399374179542065e-002 - - -1.1159978061914444e-001 4.9891829490661621e-001 - <_> - - 0 -1 41 2.6076715439558029e-002 - - -2.1667334437370300e-001 2.5659701228141785e-001 - <_> - - 0 -1 715 -7.3732812888920307e-003 - - 5.8327084779739380e-001 -1.0727929323911667e-001 - <_> - - 0 -1 882 -5.6875580921769142e-003 - - 4.0847277641296387e-001 -1.2561751902103424e-001 - <_> - - 0 -1 891 1.3321589678525925e-002 - - -1.2537255883216858e-001 4.4824957847595215e-001 - <_> - - 0 -1 168 -1.8619614839553833e-001 - - -7.1703630685806274e-001 7.7993653714656830e-002 - <_> - - 0 -1 190 3.3796064555644989e-002 - - -1.3172915577888489e-001 4.1404765844345093e-001 - <_> - - 0 -1 530 4.0178038179874420e-003 - - -1.8571788072586060e-001 2.7401688694953918e-001 - <_> - - 0 -1 555 1.6669608652591705e-002 - - 7.5644508004188538e-002 -6.8869042396545410e-001 - <_> - - 0 -1 406 4.7584358602762222e-002 - - 8.2619942724704742e-002 -5.8818364143371582e-001 - <_> - - 0 -1 537 2.5073587894439697e-003 - - -1.4251622557640076e-001 3.3965954184532166e-001 - <_> - - 0 -1 638 1.4513431116938591e-002 - - -1.4366999268531799e-001 3.2603174448013306e-001 - - <_> - 42 - -2.4546041488647461e+000 - - <_> - - 0 -1 340 -9.4746887683868408e-002 - - 1.1788145639002323e-002 -7.5736826658248901e-001 - <_> - - 0 -1 577 -1.5985764563083649e-002 - - 3.4271994233131409e-001 -3.7916901707649231e-001 - <_> - - 0 -1 630 1.9708804786205292e-002 - - -2.2393602132797241e-001 4.9053853750228882e-001 - <_> - - 0 -1 96 1.6178630292415619e-002 - - -2.0412905514240265e-001 3.4104099869728088e-001 - <_> - - 0 -1 319 1.0606624186038971e-001 - - -1.0737416148185730e-001 6.7443412542343140e-001 - <_> - - 0 -1 83 -6.7316116765141487e-003 - - 3.4080076217651367e-001 -2.2706831991672516e-001 - <_> - - 0 -1 634 4.0689492598176003e-003 - - -1.4782951772212982e-001 4.1778662800788879e-001 - <_> - - 0 -1 686 -1.3378994539380074e-002 - - 6.8167924880981445e-001 -1.0507009923458099e-001 - <_> - - 0 -1 786 -1.8129471689462662e-002 - - 5.0995999574661255e-001 -1.3223616778850555e-001 - <_> - - 0 -1 646 -8.9250747114419937e-003 - - 5.0829160213470459e-001 -1.0886437445878983e-001 - <_> - - 0 -1 711 6.1906888149678707e-003 - - -1.1881013214588165e-001 4.9430772662162781e-001 - <_> - - 0 -1 575 -3.4704633057117462e-002 - - -6.8778192996978760e-001 9.2318676412105560e-002 - <_> - - 0 -1 189 -9.7849890589714050e-003 - - 2.0124578475952148e-001 -2.8525698184967041e-001 - <_> - - 0 -1 479 1.4655515551567078e-003 - - 1.0351686179637909e-001 -6.3454014062881470e-001 - <_> - - 0 -1 513 -3.5405270755290985e-002 - - -7.6147061586380005e-001 6.0781378298997879e-002 - <_> - - 0 -1 23 9.1620441526174545e-003 - - 8.2090407609939575e-002 -5.3804397583007813e-001 - <_> - - 0 -1 838 6.7096878774464130e-003 - - -1.1302943527698517e-001 4.6365195512771606e-001 - <_> - - 0 -1 820 -1.0268911719322205e-002 - - 5.8097857236862183e-001 -1.0859654098749161e-001 - <_> - - 0 -1 441 2.9750142246484756e-002 - - 9.3299955129623413e-002 -5.4268807172775269e-001 - <_> - - 0 -1 726 -5.5990684777498245e-003 - - 4.9949660897254944e-001 -1.0594012588262558e-001 - <_> - - 0 -1 714 4.8061953857541084e-003 - - -1.1477116495370865e-001 4.3569833040237427e-001 - <_> - - 0 -1 637 -4.0460027754306793e-002 - - -7.7711206674575806e-001 7.3132880032062531e-002 - <_> - - 0 -1 53 4.5344540849328041e-003 - - -1.6310065984725952e-001 3.0750447511672974e-001 - <_> - - 0 -1 479 -1.4339694753289223e-003 - - -5.2921229600906372e-001 8.8739573955535889e-002 - <_> - - 0 -1 396 -4.5565411448478699e-002 - - -7.4928385019302368e-001 4.8912040889263153e-002 - <_> - - 0 -1 330 -8.3342632278800011e-003 - - 4.6582534909248352e-001 -1.0161897540092468e-001 - <_> - - 0 -1 834 -1.0381949134171009e-002 - - 3.0994066596031189e-001 -1.3267418742179871e-001 - <_> - - 0 -1 831 1.6984764486551285e-002 - - -9.9871687591075897e-002 4.9527561664581299e-001 - <_> - - 0 -1 376 -1.3278885744512081e-003 - - 3.6983770132064819e-001 -1.1738168448209763e-001 - <_> - - 0 -1 760 -3.1804253812879324e-003 - - -8.9759206771850586e-001 4.3921347707509995e-002 - <_> - - 0 -1 828 -1.9149896688759327e-003 - - 1.9146692752838135e-001 -2.0268803834915161e-001 - <_> - - 0 -1 841 -1.8405792070552707e-003 - - 2.1319428086280823e-001 -1.8382850289344788e-001 - <_> - - 0 -1 259 3.5366363823413849e-002 - - -1.2205254286527634e-001 3.0300119519233704e-001 - <_> - - 0 -1 354 -3.7630870938301086e-003 - - 3.0492320656776428e-001 -1.2932489812374115e-001 - <_> - - 0 -1 732 -1.1243980843573809e-003 - - -4.9750825762748718e-001 8.0560393631458282e-002 - <_> - - 0 -1 749 -2.2356058470904827e-003 - - -6.7946660518646240e-001 5.2887793630361557e-002 - <_> - - 0 -1 536 -2.2717624902725220e-002 - - 4.2686942219734192e-001 -1.0260385274887085e-001 - <_> - - 0 -1 280 9.2372611165046692e-002 - - 7.9670898616313934e-002 -5.2335608005523682e-001 - <_> - - 0 -1 658 -1.0431142151355743e-001 - - -7.4446302652359009e-001 4.6288352459669113e-002 - <_> - - 0 -1 944 7.4872868135571480e-003 - - -1.1977240443229675e-001 3.1791850924491882e-001 - <_> - - 0 -1 228 -2.4358350783586502e-002 - - 1.7944122850894928e-001 -2.0157346129417419e-001 - <_> - - 0 -1 47 4.9624212086200714e-002 - - -1.0701860487461090e-001 3.7854740023612976e-001 - - <_> - 50 - -2.6502745151519775e+000 - - <_> - - 0 -1 431 2.1381884813308716e-002 - - -7.6310330629348755e-001 -7.8235723078250885e-002 - <_> - - 0 -1 623 9.7743803635239601e-003 - - -3.8874423503875732e-001 2.9614463448524475e-001 - <_> - - 0 -1 19 2.9336847364902496e-002 - - -2.1392610669136047e-001 4.4257661700248718e-001 - <_> - - 0 -1 645 1.2054111808538437e-002 - - -1.2168737500905991e-001 6.5890479087829590e-001 - <_> - - 0 -1 392 1.1729352176189423e-002 - - -1.2235984951257706e-001 4.8555457592010498e-001 - <_> - - 0 -1 588 -1.0436945594847202e-003 - - -6.1764669418334961e-001 1.1390741914510727e-001 - <_> - - 0 -1 71 -2.5775061920285225e-002 - - -6.0323065519332886e-001 1.2372459471225739e-001 - <_> - - 0 -1 872 -4.0599796921014786e-003 - - 3.5508742928504944e-001 -1.9819863140583038e-001 - <_> - - 0 -1 643 -1.9134972244501114e-002 - - 4.7154670953750610e-001 -1.4655594527721405e-001 - <_> - - 0 -1 483 6.5218633972108364e-003 - - 1.2207052111625671e-001 -6.0890328884124756e-001 - <_> - - 0 -1 757 -1.4126582071185112e-002 - - 3.3305764198303223e-001 -1.8242211639881134e-001 - <_> - - 0 -1 565 -8.3793615922331810e-003 - - 4.6099957823753357e-001 -1.0809499770402908e-001 - <_> - - 0 -1 455 -1.2584301875904202e-003 - - -5.1634973287582397e-001 1.0520447790622711e-001 - <_> - - 0 -1 203 -5.1234811544418335e-002 - - -7.5237458944320679e-001 5.3416907787322998e-002 - <_> - - 0 -1 584 1.6728173941373825e-002 - - -1.4094479382038116e-001 3.8169395923614502e-001 - <_> - - 0 -1 184 -4.5198453590273857e-003 - - 3.0100575089454651e-001 -1.6970130801200867e-001 - <_> - - 0 -1 686 1.0796479880809784e-002 - - -1.1680302023887634e-001 4.6733006834983826e-001 - <_> - - 0 -1 860 5.4673422127962112e-003 - - -1.3090577721595764e-001 3.4922021627426147e-001 - <_> - - 0 -1 902 6.2447679229080677e-003 - - -1.0570991784334183e-001 4.4209754467010498e-001 - <_> - - 0 -1 892 -8.6985006928443909e-003 - - 4.4582247734069824e-001 -1.1208640784025192e-001 - <_> - - 0 -1 86 5.8012232184410095e-002 - - 5.6753028184175491e-002 -7.8348731994628906e-001 - <_> - - 0 -1 158 -1.9159330055117607e-002 - - 2.1710830926895142e-001 -2.1206925809383392e-001 - <_> - - 0 -1 346 1.4331589639186859e-001 - - -6.5506041049957275e-002 8.3924996852874756e-001 - <_> - - 0 -1 327 -7.4841668829321861e-003 - - 4.4598889350891113e-001 -8.4189794957637787e-002 - <_> - - 0 -1 585 -3.1711272895336151e-002 - - -6.8312811851501465e-001 6.7834347486495972e-002 - <_> - - 0 -1 543 -1.0442961938679218e-003 - - -5.5244719982147217e-001 6.7180506885051727e-002 - <_> - - 0 -1 806 7.9750344157218933e-003 - - -1.4685039222240448e-001 2.7911156415939331e-001 - <_> - - 0 -1 775 9.7797568887472153e-003 - - -1.0445457696914673e-001 3.9583787322044373e-001 - <_> - - 0 -1 552 1.3288496062159538e-002 - - -1.1733970791101456e-001 3.2855752110481262e-001 - <_> - - 0 -1 528 -1.5873706433922052e-003 - - -6.4394426345825195e-001 5.9831541031599045e-002 - <_> - - 0 -1 538 4.1341055184602737e-003 - - -1.4766456186771393e-001 2.6551467180252075e-001 - <_> - - 0 -1 75 4.7469654236920178e-004 - - -2.4220904707908630e-001 1.7033961415290833e-001 - <_> - - 0 -1 780 1.6357531771063805e-002 - - -7.4449680745601654e-002 5.1059716939926147e-001 - <_> - - 0 -1 512 -3.0519803985953331e-002 - - -6.1357855796813965e-001 6.4341634511947632e-002 - <_> - - 0 -1 388 7.8287199139595032e-002 - - -9.1953203082084656e-002 4.5058310031890869e-001 - <_> - - 0 -1 426 2.6628788560628891e-002 - - -1.2955492734909058e-001 2.6968446373939514e-001 - <_> - - 0 -1 187 4.6231731772422791e-002 - - -8.5953183472156525e-002 4.0568628907203674e-001 - <_> - - 0 -1 248 -2.1837819367647171e-003 - - 2.9953801631927490e-001 -1.1820212751626968e-001 - <_> - - 0 -1 551 -7.5804558582603931e-004 - - -3.7147358059883118e-001 9.4888158142566681e-002 - <_> - - 0 -1 557 1.9615942612290382e-002 - - 7.7175915241241455e-002 -4.4386270642280579e-001 - <_> - - 0 -1 758 2.4940725415945053e-003 - - -1.3974383473396301e-001 2.5393635034561157e-001 - <_> - - 0 -1 363 2.0674080587923527e-003 - - -1.6579771041870117e-001 2.1392273902893066e-001 - <_> - - 0 -1 307 -7.3546944186091423e-003 - - 3.6300283670425415e-001 -9.0012907981872559e-002 - <_> - - 0 -1 822 -4.5008827000856400e-003 - - 2.7234289050102234e-001 -1.1618893593549728e-001 - <_> - - 0 -1 863 2.6555648073554039e-003 - - -1.3339768350124359e-001 2.3308847844600677e-001 - <_> - - 0 -1 713 6.8732965737581253e-003 - - 5.5398836731910706e-002 -5.7269740104675293e-001 - <_> - - 0 -1 541 -1.3697329908609390e-002 - - 2.9575833678245544e-001 -1.1314996331930161e-001 - <_> - - 0 -1 499 3.1671333126723766e-003 - - -1.5514299273490906e-001 2.1296086907386780e-001 - <_> - - 0 -1 74 3.9301186800003052e-002 - - 3.7740129977464676e-002 -8.7064558267593384e-001 - <_> - - 0 -1 438 5.0326753407716751e-003 - - 3.8631703704595566e-002 -6.6628092527389526e-001 - - <_> - 37 - -2.2784059047698975e+000 - - <_> - - 0 -1 284 -6.8839386105537415e-002 - - 3.8505528122186661e-002 -7.2149914503097534e-001 - <_> - - 0 -1 622 4.6330597251653671e-003 - - -2.7918994426727295e-001 5.7365530729293823e-001 - <_> - - 0 -1 769 -2.2597890347242355e-002 - - 5.4445463418960571e-001 -1.5445226430892944e-001 - <_> - - 0 -1 651 8.1817107275128365e-003 - - -1.3576838374137878e-001 5.7550191879272461e-001 - <_> - - 0 -1 663 1.9931606948375702e-002 - - -8.6917184293270111e-002 6.9753867387771606e-001 - <_> - - 0 -1 125 -1.6835592687129974e-002 - - 2.9909837245941162e-001 -2.1280159056186676e-001 - <_> - - 0 -1 811 1.3076540082693100e-002 - - -1.0236994922161102e-001 6.2949544191360474e-001 - <_> - - 0 -1 809 6.2367517966777086e-004 - - -2.5327861309051514e-001 2.4867674708366394e-001 - <_> - - 0 -1 609 1.2028571218252182e-003 - - 1.3679966330528259e-001 -6.4433771371841431e-001 - <_> - - 0 -1 272 1.3981487601995468e-002 - - -1.6557806730270386e-001 4.5303794741630554e-001 - <_> - - 0 -1 224 -1.5312875621020794e-002 - - 3.9820623397827148e-001 -1.4350801706314087e-001 - <_> - - 0 -1 502 -1.5315772034227848e-003 - - -4.6908026933670044e-001 1.1392414569854736e-001 - <_> - - 0 -1 586 -1.2515729293227196e-002 - - 4.2320749163627625e-001 -1.1944464594125748e-001 - <_> - - 0 -1 15 9.7349435091018677e-003 - - -2.1135130524635315e-001 2.4544763565063477e-001 - <_> - - 0 -1 578 8.9689850807189941e-002 - - 6.3219323754310608e-002 -6.4908504486083984e-001 - <_> - - 0 -1 683 -1.1183234862983227e-002 - - 4.5843327045440674e-001 -1.1428884416818619e-001 - <_> - - 0 -1 609 -1.3516875915229321e-003 - - -6.4720195531845093e-001 8.4523022174835205e-002 - <_> - - 0 -1 338 -3.5038506612181664e-003 - - 2.3362815380096436e-001 -2.2096297144889832e-001 - <_> - - 0 -1 676 -2.2360668517649174e-003 - - 3.7134209275245667e-001 -1.3087964057922363e-001 - <_> - - 0 -1 672 1.1475373059511185e-002 - - -9.9598348140716553e-002 4.7512599825859070e-001 - <_> - - 0 -1 693 -4.1206870228052139e-003 - - 3.7730529904365540e-001 -1.3486868143081665e-001 - <_> - - 0 -1 386 -1.0615207254886627e-002 - - 5.6163507699966431e-001 -8.6019508540630341e-002 - <_> - - 0 -1 912 1.3644450809806585e-003 - - 9.1222301125526428e-002 -5.7370740175247192e-001 - <_> - - 0 -1 211 -4.0528293699026108e-002 - - -7.1112531423568726e-001 5.6328568607568741e-002 - <_> - - 0 -1 598 -2.6628528721630573e-003 - - -5.7514446973800659e-001 6.4672872424125671e-002 - <_> - - 0 -1 804 1.6719421837478876e-003 - - -1.0937304049730301e-001 4.6537923812866211e-001 - <_> - - 0 -1 391 -7.5402572751045227e-002 - - -7.1920621395111084e-001 6.3679412007331848e-002 - <_> - - 0 -1 752 4.1434019804000854e-003 - - -1.2251268327236176e-001 3.5859704017639160e-001 - <_> - - 0 -1 656 1.0901679052039981e-003 - - 9.0319603681564331e-002 -4.9077373743057251e-001 - <_> - - 0 -1 548 9.7664669156074524e-003 - - -1.1890622228384018e-001 3.7789806723594666e-001 - <_> - - 0 -1 20 1.3128603994846344e-001 - - 9.1950289905071259e-002 -4.8608726263046265e-001 - <_> - - 0 -1 160 5.0870995037257671e-003 - - -3.0447667837142944e-001 1.5393695235252380e-001 - <_> - - 0 -1 695 1.1608509812504053e-003 - - 6.8402722477912903e-002 -5.7240855693817139e-001 - <_> - - 0 -1 463 -8.3964206278324127e-003 - - -5.6654578447341919e-001 6.1527676880359650e-002 - <_> - - 0 -1 853 -9.2788469046354294e-003 - - 5.3486818075180054e-001 -7.9918831586837769e-002 - <_> - - 0 -1 194 4.0858805179595947e-002 - - -6.0392327606678009e-002 5.3097963333129883e-001 - <_> - - 0 -1 875 1.1207645758986473e-002 - - -7.6901644468307495e-002 4.6894967555999756e-001 - - <_> - 43 - -2.3281440734863281e+000 - - <_> - - 0 -1 799 1.6143361106514931e-002 - - -5.9869056940078735e-001 5.8244681358337402e-001 - <_> - - 0 -1 316 -1.4507154002785683e-002 - - 2.7806228399276733e-001 -4.9415421485900879e-001 - <_> - - 0 -1 374 7.1883820928633213e-003 - - -2.1741701662540436e-001 3.9910879731178284e-001 - <_> - - 0 -1 601 -6.3224318437278271e-003 - - 4.9661168456077576e-001 -1.4284123480319977e-001 - <_> - - 0 -1 309 7.3951724916696548e-003 - - -1.3306735455989838e-001 5.4774791002273560e-001 - <_> - - 0 -1 620 5.7926801964640617e-003 - - -1.7347626388072968e-001 3.3524274826049805e-001 - <_> - - 0 -1 628 -8.1796385347843170e-003 - - 4.4341480731964111e-001 -1.1987159401178360e-001 - <_> - - 0 -1 644 3.1394532416015863e-003 - - -7.6400212943553925e-002 5.3360211849212646e-001 - <_> - - 0 -1 803 5.8109681122004986e-003 - - -1.1512878537178040e-001 4.4279125332832336e-001 - <_> - - 0 -1 787 -1.5480478759855032e-003 - - 4.6037110686302185e-001 -1.1494978517293930e-001 - <_> - - 0 -1 139 -3.2716423273086548e-002 - - -6.3845193386077881e-001 1.0197243094444275e-001 - <_> - - 0 -1 547 7.7531556598842144e-003 - - -2.0599687099456787e-001 2.4387344717979431e-001 - <_> - - 0 -1 312 1.0081732273101807e-001 - - -8.3307094871997833e-002 6.0089951753616333e-001 - <_> - - 0 -1 303 1.8065905198454857e-002 - - -8.5330262780189514e-002 5.1092010736465454e-001 - <_> - - 0 -1 227 1.2447070330381393e-002 - - 7.5348034501075745e-002 -7.0691746473312378e-001 - <_> - - 0 -1 26 1.1250283569097519e-002 - - -2.8157770633697510e-001 1.4611217379570007e-001 - <_> - - 0 -1 461 6.3989013433456421e-002 - - 5.5644407868385315e-002 -8.0775284767150879e-001 - <_> - - 0 -1 532 1.2037818320095539e-002 - - -1.6155177354812622e-001 2.6092258095741272e-001 - <_> - - 0 -1 531 -6.7794714123010635e-003 - - 4.1026043891906738e-001 -1.1167341470718384e-001 - <_> - - 0 -1 662 -6.8837543949484825e-003 - - 3.2057675719261169e-001 -1.2521778047084808e-001 - <_> - - 0 -1 568 -5.6298770941793919e-003 - - 3.7114644050598145e-001 -9.6118465065956116e-002 - <_> - - 0 -1 501 -1.4044784940779209e-002 - - 2.3923584818840027e-001 -1.4994344115257263e-001 - <_> - - 0 -1 209 -4.2415991425514221e-002 - - -7.0631259679794312e-001 5.3350944072008133e-002 - <_> - - 0 -1 633 1.1271872790530324e-003 - - -1.0572738200426102e-001 4.0252980589866638e-001 - <_> - - 0 -1 655 1.6750365030020475e-003 - - 6.3855156302452087e-002 -6.4757323265075684e-001 - <_> - - 0 -1 617 8.0223847180604935e-003 - - -1.3372656702995300e-001 3.1646871566772461e-001 - <_> - - 0 -1 302 -7.6437788084149361e-003 - - 3.6533179879188538e-001 -1.0963398963212967e-001 - <_> - - 0 -1 864 1.9589535077102482e-004 - - -1.8541762232780457e-001 1.9759687781333923e-001 - <_> - - 0 -1 235 -1.4239229494705796e-003 - - 2.4031755328178406e-001 -1.5697695314884186e-001 - <_> - - 0 -1 796 8.4227584302425385e-003 - - -8.4527194499969482e-002 4.2389118671417236e-001 - <_> - - 0 -1 797 -6.9234715774655342e-003 - - 3.8057762384414673e-001 -9.1416321694850922e-002 - <_> - - 0 -1 588 -1.8704653484746814e-003 - - -6.4613032341003418e-001 5.7689383625984192e-002 - <_> - - 0 -1 260 -2.7793958783149719e-002 - - 1.8243275582790375e-001 -1.8460384011268616e-001 - <_> - - 0 -1 780 -1.9853528589010239e-002 - - 7.5294703245162964e-001 -5.5559452623128891e-002 - <_> - - 0 -1 231 -9.3498677015304565e-002 - - -4.5725339651107788e-001 8.2762040197849274e-002 - <_> - - 0 -1 233 -5.1207490265369415e-002 - - -6.2534767389297485e-001 4.8502899706363678e-002 - <_> - - 0 -1 407 1.1575517710298300e-003 - - -1.9439546763896942e-001 1.6855290532112122e-001 - <_> - - 0 -1 24 -1.7103100195527077e-002 - - -5.6425410509109497e-001 5.8622561395168304e-002 - <_> - - 0 -1 731 -1.7147272592410445e-003 - - -4.4655910134315491e-001 6.4384043216705322e-002 - <_> - - 0 -1 704 -2.4417929351329803e-002 - - -4.3452578783035278e-001 7.0416867733001709e-002 - <_> - - 0 -1 572 3.7648410070687532e-003 - - -9.9933244287967682e-002 3.3911246061325073e-001 - <_> - - 0 -1 353 -1.0104919783771038e-002 - - 3.4629023075103760e-001 -8.8539779186248779e-002 - <_> - - 0 -1 712 5.0981063395738602e-003 - - 5.5100377649068832e-002 -6.0317450761795044e-001 - - <_> - 50 - -2.3480093479156494e+000 - - <_> - - 0 -1 343 -3.9326027035713196e-002 - - 1.5673981979489326e-002 -7.0409429073333740e-001 - <_> - - 0 -1 465 -8.4042851813137531e-004 - - 2.2963143885135651e-001 -4.5338386297225952e-001 - <_> - - 0 -1 768 1.2317419983446598e-002 - - -2.4286352097988129e-001 3.4696686267852783e-001 - <_> - - 0 -1 799 1.2345131486654282e-002 - - -1.2295535951852798e-001 5.7723248004913330e-001 - <_> - - 0 -1 334 -1.0166198946535587e-002 - - 3.6376756429672241e-001 -1.5697406232357025e-001 - <_> - - 0 -1 2 1.6935718012973666e-003 - - -1.6952106356620789e-001 3.3476638793945313e-001 - <_> - - 0 -1 355 2.4814529344439507e-002 - - -5.2621126174926758e-002 6.6913032531738281e-001 - <_> - - 0 -1 595 -7.9641379415988922e-003 - - 4.5105281472206116e-001 -1.0256277024745941e-001 - <_> - - 0 -1 923 -8.0780440475791693e-004 - - 3.4726995229721069e-001 -1.4011415839195251e-001 - <_> - - 0 -1 886 -4.2634975165128708e-002 - - 3.9254909753799438e-001 -9.5705978572368622e-002 - <_> - - 0 -1 645 -1.1309007182717323e-002 - - 5.3030455112457275e-001 -9.1078959405422211e-002 - <_> - - 0 -1 660 -5.3997440263628960e-003 - - 4.4208008050918579e-001 -8.9016474783420563e-002 - <_> - - 0 -1 922 8.0034844577312469e-003 - - -7.7505834400653839e-002 4.6123340725898743e-001 - <_> - - 0 -1 70 -2.1929096430540085e-002 - - -5.1349323987960815e-001 8.5143901407718658e-002 - <_> - - 0 -1 457 -1.1585029773414135e-002 - - -5.9067147970199585e-001 5.3899347782135010e-002 - <_> - - 0 -1 940 1.5154580585658550e-002 - - 4.7417007386684418e-002 -6.2853425741195679e-001 - <_> - - 0 -1 425 3.6063842475414276e-002 - - 7.1829482913017273e-002 -5.8649080991744995e-001 - <_> - - 0 -1 377 -1.2515364214777946e-003 - - 1.8929110467433929e-001 -1.8165642023086548e-001 - <_> - - 0 -1 443 -1.1191211640834808e-002 - - -6.1874210834503174e-001 6.0382697731256485e-002 - <_> - - 0 -1 892 -1.0454729199409485e-002 - - 3.9079114794731140e-001 -9.7279526293277740e-002 - <_> - - 0 -1 474 -1.3280634302645922e-003 - - -4.3977957963943481e-001 8.6543120443820953e-002 - <_> - - 0 -1 884 -6.5715098753571510e-003 - - 3.8899809122085571e-001 -9.9507912993431091e-002 - <_> - - 0 -1 802 -4.8141209408640862e-003 - - 2.7240043878555298e-001 -1.1941614747047424e-001 - <_> - - 0 -1 611 -4.9042850732803345e-003 - - 3.4554582834243774e-001 -1.0440594702959061e-001 - <_> - - 0 -1 589 4.1131088510155678e-003 - - 6.2906242907047272e-002 -6.3577443361282349e-001 - <_> - - 0 -1 564 -1.4377808198332787e-002 - - 2.6160046458244324e-001 -1.3126534223556519e-001 - <_> - - 0 -1 659 -7.9730991274118423e-003 - - 2.8418624401092529e-001 -1.1802970618009567e-001 - <_> - - 0 -1 632 1.2750998139381409e-002 - - -1.2246144562959671e-001 2.9994803667068481e-001 - <_> - - 0 -1 550 1.2405896559357643e-003 - - 6.8871341645717621e-002 -4.7651088237762451e-001 - <_> - - 0 -1 864 1.9797214190475643e-004 - - -1.8686980009078979e-001 1.7104914784431458e-001 - <_> - - 0 -1 773 -5.9868812561035156e-002 - - -7.4281668663024902e-001 4.0871854871511459e-002 - <_> - - 0 -1 20 1.7117856442928314e-001 - - 3.9691232144832611e-002 -6.0849416255950928e-001 - <_> - - 0 -1 583 -6.0836132615804672e-003 - - 2.6707777380943298e-001 -1.1131492257118225e-001 - <_> - - 0 -1 37 -1.6043212264776230e-002 - - -7.1336209774017334e-001 4.1814558207988739e-002 - <_> - - 0 -1 721 -3.5733331460505724e-003 - - -5.9263443946838379e-001 4.1711769998073578e-002 - <_> - - 0 -1 251 4.8501053825020790e-003 - - -1.7411983013153076e-001 1.6949725151062012e-001 - <_> - - 0 -1 932 -2.4870643392205238e-003 - - 3.5093098878860474e-001 -8.0437563359737396e-002 - <_> - - 0 -1 679 5.4334278684109449e-004 - - 7.2410888969898224e-002 -4.1958642005920410e-001 - <_> - - 0 -1 399 -6.7315630614757538e-002 - - -6.9776558876037598e-001 3.6959640681743622e-002 - <_> - - 0 -1 848 -1.5508693642914295e-002 - - 4.7738686203956604e-001 -6.2411848455667496e-002 - <_> - - 0 -1 240 9.8924851045012474e-003 - - 3.8795292377471924e-002 -7.5121307373046875e-001 - <_> - - 0 -1 626 -1.9304422894492745e-003 - - -6.6471725702285767e-001 3.2116148620843887e-002 - <_> - - 0 -1 877 -1.0774823604151607e-003 - - 1.5463894605636597e-001 -1.6525565087795258e-001 - <_> - - 0 -1 938 2.0380350761115551e-003 - - -8.5884653031826019e-002 3.1941527128219604e-001 - <_> - - 0 -1 296 2.6121754199266434e-003 - - 4.5351639389991760e-002 -6.1592888832092285e-001 - <_> - - 0 -1 360 -2.4895587936043739e-002 - - 1.9662404060363770e-001 -1.3288022577762604e-001 - <_> - - 0 -1 540 9.4352923333644867e-003 - - -7.7825613319873810e-002 3.3150759339332581e-001 - <_> - - 0 -1 475 3.4190870821475983e-002 - - 4.5858692377805710e-002 -6.1435216665267944e-001 - <_> - - 0 -1 685 -5.5097185075283051e-002 - - -4.9892291426658630e-001 4.7548539936542511e-002 - <_> - - 0 -1 287 3.8485769182443619e-003 - - -2.1700088679790497e-001 1.1295168846845627e-001 - - <_> - 61 - -2.4126377105712891e+000 - - <_> - - 0 -1 344 -9.5382995903491974e-002 - - -4.5056518167257309e-002 -7.4383479356765747e-001 - <_> - - 0 -1 696 -1.7865713685750961e-002 - - 2.4200576543807983e-001 -3.4111279249191284e-001 - <_> - - 0 -1 66 -1.7819929867982864e-002 - - -5.8606600761413574e-001 1.0216028243303299e-001 - <_> - - 0 -1 369 1.1929270811378956e-002 - - -1.3082079589366913e-001 4.3198430538177490e-001 - <_> - - 0 -1 677 -2.1402675658464432e-002 - - -7.3706889152526855e-001 7.2057045996189117e-002 - <_> - - 0 -1 880 2.0411442965269089e-003 - - -1.9257834553718567e-001 2.6624691486358643e-001 - <_> - - 0 -1 560 -9.2984475195407867e-003 - - 3.9710593223571777e-001 -1.1857020854949951e-001 - <_> - - 0 -1 870 -4.1869636625051498e-003 - - 4.2139983177185059e-001 -1.1628517508506775e-001 - <_> - - 0 -1 173 1.0577079653739929e-001 - - 6.7847460508346558e-002 -7.5728106498718262e-001 - <_> - - 0 -1 458 2.3821401409804821e-003 - - -1.7424334585666656e-001 2.4778348207473755e-001 - <_> - - 0 -1 365 1.7058081924915314e-002 - - -1.0784839093685150e-001 4.7589403390884399e-001 - <_> - - 0 -1 607 8.4047149866819382e-003 - - -1.6299639642238617e-001 2.5596112012863159e-001 - <_> - - 0 -1 669 6.4883893355727196e-003 - - -1.0720382630825043e-001 3.8739699125289917e-001 - <_> - - 0 -1 719 1.3821164146065712e-002 - - -1.0847893357276917e-001 3.7734055519104004e-001 - <_> - - 0 -1 730 6.3344044610857964e-004 - - 1.0369951277971268e-001 -4.1177383065223694e-001 - <_> - - 0 -1 649 2.5448631495237350e-002 - - -1.0093591362237930e-001 4.0250420570373535e-001 - <_> - - 0 -1 628 -6.6858739592134953e-003 - - 3.2515993714332581e-001 -1.2071736156940460e-001 - <_> - - 0 -1 847 1.5770105645060539e-002 - - -8.7370425462722778e-002 4.2094638943672180e-001 - <_> - - 0 -1 442 -6.1724921688437462e-003 - - 3.5812416672706604e-001 -9.5346152782440186e-002 - <_> - - 0 -1 456 -2.5777951814234257e-003 - - -4.5544171333312988e-001 9.0092077851295471e-002 - <_> - - 0 -1 535 -2.6305086910724640e-002 - - -6.4864850044250488e-001 4.1219502687454224e-002 - <_> - - 0 -1 542 8.0740137491375208e-004 - - 4.7109395265579224e-002 -6.0955244302749634e-001 - <_> - - 0 -1 68 1.4135822653770447e-002 - - -1.9197317957878113e-001 1.6882354021072388e-001 - <_> - - 0 -1 294 -9.4971470534801483e-003 - - 3.6509966850280762e-001 -9.9222034215927124e-002 - <_> - - 0 -1 542 -7.4699660763144493e-004 - - -4.7985881567001343e-001 6.8735912442207336e-002 - <_> - - 0 -1 500 1.6889899969100952e-002 - - -1.3929726183414459e-001 2.3301121592521667e-001 - <_> - - 0 -1 779 2.3306370712816715e-003 - - -8.4623180329799652e-002 3.3656537532806396e-001 - <_> - - 0 -1 778 8.7781455367803574e-003 - - -1.1189370602369308e-001 2.9142591357231140e-001 - <_> - - 0 -1 99 -1.5908680856227875e-002 - - 1.9325265288352966e-001 -1.6028961539268494e-001 - <_> - - 0 -1 744 1.9255496561527252e-002 - - 7.6108239591121674e-002 -3.9211651682853699e-001 - <_> - - 0 -1 914 5.0490582361817360e-003 - - -8.9932329952716827e-002 3.1994494795799255e-001 - <_> - - 0 -1 603 -2.4455685634166002e-003 - - -6.3004231452941895e-001 4.6506922692060471e-002 - <_> - - 0 -1 89 6.4034629613161087e-003 - - -1.2222797423601151e-001 2.2714875638484955e-001 - <_> - - 0 -1 88 -3.1981021165847778e-003 - - 2.8711226582527161e-001 -1.0478579252958298e-001 - <_> - - 0 -1 732 1.7579109407961369e-003 - - 5.1840141415596008e-002 -5.7752221822738647e-001 - <_> - - 0 -1 526 -2.6384353637695313e-002 - - -7.5548434257507324e-001 3.1215203925967216e-002 - <_> - - 0 -1 482 1.3470241427421570e-001 - - 4.5115962624549866e-002 -4.8610612750053406e-001 - <_> - - 0 -1 855 -2.5868147611618042e-002 - - -4.9144035577774048e-001 5.0334099680185318e-002 - <_> - - 0 -1 164 1.0719317197799683e-001 - - -1.4267221093177795e-001 1.7969062924385071e-001 - <_> - - 0 -1 781 -1.5155045315623283e-002 - - 4.2710477113723755e-001 -6.6483244299888611e-002 - <_> - - 0 -1 728 -3.8210965692996979e-002 - - -6.1093688011169434e-001 4.7181066125631332e-002 - <_> - - 0 -1 257 1.7748951911926270e-002 - - -6.6903516650199890e-002 4.1605830192565918e-001 - <_> - - 0 -1 272 -1.3678016141057014e-002 - - 3.2274204492568970e-001 -8.7739549577236176e-002 - <_> - - 0 -1 81 1.4629539102315903e-002 - - -1.1059324443340302e-001 2.4449653923511505e-001 - <_> - - 0 -1 754 6.4607188105583191e-003 - - -8.1396102905273438e-002 3.1605172157287598e-001 - <_> - - 0 -1 574 -8.4974901983514428e-004 - - 1.5621511638164520e-001 -1.6912016272544861e-001 - <_> - - 0 -1 332 -6.4049977809190750e-003 - - 2.2254464030265808e-001 -1.1970910429954529e-001 - <_> - - 0 -1 410 4.8453146591782570e-003 - - -1.0080187022686005e-001 2.5552451610565186e-001 - <_> - - 0 -1 694 1.0576892644166946e-002 - - -7.1883767843246460e-002 3.2368022203445435e-001 - <_> - - 0 -1 652 -2.0271514076739550e-003 - - 2.1205350756645203e-001 -1.4773385226726532e-001 - <_> - - 0 -1 379 1.2130783870816231e-003 - - -2.2663643956184387e-001 1.0520290583372116e-001 - <_> - - 0 -1 419 -7.9384088516235352e-002 - - -4.4897699356079102e-001 4.9417987465858459e-002 - <_> - - 0 -1 31 4.3571349233388901e-003 - - 3.1063990667462349e-002 -6.9149738550186157e-001 - <_> - - 0 -1 750 1.9707549363374710e-003 - - 4.4843826442956924e-002 -4.5625826716423035e-001 - <_> - - 0 -1 788 6.2818843871355057e-003 - - -9.5382869243621826e-002 2.6746883988380432e-001 - <_> - - 0 -1 789 -1.3252656906843185e-002 - - 4.0820258855819702e-001 -6.0815874487161636e-002 - <_> - - 0 -1 60 5.0364276394248009e-003 - - 9.0342856943607330e-002 -2.5253733992576599e-001 - <_> - - 0 -1 492 8.9537240564823151e-003 - - 3.2092411071062088e-002 -7.0339488983154297e-001 - <_> - - 0 -1 546 6.8814970552921295e-002 - - -7.1046918630599976e-002 3.6507198214530945e-001 - <_> - - 0 -1 544 -1.2149440124630928e-002 - - 3.3089646697044373e-001 -6.6771849989891052e-002 - <_> - - 0 -1 50 1.9094728631898761e-003 - - -1.3490848243236542e-001 1.6960476338863373e-001 - - <_> - 72 - -2.3490672111511230e+000 - - <_> - - 0 -1 371 1.4795187860727310e-002 - - -7.0123827457427979e-001 -2.0484872162342072e-002 - <_> - - 0 -1 612 2.6377664878964424e-002 - - -3.5620382428169250e-001 2.4889869987964630e-001 - <_> - - 0 -1 165 -1.1034142225980759e-002 - - 2.0675517618656158e-001 -3.3259147405624390e-001 - <_> - - 0 -1 692 -9.2857871204614639e-003 - - 4.4594430923461914e-001 -1.4160791039466858e-001 - <_> - - 0 -1 313 1.1126287281513214e-001 - - -7.9181507229804993e-002 6.0241782665252686e-001 - <_> - - 0 -1 751 3.0388862360268831e-003 - - -1.9209611415863037e-001 2.5241580605506897e-001 - <_> - - 0 -1 874 -2.0801391452550888e-002 - - 4.0978202223777771e-001 -9.8037041723728180e-002 - <_> - - 0 -1 892 1.0280778631567955e-002 - - -9.6344605088233948e-002 4.6578553318977356e-001 - <_> - - 0 -1 894 -5.4509467445313931e-003 - - 3.7336015701293945e-001 -1.0564301162958145e-001 - <_> - - 0 -1 376 -1.8031136132776737e-003 - - 3.5322296619415283e-001 -1.2390857189893723e-001 - <_> - - 0 -1 763 -4.7199074178934097e-003 - - 4.1106048226356506e-001 -9.3251600861549377e-002 - <_> - - 0 -1 323 -6.1694663017988205e-003 - - 3.3520108461380005e-001 -1.2836365401744843e-001 - <_> - - 0 -1 83 -6.9639906287193298e-003 - - 2.1963912248611450e-001 -1.8814907968044281e-001 - <_> - - 0 -1 683 -1.2535721994936466e-002 - - 3.8960403203964233e-001 -9.2547819018363953e-002 - <_> - - 0 -1 690 -1.6924859955906868e-002 - - 3.6892804503440857e-001 -9.4779089093208313e-002 - <_> - - 0 -1 54 1.6596701461821795e-003 - - -1.9850541651248932e-001 1.8709312379360199e-001 - <_> - - 0 -1 55 2.7687277644872665e-002 - - 7.0031657814979553e-002 -4.7238609194755554e-001 - <_> - - 0 -1 120 -1.1841375380754471e-002 - - 2.6792368292808533e-001 -1.2015427649021149e-001 - <_> - - 0 -1 261 -1.1048562824726105e-002 - - 3.6024233698844910e-001 -1.0290746390819550e-001 - <_> - - 0 -1 7 -6.2395762652158737e-002 - - -5.7112109661102295e-001 6.2251534312963486e-002 - <_> - - 0 -1 115 1.6063985228538513e-001 - - -7.0866517722606659e-002 4.5665851235389709e-001 - <_> - - 0 -1 232 2.1094676852226257e-001 - - 4.6763692051172256e-002 -7.0770156383514404e-001 - <_> - - 0 -1 358 -3.6897901445627213e-003 - - 3.7905600666999817e-001 -8.1804625689983368e-002 - <_> - - 0 -1 434 1.9055651500821114e-002 - - -1.0166674852371216e-001 2.7208462357521057e-001 - <_> - - 0 -1 947 -2.0279071759432554e-003 - - 3.1354761123657227e-001 -8.6894899606704712e-002 - <_> - - 0 -1 571 1.0916183236986399e-003 - - 7.6082363724708557e-002 -3.2986941933631897e-001 - <_> - - 0 -1 405 -5.5616937577724457e-002 - - -5.0169217586517334e-001 4.7203768044710159e-002 - <_> - - 0 -1 600 -2.1859644912183285e-003 - - -4.1108477115631104e-001 5.6136883795261383e-002 - <_> - - 0 -1 422 6.1606548726558685e-002 - - 3.8405187427997589e-002 -6.3146471977233887e-001 - <_> - - 0 -1 562 4.4989854097366333e-002 - - -7.8799270093441010e-002 3.5685274004936218e-001 - <_> - - 0 -1 900 1.4128099195659161e-002 - - -5.1783677190542221e-002 4.5928877592086792e-001 - <_> - - 0 -1 503 -2.2787526249885559e-002 - - -4.2496410012245178e-001 5.9822574257850647e-002 - <_> - - 0 -1 82 1.0302955284714699e-002 - - -1.5051785111427307e-001 1.8300771713256836e-001 - <_> - - 0 -1 733 -1.7985476879402995e-003 - - -5.0104391574859619e-001 5.1810134202241898e-002 - <_> - - 0 -1 783 -1.0919184423983097e-003 - - 1.6831028461456299e-001 -1.5063883364200592e-001 - <_> - - 0 -1 221 6.8745255470275879e-002 - - 2.5853699073195457e-002 -8.8202834129333496e-001 - <_> - - 0 -1 92 8.0964900553226471e-003 - - -1.4373345673084259e-001 1.6309750080108643e-001 - <_> - - 0 -1 669 -9.0615758672356606e-003 - - 4.4120463728904724e-001 -5.8328684419393539e-002 - <_> - - 0 -1 780 1.5157302841544151e-002 - - -6.2339264899492264e-002 3.7585461139678955e-001 - <_> - - 0 -1 852 -9.6248798072338104e-003 - - 3.3618140220642090e-001 -7.2854258120059967e-002 - <_> - - 0 -1 264 -2.6485668495297432e-003 - - -3.6842566728591919e-001 7.0426821708679199e-002 - <_> - - 0 -1 793 -2.5783948600292206e-002 - - -4.3915954232215881e-001 4.4346898794174194e-002 - <_> - - 0 -1 691 3.8045123219490051e-002 - - 2.0367870107293129e-002 -9.1361635923385620e-001 - <_> - - 0 -1 885 6.5762884914875031e-003 - - -7.7705778181552887e-002 2.7798372507095337e-001 - <_> - - 0 -1 527 1.4522124081850052e-002 - - -1.5169607102870941e-001 1.6986666619777679e-001 - <_> - - 0 -1 263 -2.9386302456259727e-002 - - 1.5261377394199371e-001 -1.4140434563159943e-001 - <_> - - 0 -1 252 -1.8363123759627342e-002 - - 5.7111293077468872e-001 -4.9465496093034744e-002 - <_> - - 0 -1 674 -5.1241345703601837e-002 - - -5.5350369215011597e-001 4.6895623207092285e-002 - <_> - - 0 -1 277 2.9151788912713528e-003 - - -9.0461745858192444e-002 2.4859617650508881e-001 - <_> - - 0 -1 749 1.7963855061680079e-003 - - 4.5411933213472366e-002 -5.4377090930938721e-001 - <_> - - 0 -1 198 4.7771027311682701e-003 - - -1.8385021388530731e-001 1.1213029175996780e-001 - <_> - - 0 -1 850 -1.1631837114691734e-003 - - 1.9307336211204529e-001 -1.0863032937049866e-001 - <_> - - 0 -1 739 -6.7155435681343079e-003 - - 3.4966903924942017e-001 -5.8376740664243698e-002 - <_> - - 0 -1 195 -6.6494196653366089e-002 - - 3.4874725341796875e-001 -5.7571310549974442e-002 - <_> - - 0 -1 750 -1.8951734527945518e-003 - - -5.0567263364791870e-001 4.2631916701793671e-002 - <_> - - 0 -1 832 -4.3506296351552010e-003 - - -5.0467538833618164e-001 3.8686964660882950e-002 - <_> - - 0 -1 725 5.5216029286384583e-003 - - -8.3722010254859924e-002 2.5723373889923096e-001 - <_> - - 0 -1 727 1.4174621552228928e-002 - - -5.2497696131467819e-002 4.3525427579879761e-001 - <_> - - 0 -1 25 1.1252675205469131e-002 - - -1.3312049210071564e-001 1.6167336702346802e-001 - <_> - - 0 -1 67 7.9240947961807251e-003 - - -1.1959484219551086e-001 1.6835211217403412e-001 - <_> - - 0 -1 784 1.0558717185631394e-003 - - -1.2297991663217545e-001 1.5906786918640137e-001 - <_> - - 0 -1 615 4.5906797051429749e-002 - - 3.6611214280128479e-002 -5.4427564144134521e-001 - <_> - - 0 -1 702 -9.5631275326013565e-003 - - 2.2376507520675659e-001 -9.2235445976257324e-002 - <_> - - 0 -1 290 -1.7671093344688416e-002 - - -6.2817609310150146e-001 3.3949319273233414e-002 - <_> - - 0 -1 764 -1.7188221681863070e-003 - - 2.0224046707153320e-001 -1.0232327878475189e-001 - <_> - - 0 -1 367 1.5140373259782791e-002 - - -5.6504372507333755e-002 3.4895980358123779e-001 - <_> - - 0 -1 366 -2.8949489817023277e-002 - - 3.1860530376434326e-001 -6.4782403409481049e-002 - <_> - - 0 -1 937 1.1647377163171768e-002 - - -3.6289941519498825e-002 5.4892385005950928e-001 - <_> - - 0 -1 741 -7.8217741101980209e-003 - - 2.0226673781871796e-001 -9.2000789940357208e-002 - <_> - - 0 -1 800 -8.4432046860456467e-003 - - 1.7921546101570129e-001 -1.0415823757648468e-001 - <_> - - 0 -1 854 -1.5566672198474407e-002 - - 3.9981749653816223e-001 -5.3077172487974167e-002 - <_> - - 0 -1 587 -1.2464943341910839e-002 - - 2.2552676498889923e-001 -9.0897649526596069e-002 - - <_> - 77 - -2.2761957645416260e+000 - - <_> - - 0 -1 402 -2.0046032965183258e-002 - - 2.7538803219795227e-001 -6.1105114221572876e-001 - <_> - - 0 -1 430 9.1837458312511444e-003 - - -4.0790805220603943e-001 2.0902955532073975e-001 - <_> - - 0 -1 21 4.2203110642731190e-003 - - -2.1331593394279480e-001 2.8156790137290955e-001 - <_> - - 0 -1 673 -1.4000188559293747e-002 - - 5.4547309875488281e-001 -9.6670299768447876e-002 - <_> - - 0 -1 926 -7.1464567445218563e-003 - - 4.6416798233985901e-001 -9.1218575835227966e-002 - <_> - - 0 -1 389 -1.0070230066776276e-001 - - -6.6349637508392334e-001 7.1100234985351563e-002 - <_> - - 0 -1 95 1.0696215555071831e-002 - - -1.9745405018329620e-001 2.0773608982563019e-001 - <_> - - 0 -1 149 -3.5202980041503906e-002 - - -7.6735103130340576e-001 5.0265740603208542e-002 - <_> - - 0 -1 311 7.4009604752063751e-002 - - -7.4828110635280609e-002 5.6469208002090454e-001 - <_> - - 0 -1 849 3.9156894199550152e-003 - - -1.3954170048236847e-001 2.7583837509155273e-001 - <_> - - 0 -1 335 -5.3920033387839794e-003 - - 3.0497005581855774e-001 -1.1606794595718384e-001 - <_> - - 0 -1 861 3.7412224337458611e-003 - - -7.9430311918258667e-002 4.4621026515960693e-001 - <_> - - 0 -1 868 7.1699996478855610e-003 - - -1.0092698037624359e-001 3.4257224202156067e-001 - <_> - - 0 -1 256 2.1885338425636292e-001 - - 5.8548614382743835e-002 -6.5264624357223511e-001 - <_> - - 0 -1 771 -5.3951903246343136e-003 - - 2.4228222668170929e-001 -1.3535094261169434e-001 - <_> - - 0 -1 695 -1.1738229077309370e-003 - - -4.7875782847404480e-001 6.8366907536983490e-002 - <_> - - 0 -1 666 2.1457400172948837e-002 - - -7.1118980646133423e-002 4.5637446641921997e-001 - <_> - - 0 -1 309 1.2115674093365669e-002 - - -5.8202955871820450e-002 4.6163806319236755e-001 - <_> - - 0 -1 273 -1.8007406964898109e-002 - - 3.2520860433578491e-001 -8.0533631145954132e-002 - <_> - - 0 -1 837 -1.2486811727285385e-002 - - 4.1279473900794983e-001 -5.1714207977056503e-002 - <_> - - 0 -1 820 -6.8574929609894753e-003 - - 2.6760685443878174e-001 -1.0764075815677643e-001 - <_> - - 0 -1 823 1.5099495649337769e-002 - - -7.4429087340831757e-002 4.6331611275672913e-001 - <_> - - 0 -1 418 5.6357895955443382e-003 - - 4.3343700468540192e-002 -6.8444931507110596e-001 - <_> - - 0 -1 496 -3.8149006664752960e-002 - - -5.0210982561111450e-001 4.6030189841985703e-002 - <_> - - 0 -1 488 6.9609917700290680e-002 - - -1.1487975716590881e-001 2.4527166783809662e-001 - <_> - - 0 -1 718 -1.4793819282203913e-003 - - -4.9200877547264099e-001 5.0612244755029678e-002 - <_> - - 0 -1 279 1.5615550801157951e-003 - - -1.4539672434329987e-001 1.8345473706722260e-001 - <_> - - 0 -1 444 -7.9339537769556046e-003 - - -6.9242167472839355e-001 3.2313633710145950e-002 - <_> - - 0 -1 69 3.8695998489856720e-002 - - 3.5442691296339035e-002 -5.8349174261093140e-001 - <_> - - 0 -1 27 3.4779291599988937e-002 - - -1.5399172902107239e-001 1.6672950983047485e-001 - <_> - - 0 -1 411 1.0367618873715401e-002 - - -1.0087994486093521e-001 2.7080667018890381e-001 - <_> - - 0 -1 924 -1.2352936901152134e-003 - - 2.6111871004104614e-001 -8.5407368838787079e-002 - <_> - - 0 -1 641 -3.8098993245512247e-003 - - -6.4659863710403442e-001 3.7423413246870041e-002 - <_> - - 0 -1 137 1.4491343870759010e-002 - - 1.9647786393761635e-002 -9.1479778289794922e-001 - <_> - - 0 -1 394 -8.3385318517684937e-002 - - -7.1166336536407471e-001 2.2575991228222847e-002 - <_> - - 0 -1 780 -1.9848600029945374e-002 - - 5.5954068899154663e-001 -4.1730873286724091e-002 - <_> - - 0 -1 241 -2.0697467029094696e-002 - - 3.3735945820808411e-001 -6.2523342669010162e-002 - <_> - - 0 -1 300 -1.1017382144927979e-002 - - 2.6414296030998230e-001 -1.0402554273605347e-001 - <_> - - 0 -1 78 2.7749380096793175e-003 - - -1.7511576414108276e-001 1.1715058237314224e-001 - <_> - - 0 -1 648 -1.5251778066158295e-002 - - 4.3819862604141235e-001 -4.5249339193105698e-002 - <_> - - 0 -1 108 1.1041477322578430e-002 - - 3.4502815455198288e-002 -6.0594552755355835e-001 - <_> - - 0 -1 112 -1.2095808982849121e-002 - - 2.3661912977695465e-001 -9.1371931135654449e-002 - <_> - - 0 -1 157 2.7025766670703888e-002 - - -8.9995227754116058e-002 2.4357070028781891e-001 - <_> - - 0 -1 253 2.0237984135746956e-002 - - -8.2986801862716675e-002 2.5786581635475159e-001 - <_> - - 0 -1 179 -2.5734171271324158e-002 - - -8.0328714847564697e-001 2.3963116109371185e-002 - <_> - - 0 -1 898 -7.0260283537209034e-003 - - 3.1706759333610535e-001 -6.8345665931701660e-002 - <_> - - 0 -1 785 8.9800115674734116e-003 - - -1.0068616271018982e-001 1.8837621808052063e-001 - <_> - - 0 -1 16 7.1165725588798523e-002 - - 2.9139470309019089e-002 -7.1776688098907471e-001 - <_> - - 0 -1 491 1.2540835887193680e-002 - - 2.8786318376660347e-002 -5.7155269384384155e-001 - <_> - - 0 -1 686 1.4826809987425804e-002 - - -5.3431484848260880e-002 3.7567591667175293e-001 - <_> - - 0 -1 756 -2.0885471254587173e-002 - - -5.5986213684082031e-001 3.5628255456686020e-002 - <_> - - 0 -1 395 -4.4493626803159714e-002 - - -6.0325270891189575e-001 2.8809506446123123e-002 - <_> - - 0 -1 469 -1.1605422478169203e-003 - - 1.3856917619705200e-001 -1.3231372833251953e-001 - <_> - - 0 -1 10 1.0227273404598236e-001 - - -6.3532300293445587e-002 3.1242474913597107e-001 - <_> - - 0 -1 134 -2.9290396720170975e-002 - - 1.9631637632846832e-001 -1.1773347854614258e-001 - <_> - - 0 -1 249 -2.7526013553142548e-002 - - -5.4162657260894775e-001 3.7284608930349350e-002 - <_> - - 0 -1 192 -6.8295732140541077e-002 - - -6.8661803007125854e-001 2.2030472755432129e-002 - <_> - - 0 -1 65 3.7252403795719147e-002 - - 1.4609245583415031e-002 -9.1920310258865356e-001 - <_> - - 0 -1 748 1.5438124537467957e-003 - - 3.9837431162595749e-002 -3.8516902923583984e-001 - <_> - - 0 -1 361 1.8146948888897896e-002 - - -8.1836819648742676e-002 2.2508986294269562e-001 - <_> - - 0 -1 153 -2.9618924017995596e-003 - - 1.7523658275604248e-001 -1.1428176611661911e-001 - <_> - - 0 -1 591 1.8150422722101212e-002 - - 3.3836413174867630e-002 -5.2116078138351440e-001 - <_> - - 0 -1 4 -3.3758711069822311e-002 - - 3.9958250522613525e-001 -4.5763287693262100e-002 - <_> - - 0 -1 79 -1.4841533266007900e-003 - - 1.6825924813747406e-001 -1.0908807814121246e-001 - <_> - - 0 -1 255 1.3028753455728292e-003 - - -1.0276191681623459e-001 1.8539939820766449e-001 - <_> - - 0 -1 920 1.0365190915763378e-002 - - -3.8271062076091766e-002 4.6489492058753967e-001 - <_> - - 0 -1 917 6.0222409665584564e-003 - - -6.5577961504459381e-002 2.7879896759986877e-001 - <_> - - 0 -1 105 1.0119758546352386e-001 - - -2.8418583795428276e-002 5.9041601419448853e-001 - <_> - - 0 -1 9 7.1856275200843811e-002 - - 2.8918648138642311e-002 -7.6654183864593506e-001 - <_> - - 0 -1 921 2.6606030762195587e-002 - - -6.2962368130683899e-002 3.0662769079208374e-001 - <_> - - 0 -1 384 1.5946386381983757e-002 - - -5.4566886276006699e-002 3.1234565377235413e-001 - <_> - - 0 -1 493 -8.2057155668735504e-003 - - 2.1779660880565643e-001 -8.3498664200305939e-002 - <_> - - 0 -1 270 1.2946184724569321e-002 - - 3.5179842263460159e-002 -5.1891100406646729e-001 - <_> - - 0 -1 141 -8.8035371154546738e-003 - - -4.6259808540344238e-001 3.4376677125692368e-002 - <_> - - 0 -1 477 -4.6518794260919094e-004 - - -2.6353842020034790e-001 6.2585823237895966e-002 - <_> - - 0 -1 743 2.4100966751575470e-002 - - 2.1097198128700256e-002 -7.4997889995574951e-001 - <_> - - 0 -1 170 -6.7410841584205627e-003 - - -8.7101519107818604e-001 1.3417764566838741e-002 - - <_> - 88 - -2.2931215763092041e+000 - - <_> - - 0 -1 400 -3.4661620855331421e-002 - - 2.1858149766921997e-001 -6.1113607883453369e-001 - <_> - - 0 -1 130 -8.0369092524051666e-002 - - 2.4827747046947479e-001 -3.6355212330818176e-001 - <_> - - 0 -1 911 2.5022951886057854e-003 - - -2.3158867657184601e-001 2.7031692862510681e-001 - <_> - - 0 -1 946 -6.8189981393516064e-003 - - 4.1294625401496887e-001 -1.2155807018280029e-001 - <_> - - 0 -1 459 3.2973052002489567e-003 - - -1.9231098890304565e-001 2.4345158040523529e-001 - <_> - - 0 -1 484 -6.6328542307019234e-003 - - -5.9019386768341064e-001 6.9055899977684021e-002 - <_> - - 0 -1 318 4.7803454101085663e-002 - - -5.1415871828794479e-002 5.9312266111373901e-001 - <_> - - 0 -1 350 1.3619948178529739e-002 - - -1.3920906186103821e-001 2.6931121945381165e-001 - <_> - - 0 -1 383 -3.7001757882535458e-003 - - -2.6682609319686890e-001 1.4955024421215057e-001 - <_> - - 0 -1 481 1.5951462090015411e-002 - - 3.0041305348277092e-002 -6.7943179607391357e-001 - <_> - - 0 -1 478 2.3432243615388870e-003 - - 4.9472317099571228e-002 -7.3165643215179443e-001 - <_> - - 0 -1 423 -4.0219593793153763e-003 - - -3.9633533358573914e-001 8.4367558360099792e-002 - <_> - - 0 -1 942 1.3890343718230724e-002 - - -1.1078495532274246e-001 3.0365592241287231e-001 - <_> - - 0 -1 777 -1.2505413033068180e-003 - - 2.0580539107322693e-001 -1.3080060482025146e-001 - <_> - - 0 -1 132 1.0764427483081818e-001 - - 7.7789157629013062e-002 -3.3906123042106628e-001 - <_> - - 0 -1 631 4.3811961077153683e-003 - - -1.1201550066471100e-001 2.5211933255195618e-001 - <_> - - 0 -1 686 -1.2142172083258629e-002 - - 3.7872961163520813e-001 -7.7070862054824829e-002 - <_> - - 0 -1 865 -4.4353669509291649e-003 - - 2.1270920336246490e-001 -1.2447933107614517e-001 - <_> - - 0 -1 619 1.4904401032254100e-003 - - 5.6515082716941833e-002 -5.1137989759445190e-001 - <_> - - 0 -1 792 -1.4859709888696671e-002 - - 4.4488805532455444e-001 -6.3839435577392578e-002 - <_> - - 0 -1 515 2.5369194336235523e-003 - - -1.4258751273155212e-001 1.8267530202865601e-001 - <_> - - 0 -1 558 -3.8392089772969484e-003 - - 2.3361504077911377e-001 -1.1508828401565552e-001 - <_> - - 0 -1 717 1.1982237920165062e-003 - - 4.8276327550411224e-002 -4.9198591709136963e-001 - <_> - - 0 -1 378 -1.8510858062654734e-003 - - 1.4056424796581268e-001 -1.6454231739044189e-001 - <_> - - 0 -1 918 -1.2120591476559639e-002 - - 3.7157261371612549e-001 -6.2530189752578735e-002 - <_> - - 0 -1 401 1.1447809636592865e-002 - - 4.1043214499950409e-002 -5.2705597877502441e-001 - <_> - - 0 -1 511 -1.4917021617293358e-002 - - 4.0471947193145752e-001 -5.6559596210718155e-002 - <_> - - 0 -1 472 3.1782940030097961e-002 - - 3.1669221818447113e-002 -7.1189236640930176e-001 - <_> - - 0 -1 204 2.8533251024782658e-003 - - -1.3680589199066162e-001 1.5116590261459351e-001 - <_> - - 0 -1 780 -2.0387873053550720e-002 - - 5.3041487932205200e-001 -3.6561626940965652e-002 - <_> - - 0 -1 225 1.6838125884532928e-002 - - -7.6846949756145477e-002 2.3742672801017761e-001 - <_> - - 0 -1 109 6.1867576092481613e-002 - - 3.4019146114587784e-002 -5.8948117494583130e-001 - <_> - - 0 -1 36 1.9018281251192093e-002 - - -8.8034287095069885e-002 2.8218820691108704e-001 - <_> - - 0 -1 288 9.3320291489362717e-003 - - 3.1055718660354614e-002 -6.0995835065841675e-001 - <_> - - 0 -1 553 -1.7446001293137670e-003 - - -3.1894925236701965e-001 5.7640552520751953e-002 - <_> - - 0 -1 497 -3.7551252171397209e-004 - - -2.9193779826164246e-001 6.5971598029136658e-002 - <_> - - 0 -1 906 -3.6254348233342171e-003 - - -5.2228099107742310e-001 3.2974440604448318e-002 - <_> - - 0 -1 49 3.1154025346040726e-003 - - 3.4256361424922943e-002 -4.9392226338386536e-001 - <_> - - 0 -1 761 -6.5814116969704628e-003 - - -8.5536497831344604e-001 1.7195183783769608e-002 - <_> - - 0 -1 154 3.6019994877278805e-004 - - -1.1677443981170654e-001 1.4939773082733154e-001 - <_> - - 0 -1 42 2.1521452814340591e-002 - - 6.1724990606307983e-002 -3.0582705140113831e-001 - <_> - - 0 -1 304 -3.1574545428156853e-003 - - 2.7675440907478333e-001 -7.9728044569492340e-002 - <_> - - 0 -1 608 6.8585420958697796e-003 - - -4.5498296618461609e-002 4.0476050972938538e-001 - <_> - - 0 -1 201 2.3597612977027893e-002 - - -6.8263813853263855e-002 2.7455106377601624e-001 - <_> - - 0 -1 182 4.1193626821041107e-002 - - 2.7521848678588867e-002 -7.5676482915878296e-001 - <_> - - 0 -1 133 -1.2081373482942581e-002 - - -6.3366323709487915e-001 2.1798284724354744e-002 - <_> - - 0 -1 716 -4.3834196403622627e-003 - - 2.2090788185596466e-001 -8.4348171949386597e-002 - <_> - - 0 -1 619 -9.1258285101503134e-004 - - -3.3701941370964050e-001 5.0720885396003723e-002 - <_> - - 0 -1 675 -8.5975639522075653e-003 - - 1.1742196232080460e-001 -1.5156917273998260e-001 - <_> - - 0 -1 904 -7.4663115665316582e-003 - - 4.0097141265869141e-001 -4.4417705386877060e-002 - <_> - - 0 -1 193 1.2276999652385712e-002 - - -7.3920600116252899e-002 2.5140073895454407e-001 - <_> - - 0 -1 283 -2.6504354551434517e-002 - - 1.3177506625652313e-001 -1.5368436276912689e-001 - <_> - - 0 -1 359 -2.9700677841901779e-002 - - -5.3993326425552368e-001 3.4572057425975800e-002 - <_> - - 0 -1 549 -1.0448409244418144e-002 - - 4.0107232332229614e-001 -4.6194877475500107e-002 - <_> - - 0 -1 274 5.0177536904811859e-003 - - -6.5788470208644867e-002 2.5757649540901184e-001 - <_> - - 0 -1 509 2.3238372057676315e-002 - - 2.3455925285816193e-002 -7.7699542045593262e-001 - <_> - - 0 -1 908 -4.9220167100429535e-002 - - 3.9117750525474548e-001 -4.7477778047323227e-002 - <_> - - 0 -1 936 -9.7046373412013054e-003 - - 3.3891412615776062e-001 -5.0453528761863708e-002 - <_> - - 0 -1 856 1.6913980245590210e-002 - - 4.0467191487550735e-002 -4.3838000297546387e-001 - <_> - - 0 -1 129 -7.5155749917030334e-002 - - -6.0346192121505737e-001 2.7455519884824753e-002 - <_> - - 0 -1 436 1.1202652007341385e-002 - - 2.4983508512377739e-002 -5.8596074581146240e-001 - <_> - - 0 -1 266 -3.9950847625732422e-002 - - -5.3495115041732788e-001 2.9331879690289497e-002 - <_> - - 0 -1 1 7.1143209934234619e-003 - - 3.1055316329002380e-002 -5.1785355806350708e-001 - <_> - - 0 -1 930 -2.7165055274963379e-002 - - 3.4092447161674500e-001 -4.8697970807552338e-002 - <_> - - 0 -1 135 1.5079226344823837e-002 - - -1.2215464562177658e-001 1.3460277020931244e-001 - <_> - - 0 -1 842 5.4478123784065247e-003 - - -9.0178862214088440e-002 1.9025686383247375e-001 - <_> - - 0 -1 381 -7.4798073619604111e-003 - - 2.4245217442512512e-001 -6.8944938480854034e-002 - <_> - - 0 -1 412 2.9248408973217010e-002 - - -8.9382030069828033e-002 1.9680260121822357e-001 - <_> - - 0 -1 613 -5.1055247895419598e-003 - - -4.0537586808204651e-001 4.3955769389867783e-002 - <_> - - 0 -1 417 -5.7464219629764557e-002 - - -7.8487586975097656e-001 1.8840260803699493e-002 - <_> - - 0 -1 682 -1.3099622447043657e-003 - - 1.2043049931526184e-001 -1.2602043151855469e-001 - <_> - - 0 -1 409 -1.0759031400084496e-002 - - 4.6101579070091248e-001 -3.9381790906190872e-002 - <_> - - 0 -1 440 -4.4700078666210175e-002 - - -4.9018231034278870e-001 3.9805438369512558e-002 - <_> - - 0 -1 697 2.6103520765900612e-002 - - 3.3186998218297958e-002 -4.4388863444328308e-001 - <_> - - 0 -1 722 -3.0565187335014343e-003 - - -3.1978246569633484e-001 4.8716515302658081e-002 - <_> - - 0 -1 113 6.5829858183860779e-002 - - 1.8730893731117249e-002 -7.3743104934692383e-001 - <_> - - 0 -1 57 2.5423550978302956e-003 - - 6.1064947396516800e-002 -2.3935855925083160e-001 - <_> - - 0 -1 755 -1.7830528318881989e-002 - - 3.3646425604820251e-001 -4.3943304568529129e-002 - <_> - - 0 -1 223 5.9305625036358833e-003 - - -6.8004354834556580e-002 2.1438401937484741e-001 - <_> - - 0 -1 156 -4.7256931662559509e-002 - - 2.3610806465148926e-001 -7.9913109540939331e-002 - <_> - - 0 -1 146 1.7100328579545021e-002 - - -4.8104494810104370e-002 3.4734794497489929e-001 - <_> - - 0 -1 174 -3.4349232912063599e-002 - - 1.6535361111164093e-001 -8.9516580104827881e-002 - <_> - - 0 -1 370 1.6256177332252264e-003 - - -7.9110637307167053e-002 1.9441387057304382e-001 - <_> - - 0 -1 724 -1.8217334523797035e-002 - - 4.5723637938499451e-001 -3.1193139031529427e-002 - <_> - - 0 -1 749 2.1156244911253452e-003 - - 2.7684733271598816e-002 -5.4580938816070557e-001 - <_> - - 0 -1 169 -2.6387263089418411e-002 - - 2.4881765246391296e-001 -5.7665079832077026e-002 - <_> - - 0 -1 18 4.5990861952304840e-002 - - -1.2064179033041000e-001 1.2435591220855713e-001 - <_> - - 0 -1 523 1.0681749880313873e-001 - - 5.0562918186187744e-002 -3.4403973817825317e-001 - - <_> - 85 - -2.2744355201721191e+000 - - <_> - - 0 -1 252 1.6897995024919510e-002 - - -6.9196498394012451e-001 -5.5616941303014755e-002 - <_> - - 0 -1 862 1.1701794341206551e-002 - - -2.7923116087913513e-001 3.9880016446113586e-001 - <_> - - 0 -1 618 2.7141885831952095e-002 - - 1.4071331918239594e-001 -4.8508083820343018e-001 - <_> - - 0 -1 949 -1.4755494194105268e-003 - - 3.7315878272056580e-001 -1.4565770328044891e-001 - <_> - - 0 -1 464 1.5615923330187798e-003 - - -9.6974156796932220e-002 3.6338686943054199e-001 - <_> - - 0 -1 292 -3.5046115517616272e-002 - - 6.5541946887969971e-001 -6.3480094075202942e-002 - <_> - - 0 -1 471 -2.7439640834927559e-003 - - -4.4147095084190369e-001 8.3881981670856476e-002 - <_> - - 0 -1 128 1.3140615075826645e-002 - - 6.2391642481088638e-002 -5.2230197191238403e-001 - <_> - - 0 -1 624 -2.3408148437738419e-002 - - -5.7339686155319214e-001 6.4651705324649811e-002 - <_> - - 0 -1 878 1.9269579788669944e-003 - - -1.3906709849834442e-001 2.6013106107711792e-001 - <_> - - 0 -1 510 9.1457850066944957e-004 - - 8.7518453598022461e-002 -4.9381819367408752e-001 - <_> - - 0 -1 76 -9.2652775347232819e-003 - - -4.3321701884269714e-001 5.2230410277843475e-002 - <_> - - 0 -1 437 -2.0753231365233660e-003 - - -5.0082236528396606e-001 6.1019111424684525e-002 - <_> - - 0 -1 791 1.9411731045693159e-003 - - -7.8411623835563660e-002 3.5945037007331848e-001 - <_> - - 0 -1 774 -1.2042262824252248e-003 - - 2.4952164292335510e-001 -1.1495979875326157e-001 - <_> - - 0 -1 428 4.5398853719234467e-002 - - 4.9534358084201813e-002 -5.7811236381530762e-001 - <_> - - 0 -1 243 1.6548346728086472e-002 - - 4.0716260671615601e-002 -5.4614287614822388e-001 - <_> - - 0 -1 747 -2.6393149048089981e-002 - - -6.4222121238708496e-001 3.5461250692605972e-002 - <_> - - 0 -1 315 -7.9056806862354279e-003 - - 2.7603831887245178e-001 -9.6884578466415405e-002 - <_> - - 0 -1 294 -8.6138453334569931e-003 - - 3.4293037652969360e-001 -9.2569984495639801e-002 - <_> - - 0 -1 220 1.2120688334107399e-002 - - 4.1071321815252304e-002 -5.9789633750915527e-001 - <_> - - 0 -1 213 -2.3794029839336872e-003 - - 1.7102584242820740e-001 -1.3294184207916260e-001 - <_> - - 0 -1 667 1.5191107988357544e-002 - - -5.9681247919797897e-002 3.9729467034339905e-001 - <_> - - 0 -1 497 -9.4484502915292978e-004 - - -4.9290084838867188e-001 4.8412941396236420e-002 - <_> - - 0 -1 110 -7.5291972607374191e-003 - - -4.4807717204093933e-001 4.6233657747507095e-002 - <_> - - 0 -1 226 2.0139738917350769e-002 - - -8.7880477309226990e-002 2.5611591339111328e-001 - <_> - - 0 -1 934 -6.2278993427753448e-003 - - 3.8167408108711243e-001 -5.7190407067537308e-002 - <_> - - 0 -1 485 -1.4294605702161789e-002 - - 2.2094787657260895e-001 -1.0475759208202362e-001 - <_> - - 0 -1 707 -5.4574096575379372e-003 - - 2.4806049466133118e-001 -8.7989374995231628e-002 - <_> - - 0 -1 928 1.1277779936790466e-002 - - -6.8190395832061768e-002 3.0197840929031372e-001 - <_> - - 0 -1 193 1.2542145326733589e-002 - - -7.4142687022686005e-002 2.5129452347755432e-001 - <_> - - 0 -1 161 -1.0840824991464615e-001 - - -6.1061251163482666e-001 3.2729376107454300e-002 - <_> - - 0 -1 403 1.5083145117387176e-003 - - -7.0102758705615997e-002 3.0823647975921631e-001 - <_> - - 0 -1 745 -6.4324252307415009e-002 - - -7.6457482576370239e-001 2.8049679473042488e-002 - <_> - - 0 -1 635 -1.0857153683900833e-002 - - 3.0212178826332092e-001 -6.9806925952434540e-002 - <_> - - 0 -1 93 5.6619346141815186e-002 - - -1.2564770877361298e-001 1.7084783315658569e-001 - <_> - - 0 -1 576 -2.4015609174966812e-002 - - -4.6767771244049072e-001 4.4055789709091187e-002 - <_> - - 0 -1 554 1.6571693122386932e-002 - - -1.5079098939895630e-001 1.3097193837165833e-001 - <_> - - 0 -1 452 -1.3210725039243698e-002 - - 4.0740290284156799e-001 -4.6674277633428574e-002 - <_> - - 0 -1 121 -9.6322391182184219e-003 - - -3.4347525238990784e-001 5.1074773073196411e-002 - <_> - - 0 -1 155 1.2867329642176628e-002 - - -9.5492877066135406e-002 1.9662295281887054e-001 - <_> - - 0 -1 915 2.5710439309477806e-002 - - 2.4007089436054230e-002 -7.1648633480072021e-001 - <_> - - 0 -1 116 -7.6815150678157806e-003 - - -6.2318617105484009e-001 2.3343794047832489e-002 - <_> - - 0 -1 709 -3.0568044167011976e-003 - - 1.6469573974609375e-001 -1.0857288539409637e-001 - <_> - - 0 -1 35 7.0850662887096405e-002 - - 2.7203138917684555e-002 -6.5618228912353516e-001 - <_> - - 0 -1 639 -1.9809347577393055e-003 - - -6.1460441350936890e-001 2.4520153179764748e-002 - <_> - - 0 -1 236 7.0611112751066685e-003 - - -7.4253976345062256e-002 2.5537955760955811e-001 - <_> - - 0 -1 186 3.0076294206082821e-003 - - -9.6944920718669891e-002 2.4430949985980988e-001 - <_> - - 0 -1 172 -3.0732229351997375e-002 - - -6.0257941484451294e-001 2.9267333447933197e-002 - <_> - - 0 -1 450 1.6364458948373795e-002 - - 2.3035932332277298e-002 -6.2698912620544434e-001 - <_> - - 0 -1 114 1.4988467097282410e-001 - - -4.8197094351053238e-002 3.9452686905860901e-001 - <_> - - 0 -1 197 -8.2194441929459572e-003 - - 1.0664895921945572e-001 -1.8545584380626678e-001 - <_> - - 0 -1 84 -8.2502886652946472e-003 - - 1.2596343457698822e-001 -1.4223846793174744e-001 - <_> - - 0 -1 73 1.3518449850380421e-002 - - 7.5415953993797302e-002 -2.6633748412132263e-001 - <_> - - 0 -1 446 -1.4376571401953697e-002 - - 3.4983170032501221e-001 -4.7824632376432419e-002 - <_> - - 0 -1 602 1.2734688818454742e-002 - - -5.0567589700222015e-002 3.5038754343986511e-001 - <_> - - 0 -1 857 -1.3710462953895330e-003 - - 1.8082229793071747e-001 -9.6974305808544159e-002 - <_> - - 0 -1 306 -2.6267360895872116e-002 - - 4.1006618738174438e-001 -4.0112689137458801e-002 - <_> - - 0 -1 59 2.1102664992213249e-002 - - 2.7978396043181419e-002 -5.8651155233383179e-001 - <_> - - 0 -1 909 -1.4474790543317795e-002 - - 3.6871808767318726e-001 -4.5918777585029602e-002 - <_> - - 0 -1 817 7.2440858930349350e-003 - - -7.5330309569835663e-002 2.0376025140285492e-001 - <_> - - 0 -1 815 1.0546022094786167e-002 - - -6.1415266245603561e-002 3.0458399653434753e-001 - <_> - - 0 -1 101 5.5407796055078506e-002 - - 2.5191115215420723e-002 -6.5944659709930420e-001 - <_> - - 0 -1 91 9.4949062913656235e-003 - - -1.5944498777389526e-001 1.0568149387836456e-001 - <_> - - 0 -1 925 -6.2020965851843357e-003 - - 2.7509790658950806e-001 -6.5234497189521790e-002 - <_> - - 0 -1 507 1.3317565619945526e-001 - - 2.2181767970323563e-002 -7.3483341932296753e-001 - <_> - - 0 -1 448 2.5796357076615095e-003 - - 1.9557425752282143e-002 -6.5313297510147095e-001 - <_> - - 0 -1 390 3.4660965204238892e-002 - - -5.1162503659725189e-002 3.2590973377227783e-001 - <_> - - 0 -1 30 9.5607116818428040e-002 - - -2.4739582091569901e-002 5.7837259769439697e-001 - <_> - - 0 -1 148 1.6605708748102188e-002 - - 5.7055354118347168e-002 -3.5466542840003967e-001 - <_> - - 0 -1 123 1.1670887470245361e-002 - - -8.0407410860061646e-002 1.9471745193004608e-001 - <_> - - 0 -1 208 1.0822312906384468e-002 - - 2.6732437312602997e-002 -5.8917897939682007e-001 - <_> - - 0 -1 708 2.7245271950960159e-002 - - 3.0616169795393944e-002 -4.8082390427589417e-001 - <_> - - 0 -1 217 -1.3694438338279724e-001 - - -4.8311397433280945e-001 3.3773597329854965e-002 - <_> - - 0 -1 899 -1.4758360339328647e-003 - - 2.5075155496597290e-001 -6.7788824439048767e-002 - <_> - - 0 -1 275 2.7167074382305145e-002 - - 2.5224637240171432e-002 -6.3691717386245728e-001 - <_> - - 0 -1 657 1.8945746123790741e-002 - - -5.7760879397392273e-002 2.6149269938468933e-001 - <_> - - 0 -1 102 1.2368987500667572e-001 - - -3.2363165169954300e-002 4.5130741596221924e-001 - <_> - - 0 -1 43 3.9710897952318192e-002 - - -3.0226422473788261e-002 4.6590203046798706e-001 - <_> - - 0 -1 136 -3.6290191113948822e-002 - - 3.6348423361778259e-001 -4.1874047368764877e-002 - <_> - - 0 -1 846 2.5501720607280731e-002 - - 3.5494077950716019e-002 -4.5727846026420593e-001 - <_> - - 0 -1 772 5.3392872214317322e-003 - - -6.0394711792469025e-002 2.5488924980163574e-001 - <_> - - 0 -1 950 7.9108221689239144e-004 - - 5.4109033197164536e-002 -2.7065926790237427e-001 - <_> - - 0 -1 929 -1.6701441258192062e-002 - - 4.8040628433227539e-001 -3.0404916033148766e-002 - <_> - - 0 -1 566 7.1975095197558403e-003 - - -7.0362947881221771e-002 1.9959311187267303e-001 - - <_> - 100 - -2.2887177467346191e+000 - - <_> - - 0 -1 286 -1.6051483154296875e-001 - - 9.3009121716022491e-002 -6.5350115299224854e-001 - <_> - - 0 -1 623 1.2457310222089291e-002 - - -3.1717920303344727e-001 2.3368784785270691e-001 - <_> - - 0 -1 29 2.3608796764165163e-003 - - -2.9248744249343872e-001 1.8054312467575073e-001 - <_> - - 0 -1 339 1.4379444532096386e-002 - - -5.7956293225288391e-002 7.6479458808898926e-001 - <_> - - 0 -1 871 6.8126469850540161e-003 - - -1.4748461544513702e-001 2.3818431794643402e-001 - <_> - - 0 -1 247 4.3051101267337799e-002 - - 8.7559670209884644e-002 -7.2269368171691895e-001 - <_> - - 0 -1 867 -5.0154160708189011e-002 - - 3.1918609142303467e-001 -1.3582608103752136e-001 - <_> - - 0 -1 212 -3.1796738039702177e-003 - - 2.7597072720527649e-001 -9.0522617101669312e-002 - <_> - - 0 -1 677 -1.2342665344476700e-002 - - -3.9158377051353455e-001 5.3565893322229385e-002 - <_> - - 0 -1 897 1.1861260049045086e-002 - - -6.1517983675003052e-002 3.6472269892692566e-001 - <_> - - 0 -1 252 -2.1985735744237900e-002 - - 6.5143728256225586e-001 -4.0598560124635696e-002 - <_> - - 0 -1 63 -1.2279948219656944e-002 - - 2.1631649136543274e-001 -1.2024078518152237e-001 - <_> - - 0 -1 640 8.2167033106088638e-003 - - -9.4497188925743103e-002 2.4828021228313446e-001 - <_> - - 0 -1 357 1.0111754760146141e-002 - - -3.3160492777824402e-002 6.2502938508987427e-001 - <_> - - 0 -1 924 -7.7025225618854165e-004 - - 2.3218974471092224e-001 -1.0222402960062027e-001 - <_> - - 0 -1 467 -1.4080689288675785e-003 - - 1.3447046279907227e-001 -1.6994857788085938e-001 - <_> - - 0 -1 140 1.0420590639114380e-002 - - 2.9845444485545158e-002 -7.5183397531509399e-001 - <_> - - 0 -1 356 1.3691674917936325e-002 - - 2.8088988736271858e-002 -5.7496672868728638e-001 - <_> - - 0 -1 155 1.7491653561592102e-002 - - -9.8534837365150452e-002 2.2351761162281036e-001 - <_> - - 0 -1 762 7.4883676134049892e-003 - - -9.7045794129371643e-002 2.0625646412372589e-001 - <_> - - 0 -1 104 -8.4146633744239807e-003 - - -4.8472663760185242e-001 4.1302844882011414e-002 - <_> - - 0 -1 342 3.0617808923125267e-002 - - -3.7334404885768890e-002 6.1179280281066895e-001 - <_> - - 0 -1 326 1.6346010379493237e-003 - - -1.8315000832080841e-001 1.0951925814151764e-001 - <_> - - 0 -1 901 -1.1816060170531273e-002 - - 3.0801647901535034e-001 -6.1308264732360840e-002 - <_> - - 0 -1 351 -1.0661455802619457e-002 - - 3.3249661326408386e-001 -5.0642840564250946e-002 - <_> - - 0 -1 84 -9.6190627664327621e-003 - - 1.3975782692432404e-001 -1.3763442635536194e-001 - <_> - - 0 -1 289 -1.2881286442279816e-002 - - 3.6742180585861206e-001 -5.0860747694969177e-002 - <_> - - 0 -1 824 1.3589482754468918e-002 - - -5.1274802535772324e-002 3.1885984539985657e-001 - <_> - - 0 -1 234 4.6852193772792816e-003 - - -7.2946086525917053e-002 2.5181108713150024e-001 - <_> - - 0 -1 432 1.9752513617277145e-002 - - -1.4621073007583618e-001 1.2726816534996033e-001 - <_> - - 0 -1 454 3.6341309547424316e-002 - - 2.4868825450539589e-002 -6.9947302341461182e-001 - <_> - - 0 -1 636 -1.1957485694438219e-003 - - 1.5675933659076691e-001 -1.1705233156681061e-001 - <_> - - 0 -1 40 -9.9432021379470825e-003 - - -3.4487789869308472e-001 4.9324721097946167e-002 - <_> - - 0 -1 269 6.0083293356001377e-003 - - 3.3568043261766434e-002 -4.3638321757316589e-001 - <_> - - 0 -1 14 9.6278168261051178e-002 - - 4.0310282260179520e-002 -3.9266702532768250e-001 - <_> - - 0 -1 154 4.3072472908534110e-004 - - -1.0427023470401764e-001 1.4397470653057098e-001 - <_> - - 0 -1 504 -4.7720400616526604e-003 - - -4.4805496931076050e-001 3.4855298697948456e-002 - <_> - - 0 -1 87 -1.0016669984906912e-003 - - 1.3649077713489532e-001 -1.2140301614999771e-001 - <_> - - 0 -1 254 2.3308012634515762e-002 - - 3.6392133682966232e-002 -4.5537215471267700e-001 - <_> - - 0 -1 802 -4.8546120524406433e-003 - - 1.5793082118034363e-001 -9.6185155212879181e-002 - <_> - - 0 -1 795 -6.5906550735235214e-003 - - 3.2166856527328491e-001 -4.9290131777524948e-002 - <_> - - 0 -1 126 -2.7226015925407410e-002 - - 2.8352561593055725e-001 -5.1984444260597229e-002 - <_> - - 0 -1 938 5.5622356012463570e-003 - - -3.3917389810085297e-002 4.3498530983924866e-001 - <_> - - 0 -1 534 -5.8775981888175011e-003 - - 1.7455618083477020e-001 -8.4790699183940887e-002 - <_> - - 0 -1 627 -1.1768937110900879e-003 - - -4.4403216242790222e-001 3.4572694450616837e-002 - <_> - - 0 -1 625 1.4337021857500076e-003 - - -8.8692568242549896e-002 1.6940893232822418e-001 - <_> - - 0 -1 51 1.3953970745205879e-002 - - 3.9221145212650299e-002 -3.8308286666870117e-001 - <_> - - 0 -1 106 5.3161740303039551e-002 - - -3.9227265864610672e-002 4.0637263655662537e-001 - <_> - - 0 -1 916 1.1670306324958801e-002 - - -6.2661647796630859e-002 2.2897149622440338e-001 - <_> - - 0 -1 524 -8.5611653048545122e-004 - - -3.1393322348594666e-001 4.4154506176710129e-002 - <_> - - 0 -1 362 3.1659279484301805e-003 - - -1.0416875034570694e-001 1.4386938512325287e-001 - <_> - - 0 -1 94 9.2105150222778320e-002 - - 2.5259945541620255e-002 -6.3980853557586670e-001 - <_> - - 0 -1 681 2.2438270971179008e-003 - - 2.9625944793224335e-002 -4.4926467537879944e-001 - <_> - - 0 -1 592 -1.4502200298011303e-002 - - 2.3043723404407501e-001 -6.8583212792873383e-002 - <_> - - 0 -1 17 3.1762875616550446e-002 - - -1.1820482462644577e-001 1.3017164170742035e-001 - <_> - - 0 -1 372 8.3491904661059380e-003 - - -5.4794549942016602e-002 3.0562251806259155e-001 - <_> - - 0 -1 945 1.1813377961516380e-002 - - -4.4218052178621292e-002 3.2657644152641296e-001 - <_> - - 0 -1 517 -4.3407902121543884e-003 - - 2.3012351989746094e-001 -6.2401693314313889e-002 - <_> - - 0 -1 835 -5.1777150481939316e-002 - - -4.2195704579353333e-001 3.3818338066339493e-002 - <_> - - 0 -1 573 9.5773371867835522e-004 - - -1.2982761859893799e-001 1.0589899122714996e-001 - <_> - - 0 -1 329 2.6355611626058817e-003 - - -1.1849098652601242e-001 1.2649086117744446e-001 - <_> - - 0 -1 738 -6.9736450910568237e-002 - - 5.4316484928131104e-001 -2.8468221426010132e-002 - <_> - - 0 -1 166 -4.1691556572914124e-002 - - 1.8529292941093445e-001 -7.9085260629653931e-002 - <_> - - 0 -1 72 3.0405964702367783e-002 - - -6.7499466240406036e-002 2.3227298259735107e-001 - <_> - - 0 -1 202 1.6526731848716736e-001 - - 2.3192871361970901e-002 -6.6413503885269165e-001 - <_> - - 0 -1 244 -7.9902745783329010e-003 - - 1.6699096560478210e-001 -8.0209225416183472e-002 - <_> - - 0 -1 435 -8.4093026816844940e-003 - - 3.8385570049285889e-001 -3.3093310892581940e-002 - <_> - - 0 -1 580 -6.2388582155108452e-003 - - 2.2031579911708832e-001 -5.9756781905889511e-002 - <_> - - 0 -1 416 2.2657278925180435e-002 - - 2.9750887304544449e-002 -4.3571525812149048e-001 - <_> - - 0 -1 245 -3.3273398876190186e-002 - - -7.2214579582214355e-001 1.7277766019105911e-002 - <_> - - 0 -1 805 -7.5985761359333992e-003 - - -4.8032435774803162e-001 2.3796260356903076e-002 - <_> - - 0 -1 490 1.4554752968251705e-002 - - 2.0614990964531898e-002 -5.7951718568801880e-001 - <_> - - 0 -1 348 -2.4409522302448750e-003 - - 1.5682564675807953e-001 -8.2513608038425446e-002 - <_> - - 0 -1 216 -2.7174502611160278e-002 - - -5.4916822910308838e-001 2.3511687293648720e-002 - <_> - - 0 -1 599 1.8674493767321110e-003 - - 3.5896647721529007e-002 -3.5593807697296143e-001 - <_> - - 0 -1 599 -1.7106164013966918e-003 - - -2.9658839106559753e-001 4.5083675533533096e-002 - <_> - - 0 -1 698 -1.2188366800546646e-001 - - -6.8481236696243286e-001 1.6469523310661316e-002 - <_> - - 0 -1 206 1.6452776268124580e-002 - - 1.6632448881864548e-002 -6.3031005859375000e-001 - <_> - - 0 -1 913 3.3029774203896523e-003 - - 5.2817359566688538e-002 -2.3288796842098236e-001 - <_> - - 0 -1 678 6.5974113531410694e-003 - - -5.9827085584402084e-002 2.2615881264209747e-001 - <_> - - 0 -1 947 -2.2020633332431316e-003 - - 2.2270961105823517e-001 -5.8337379246950150e-002 - <_> - - 0 -1 582 -8.9172367006540298e-003 - - 2.3682470619678497e-001 -5.5845208466053009e-002 - <_> - - 0 -1 100 -3.8233667612075806e-002 - - 1.9340702891349792e-001 -7.3905274271965027e-002 - <_> - - 0 -1 214 -5.8171510696411133e-002 - - -3.3873862028121948e-001 3.6934167146682739e-002 - <_> - - 0 -1 142 1.3129880651831627e-002 - - -5.7335916906595230e-002 2.4769510328769684e-001 - <_> - - 0 -1 606 -2.3510225117206573e-002 - - -7.3440921306610107e-001 2.1062126383185387e-002 - <_> - - 0 -1 180 -3.2106369733810425e-002 - - 1.9888436794281006e-001 -6.8882115185260773e-002 - <_> - - 0 -1 798 1.0653462260961533e-002 - - -3.1876940280199051e-002 3.7958627939224243e-001 - <_> - - 0 -1 325 2.5438904762268066e-002 - - -2.5426354259252548e-002 4.6004450321197510e-001 - <_> - - 0 -1 239 2.6357024908065796e-002 - - -4.9807246774435043e-002 2.5959959626197815e-001 - <_> - - 0 -1 525 5.6436131708323956e-003 - - -4.5353759080171585e-002 2.8858882188796997e-001 - <_> - - 0 -1 267 -4.3369065970182419e-003 - - 1.4867325127124786e-001 -8.8411331176757813e-002 - <_> - - 0 -1 215 -1.9298204779624939e-001 - - -5.3079867362976074e-001 2.5263534858822823e-002 - <_> - - 0 -1 734 5.7046163827180862e-002 - - 1.1847544461488724e-002 -8.2090246677398682e-001 - <_> - - 0 -1 352 4.9701407551765442e-002 - - 1.3225952163338661e-002 -6.8998688459396362e-001 - <_> - - 0 -1 278 -2.8292792849242687e-003 - - 1.7430420219898224e-001 -6.6152326762676239e-002 - <_> - - 0 -1 476 -1.4506326988339424e-002 - - -3.1870725750923157e-001 3.8834158331155777e-002 - <_> - - 0 -1 859 3.5564824938774109e-002 - - -5.6947514414787292e-002 2.1859169006347656e-001 - <_> - - 0 -1 98 2.0967530086636543e-002 - - -5.9812918305397034e-002 2.2214832901954651e-001 - <_> - - 0 -1 127 7.3756486177444458e-002 - - 2.5129400193691254e-002 -4.9916529655456543e-001 - - <_> - 100 - -2.2359671592712402e+000 - - <_> - - 0 -1 285 -9.3501225113868713e-002 - - -4.6586804091930389e-002 -7.2199982404708862e-001 - <_> - - 0 -1 238 4.9442616291344166e-003 - - -3.9842179417610168e-001 2.1402300894260406e-001 - <_> - - 0 -1 799 1.0407378897070885e-002 - - -1.3988684117794037e-001 3.9579308032989502e-001 - <_> - - 0 -1 322 -1.4162844978272915e-002 - - 6.4931660890579224e-001 -5.7302106171846390e-002 - <_> - - 0 -1 449 9.8008674103766680e-004 - - -1.7719046771526337e-001 2.0141038298606873e-001 - <_> - - 0 -1 218 1.4206364750862122e-002 - - -9.3258224427700043e-002 3.4144768118858337e-001 - <_> - - 0 -1 879 2.5848676450550556e-003 - - -1.4990748465061188e-001 2.2581319510936737e-001 - <_> - - 0 -1 22 8.0643901601433754e-003 - - -8.8275857269763947e-002 2.8663924336433411e-001 - <_> - - 0 -1 881 -8.6236204952001572e-003 - - 3.3490571379661560e-001 -8.2069411873817444e-002 - <_> - - 0 -1 723 1.2022950686514378e-002 - - -6.3569039106369019e-002 3.9191362261772156e-001 - <_> - - 0 -1 665 -1.5419950708746910e-002 - - 4.4637352228164673e-001 -6.6652692854404449e-002 - <_> - - 0 -1 735 -6.3524805009365082e-003 - - 1.8987259268760681e-001 -1.2892219424247742e-001 - <_> - - 0 -1 408 6.9541163742542267e-002 - - 4.3989829719066620e-002 -4.4642734527587891e-001 - <_> - - 0 -1 368 7.4983224272727966e-002 - - -5.2028596401214600e-002 5.7951992750167847e-001 - <_> - - 0 -1 486 2.0330501720309258e-003 - - -1.3492821156978607e-001 2.0830303430557251e-001 - <_> - - 0 -1 28 1.8707301467657089e-002 - - 3.0162446200847626e-002 -7.5620234012603760e-001 - <_> - - 0 -1 33 9.1869030147790909e-003 - - -1.5992332994937897e-001 1.3838322460651398e-001 - <_> - - 0 -1 473 -2.0068701356649399e-002 - - 4.9636912345886230e-001 -3.8212534040212631e-002 - <_> - - 0 -1 32 9.3690613284707069e-003 - - 2.7963882312178612e-002 -7.0575749874114990e-001 - <_> - - 0 -1 63 -9.2746205627918243e-003 - - 1.7214477062225342e-001 -1.1743877083063126e-001 - <_> - - 0 -1 671 -3.7561631761491299e-003 - - 1.9893965125083923e-001 -1.0429763048887253e-001 - <_> - - 0 -1 642 -2.8749569319188595e-003 - - -3.7584275007247925e-001 4.6344734728336334e-002 - <_> - - 0 -1 145 -1.1727647855877876e-002 - - -4.4696572422981262e-001 4.0343362838029861e-002 - <_> - - 0 -1 590 1.0945920832455158e-002 - - 5.6218206882476807e-002 -2.9916441440582275e-001 - <_> - - 0 -1 341 -1.2209227308630943e-002 - - 3.9286783337593079e-001 -4.2874403297901154e-002 - <_> - - 0 -1 447 -2.5397611781954765e-002 - - -3.8478189706802368e-001 4.3343432247638702e-002 - <_> - - 0 -1 746 -4.5675365254282951e-003 - - 2.3299069702625275e-001 -7.3202215135097504e-002 - <_> - - 0 -1 935 -6.0586854815483093e-003 - - 2.2465232014656067e-001 -7.7056594192981720e-002 - <_> - - 0 -1 131 1.5789955854415894e-002 - - -8.7083600461483002e-002 1.9742278754711151e-001 - <_> - - 0 -1 759 -1.7314129509031773e-003 - - 2.0412902534008026e-001 -8.9147895574569702e-002 - <_> - - 0 -1 939 7.3486715555191040e-003 - - -4.5228123664855957e-002 3.5152116417884827e-001 - <_> - - 0 -1 246 1.6278622671961784e-002 - - 5.0431668758392334e-002 -3.4917074441909790e-001 - <_> - - 0 -1 151 -4.9730124883353710e-003 - - 1.8474133312702179e-001 -9.4716101884841919e-002 - <_> - - 0 -1 334 1.3617072254419327e-002 - - -3.4493431448936462e-002 5.1511102914810181e-001 - <_> - - 0 -1 516 -3.5471074283123016e-002 - - -3.9388224482536316e-001 4.3496731668710709e-002 - <_> - - 0 -1 103 5.2554365247488022e-003 - - -1.2609277665615082e-001 1.2129900604486465e-001 - <_> - - 0 -1 489 -4.1965182870626450e-002 - - -6.2069499492645264e-001 2.4282006546854973e-002 - <_> - - 0 -1 61 9.6745520830154419e-002 - - 3.0231734737753868e-002 -4.6271669864654541e-001 - <_> - - 0 -1 661 -6.8811019882559776e-003 - - 2.8159707784652710e-001 -5.7276148349046707e-002 - <_> - - 0 -1 616 1.0784192010760307e-002 - - -4.8847943544387817e-002 3.2464641332626343e-001 - <_> - - 0 -1 466 -3.3961618319153786e-003 - - 4.0418368577957153e-001 -4.2481750249862671e-002 - <_> - - 0 -1 420 -6.9079827517271042e-003 - - 1.1404169350862503e-001 -1.2768752872943878e-001 - <_> - - 0 -1 167 1.4355555176734924e-001 - - -3.9203863590955734e-002 3.9233651757240295e-001 - <_> - - 0 -1 210 -3.5771834664046764e-003 - - 1.4706018567085266e-001 -1.3173283636569977e-001 - <_> - - 0 -1 439 3.0234435573220253e-002 - - 1.8946202471852303e-002 -8.0503576993942261e-001 - <_> - - 0 -1 567 7.8391470015048981e-004 - - 8.7953150272369385e-002 -1.6678945720195770e-001 - <_> - - 0 -1 42 -2.2085051983594894e-002 - - -3.8623884320259094e-001 4.2284723371267319e-002 - <_> - - 0 -1 818 -2.6205494999885559e-002 - - 1.6326524317264557e-001 -1.0225085169076920e-001 - <_> - - 0 -1 581 -9.5918308943510056e-003 - - 2.5218212604522705e-001 -6.0809265822172165e-002 - <_> - - 0 -1 242 -2.6144424453377724e-002 - - -6.9495695829391479e-001 2.2685619071125984e-002 - <_> - - 0 -1 424 9.2253191396594048e-003 - - -8.8936053216457367e-002 1.6087681055068970e-001 - <_> - - 0 -1 843 -3.1533516012132168e-003 - - 2.2563895583152771e-001 -6.3495889306068420e-002 - <_> - - 0 -1 56 -6.6996468231081963e-003 - - -2.4251624941825867e-001 6.1135187745094299e-002 - <_> - - 0 -1 282 -1.2584788724780083e-002 - - 2.9776036739349365e-001 -4.9212120473384857e-002 - <_> - - 0 -1 903 -4.2148698121309280e-003 - - 3.0259734392166138e-001 -4.4676482677459717e-002 - <_> - - 0 -1 653 -9.4317561015486717e-003 - - 1.1043215543031693e-001 -1.2356746196746826e-001 - <_> - - 0 -1 654 2.1886886097490788e-003 - - -6.1201002448797226e-002 2.2712202370166779e-001 - <_> - - 0 -1 398 2.4963401257991791e-002 - - 2.4292556568980217e-002 -5.4634368419647217e-001 - <_> - - 0 -1 205 -8.7548848241567612e-003 - - 2.5255405902862549e-001 -5.4619345813989639e-002 - <_> - - 0 -1 487 7.0049557834863663e-003 - - 3.9875753223896027e-002 -3.8009002804756165e-001 - <_> - - 0 -1 258 3.7140229251235723e-003 - - -9.3989297747612000e-002 1.5871012210845947e-001 - <_> - - 0 -1 565 -8.4969010204076767e-003 - - 2.0674896240234375e-001 -6.4190469682216644e-002 - <_> - - 0 -1 147 -5.0333619117736816e-002 - - 3.0274888873100281e-001 -4.3931342661380768e-002 - <_> - - 0 -1 80 7.2737382724881172e-003 - - -8.7947271764278412e-002 1.5312801301479340e-001 - <_> - - 0 -1 58 9.9609624594449997e-003 - - 4.6528778970241547e-002 -2.9576960206031799e-001 - <_> - - 0 -1 909 -1.3673231005668640e-002 - - 3.2159554958343506e-001 -4.6024739742279053e-002 - <_> - - 0 -1 460 2.4796918034553528e-002 - - 2.3450840264558792e-002 -6.3208627700805664e-001 - <_> - - 0 -1 790 -8.9704394340515137e-003 - - 1.7290446162223816e-001 -8.1694059073925018e-002 - <_> - - 0 -1 191 -2.3638601414859295e-003 - - 1.0641085356473923e-001 -1.2656879425048828e-001 - <_> - - 0 -1 45 -3.0800779350101948e-003 - - 1.4082619547843933e-001 -9.4026930630207062e-002 - <_> - - 0 -1 138 -1.0759308934211731e-002 - - -4.0597277879714966e-001 3.1949173659086227e-002 - <_> - - 0 -1 176 7.2143180295825005e-003 - - 1.2054420076310635e-002 -8.5538458824157715e-001 - <_> - - 0 -1 384 1.9637834280729294e-002 - - -4.5702952891588211e-002 3.0082041025161743e-001 - <_> - - 0 -1 181 -2.6587650179862976e-002 - - -4.8827502131462097e-001 2.5739965960383415e-002 - <_> - - 0 -1 429 -2.8913402929902077e-003 - - 1.5120062232017517e-001 -8.3084680140018463e-002 - <_> - - 0 -1 462 -1.7486744036432356e-004 - - -1.6527174413204193e-001 7.9318381845951080e-002 - <_> - - 0 -1 93 5.8025561273097992e-002 - - -9.3625135719776154e-002 1.3428705930709839e-001 - <_> - - 0 -1 895 7.7226985013112426e-004 - - 6.4624220132827759e-002 -1.9347991049289703e-001 - <_> - - 0 -1 506 -6.4398542046546936e-002 - - -8.3100390434265137e-001 1.3259679079055786e-002 - <_> - - 0 -1 794 2.7848746627569199e-002 - - 1.3673855923116207e-002 -7.1600478887557983e-001 - <_> - - 0 -1 308 -1.7273522913455963e-002 - - -6.1328560113906860e-001 1.7129577696323395e-002 - <_> - - 0 -1 117 2.2771380841732025e-002 - - 1.4634012244641781e-002 -6.9125133752822876e-001 - <_> - - 0 -1 155 1.7879681661725044e-002 - - -6.6493585705757141e-002 1.8808430433273315e-001 - <_> - - 0 -1 188 -7.5980871915817261e-003 - - 2.1208682656288147e-001 -6.9655627012252808e-002 - <_> - - 0 -1 468 8.3334632217884064e-003 - - -4.5091670006513596e-002 2.5533476471900940e-001 - <_> - - 0 -1 451 9.5366090536117554e-003 - - 3.3587828278541565e-002 -3.8594719767570496e-001 - <_> - - 0 -1 349 1.9022613763809204e-002 - - -4.2280010879039764e-002 3.0593034625053406e-001 - <_> - - 0 -1 522 3.6582566797733307e-002 - - -6.8928316235542297e-002 1.8224547803401947e-001 - <_> - - 0 -1 159 -2.5450623035430908e-001 - - -7.9693830013275146e-001 1.6522107645869255e-002 - <_> - - 0 -1 905 -5.8933448046445847e-002 - - 3.6613103747367859e-001 -3.7511564791202545e-002 - <_> - - 0 -1 64 8.5881188511848450e-002 - - 3.5934593528509140e-002 -3.7825050950050354e-001 - <_> - - 0 -1 810 -6.8585649132728577e-002 - - -5.4236054420471191e-001 2.0104518160223961e-002 - <_> - - 0 -1 529 4.8160655423998833e-003 - - -4.3085236102342606e-002 2.8620475530624390e-001 - <_> - - 0 -1 498 6.1599753098562360e-004 - - 5.0022143870592117e-002 -2.7295649051666260e-001 - <_> - - 0 -1 710 7.4446541257202625e-003 - - -6.7837722599506378e-002 1.9111913442611694e-001 - <_> - - 0 -1 333 1.3981198891997337e-002 - - 2.1413592621684074e-002 -6.2269157171249390e-001 - <_> - - 0 -1 941 -1.4853913336992264e-002 - - 4.0018329024314880e-001 -3.4097265452146530e-002 - <_> - - 0 -1 3 1.3497969135642052e-002 - - 3.0796987935900688e-002 -4.2009493708610535e-001 - <_> - - 0 -1 887 9.1592809185385704e-003 - - 3.0317120254039764e-002 -3.5625258088111877e-001 - <_> - - 0 -1 11 2.9643373563885689e-002 - - -1.1319724470376968e-001 1.0797596722841263e-001 - - <_> - 100 - -2.0808603763580322e+000 - - <_> - - 0 -1 284 -7.5377658009529114e-002 - - -1.0360029339790344e-001 -7.0443350076675415e-001 - <_> - - 0 -1 301 -4.6968553215265274e-003 - - 2.6461517810821533e-001 -2.6632103323936462e-001 - <_> - - 0 -1 851 4.5106429606676102e-003 - - -1.9236828386783600e-001 2.4530071020126343e-001 - <_> - - 0 -1 324 -1.3677397742867470e-002 - - 4.8842102289199829e-001 -7.8666172921657562e-002 - <_> - - 0 -1 621 8.4240939468145370e-003 - - -1.1324168741703033e-001 2.8638821840286255e-001 - <_> - - 0 -1 827 1.0163122788071632e-003 - - -1.7518180608749390e-001 1.6443368792533875e-001 - <_> - - 0 -1 375 3.2988777384161949e-003 - - -7.6549887657165527e-002 2.8202313184738159e-001 - <_> - - 0 -1 85 1.4450255781412125e-002 - - -1.4695851504802704e-001 1.9833040237426758e-001 - <_> - - 0 -1 328 5.9788756072521210e-002 - - -2.7597570791840553e-002 6.0443407297134399e-001 - <_> - - 0 -1 668 -4.0823942981660366e-003 - - 3.7376108765602112e-001 -6.6522486507892609e-002 - <_> - - 0 -1 651 9.4101820141077042e-003 - - -7.5030580163002014e-002 3.3643370866775513e-001 - <_> - - 0 -1 770 1.2895615771412849e-002 - - -6.6736064851284027e-002 3.4388977289199829e-001 - <_> - - 0 -1 0 1.8281452357769012e-003 - - -7.6577022671699524e-002 3.0855756998062134e-001 - <_> - - 0 -1 811 1.2842542491853237e-002 - - -6.6831089556217194e-002 3.5320571064949036e-001 - <_> - - 0 -1 556 2.6731539517641068e-002 - - 4.3738048523664474e-002 -5.4744714498519897e-001 - <_> - - 0 -1 593 -2.1810945123434067e-002 - - -4.9039456248283386e-001 3.5305779427289963e-002 - <_> - - 0 -1 397 1.4120168052613735e-003 - - -1.7367108166217804e-001 1.1572990566492081e-001 - <_> - - 0 -1 494 1.5707452548667789e-003 - - -1.1095841974020004e-001 1.6702808439731598e-001 - <_> - - 0 -1 869 -7.3387438897043467e-004 - - 1.8617554008960724e-001 -9.1079324483871460e-002 - <_> - - 0 -1 495 -6.4388057217001915e-004 - - -2.6845857501029968e-001 6.1447944492101669e-002 - <_> - - 0 -1 427 1.1414934694766998e-001 - - 2.0975470542907715e-002 -7.1357190608978271e-001 - <_> - - 0 -1 931 1.3404923956841230e-003 - - -9.0797364711761475e-002 1.8696101009845734e-001 - <_> - - 0 -1 46 2.3350983858108521e-002 - - 2.9028130695223808e-002 -5.2345710992813110e-001 - <_> - - 0 -1 143 1.5429967083036900e-002 - - -9.4941243529319763e-002 1.6368669271469116e-001 - <_> - - 0 -1 357 1.0943166911602020e-002 - - -3.1125182285904884e-002 5.9323889017105103e-001 - <_> - - 0 -1 705 2.6839743368327618e-003 - - -7.5778268277645111e-002 2.1814092993736267e-001 - <_> - - 0 -1 39 -6.2261838465929031e-003 - - -2.8783807158470154e-001 5.5791638791561127e-002 - <_> - - 0 -1 207 1.0724554955959320e-001 - - 2.4116434156894684e-002 -5.8035951852798462e-001 - <_> - - 0 -1 199 -6.5348353236913681e-003 - - -2.8312593698501587e-001 5.1936011761426926e-002 - <_> - - 0 -1 415 -1.1670710518956184e-003 - - -1.8463888764381409e-001 8.3705939352512360e-002 - <_> - - 0 -1 808 -1.4070876641198993e-003 - - 1.5036344528198242e-001 -1.0249616205692291e-001 - <_> - - 0 -1 122 -3.9912573993206024e-002 - - -3.8639402389526367e-001 3.9821352809667587e-002 - <_> - - 0 -1 413 1.0381672531366348e-002 - - -1.2079605460166931e-001 1.2945999205112457e-001 - <_> - - 0 -1 453 -9.9312573671340942e-002 - - 6.0750687122344971e-001 -2.8503781184554100e-002 - <_> - - 0 -1 816 1.0430534370243549e-002 - - -6.0343675315380096e-002 2.3242907226085663e-001 - <_> - - 0 -1 445 3.5891016013920307e-003 - - 4.1434522718191147e-002 -3.4602153301239014e-001 - <_> - - 0 -1 788 1.0015227831900120e-002 - - -5.6792665272951126e-002 2.6468506455421448e-001 - <_> - - 0 -1 749 -9.2321680858731270e-004 - - -3.1470552086830139e-001 4.6375431120395660e-002 - <_> - - 0 -1 384 2.0065717399120331e-002 - - -4.7381434589624405e-002 3.2506260275840759e-001 - <_> - - 0 -1 782 2.0691626705229282e-003 - - -8.8068872690200806e-002 1.7662553489208221e-001 - <_> - - 0 -1 150 -2.0592920482158661e-002 - - 2.1614389121532440e-001 -6.7837409675121307e-002 - <_> - - 0 -1 729 -2.5132454931735992e-002 - - 2.9875260591506958e-001 -5.0642240792512894e-002 - <_> - - 0 -1 893 1.6763649880886078e-002 - - -5.6825786828994751e-002 2.6688432693481445e-001 - <_> - - 0 -1 5 2.4304956197738647e-002 - - -7.3691956698894501e-002 1.8922545015811920e-001 - <_> - - 0 -1 604 5.2945837378501892e-003 - - -6.8203508853912354e-002 2.3238344490528107e-001 - <_> - - 0 -1 146 1.7194304615259171e-002 - - -4.1591234505176544e-002 3.3211585879325867e-001 - <_> - - 0 -1 119 -1.0534466244280338e-002 - - 2.0838305354118347e-001 -8.1538312137126923e-002 - <_> - - 0 -1 171 3.3360864967107773e-002 - - -6.7458741366863251e-002 2.5852772593498230e-001 - <_> - - 0 -1 183 4.6436764299869537e-002 - - 1.9892208278179169e-002 -8.1141030788421631e-001 - <_> - - 0 -1 8 -4.1056036949157715e-002 - - -4.9327704310417175e-001 2.3769956082105637e-002 - <_> - - 0 -1 514 -1.8552202731370926e-002 - - -5.7725781202316284e-001 2.1620772778987885e-002 - <_> - - 0 -1 310 -1.5498932916671038e-003 - - 1.3356749713420868e-001 -1.0274448245763779e-001 - <_> - - 0 -1 144 -1.2870179489254951e-002 - - -6.8844175338745117e-001 1.6567943617701530e-002 - <_> - - 0 -1 162 1.1060645803809166e-002 - - -6.5967611968517303e-002 2.0074956119060516e-001 - <_> - - 0 -1 737 -1.9628754816949368e-003 - - 1.7064040899276733e-001 -7.5410693883895874e-002 - <_> - - 0 -1 118 3.2771207392215729e-002 - - 1.7548711970448494e-002 -7.5103056430816650e-001 - <_> - - 0 -1 62 -5.6525086984038353e-004 - - 1.0811340808868408e-001 -1.1322978138923645e-001 - <_> - - 0 -1 920 6.6395318135619164e-003 - - -4.8233803361654282e-002 2.5985202193260193e-001 - <_> - - 0 -1 933 5.3288890048861504e-003 - - -5.8816779404878616e-002 2.0709130167961121e-001 - <_> - - 0 -1 30 9.5648169517517090e-002 - - -2.3178230971097946e-002 5.3592687845230103e-001 - <_> - - 0 -1 505 2.3851044476032257e-002 - - 3.9325568825006485e-002 -3.2090389728546143e-001 - <_> - - 0 -1 380 4.9215428531169891e-002 - - -8.0275781452655792e-002 2.1604713797569275e-001 - <_> - - 0 -1 404 5.1129907369613647e-002 - - 2.0917052403092384e-002 -6.7675739526748657e-001 - <_> - - 0 -1 470 -9.5789285842329264e-004 - - 1.3741976022720337e-001 -9.2351287603378296e-002 - <_> - - 0 -1 38 4.3797735124826431e-002 - - -5.2134189754724503e-002 2.3939897119998932e-001 - <_> - - 0 -1 177 -3.7566445767879486e-002 - - -5.0337618589401245e-001 3.2042562961578369e-002 - <_> - - 0 -1 293 -6.6379196941852570e-003 - - 2.3610880970954895e-001 -5.9629496186971664e-002 - <_> - - 0 -1 569 4.4785980135202408e-003 - - -6.9053784012794495e-002 1.8493640422821045e-001 - <_> - - 0 -1 680 -1.9650494214147329e-003 - - -5.0821167230606079e-001 2.3264253512024879e-002 - <_> - - 0 -1 826 -8.4884336683899164e-004 - - 1.7365188896656036e-001 -7.3235429823398590e-002 - <_> - - 0 -1 421 -5.7333573698997498e-002 - - -3.1190565228462219e-001 4.1780386120080948e-002 - <_> - - 0 -1 599 1.8632253631949425e-003 - - 3.1603202223777771e-002 -3.6946067214012146e-001 - <_> - - 0 -1 336 -2.0456001162528992e-002 - - 3.0203589797019958e-001 -4.1565753519535065e-002 - <_> - - 0 -1 938 5.5945245549082756e-003 - - -3.2002035528421402e-002 3.7638634443283081e-001 - <_> - - 0 -1 152 -1.8559835851192474e-002 - - 2.4045053124427795e-001 -5.1895260810852051e-002 - <_> - - 0 -1 706 -1.0816272348165512e-002 - - -4.1922396421432495e-001 3.0057143419981003e-002 - <_> - - 0 -1 717 -1.5897199045866728e-003 - - -3.8717699050903320e-001 2.7556220069527626e-002 - <_> - - 0 -1 337 -1.8832697533071041e-003 - - 1.8341954052448273e-001 -6.8402133882045746e-002 - <_> - - 0 -1 107 -6.8602010607719421e-002 - - -4.3040940165519714e-001 2.7811320498585701e-002 - <_> - - 0 -1 605 3.1656727194786072e-002 - - 1.4831826090812683e-002 -6.9200241565704346e-001 - <_> - - 0 -1 178 -1.1699689552187920e-002 - - -4.7378033399581909e-001 2.2049939259886742e-002 - <_> - - 0 -1 175 -4.9252226948738098e-002 - - 2.0226360857486725e-001 -5.8283366262912750e-002 - <_> - - 0 -1 200 -1.4749905094504356e-002 - - -6.3420587778091431e-001 1.7177773639559746e-002 - <_> - - 0 -1 594 1.3355823233723640e-002 - - -5.3626276552677155e-002 2.3158134520053864e-001 - <_> - - 0 -1 688 2.7912877500057220e-002 - - -3.2106213271617889e-002 3.9656600356101990e-001 - <_> - - 0 -1 433 -1.8341368064284325e-002 - - 3.0023518204689026e-001 -3.9390310645103455e-002 - <_> - - 0 -1 320 3.3382259309291840e-002 - - -5.0307501107454300e-002 2.3759432137012482e-001 - <_> - - 0 -1 414 2.2881597280502319e-002 - - 2.9198208823800087e-002 -4.3145897984504700e-001 - <_> - - 0 -1 271 1.7183616757392883e-001 - - 1.9492210820317268e-002 -5.7107782363891602e-001 - <_> - - 0 -1 889 4.3015915900468826e-002 - - 1.8091753125190735e-002 -5.8863103389739990e-001 - <_> - - 0 -1 545 -1.2893548235297203e-002 - - 1.4482001960277557e-001 -8.2013383507728577e-002 - <_> - - 0 -1 910 5.9737069532275200e-003 - - -7.2960324585437775e-002 1.6368763148784637e-001 - <_> - - 0 -1 664 1.1285657994449139e-002 - - -4.4454183429479599e-002 2.5658103823661804e-001 - <_> - - 0 -1 951 -9.9752098321914673e-004 - - -2.6904699206352234e-001 4.0726143866777420e-002 - <_> - - 0 -1 111 2.1743077784776688e-002 - - 1.7429182305932045e-002 -6.2877011299133301e-001 - <_> - - 0 -1 866 3.7145437672734261e-003 - - -8.1450186669826508e-002 1.3246190547943115e-001 - <_> - - 0 -1 888 -1.5904067084193230e-002 - - 3.2105255126953125e-001 -3.4731235355138779e-002 - <_> - - 0 -1 907 -2.6992281898856163e-002 - - -6.8835800886154175e-001 1.6344616189599037e-002 - <_> - - 0 -1 830 6.8261945853009820e-004 - - -1.1232791095972061e-001 9.8401591181755066e-002 - <_> - - 0 -1 807 -2.5938652455806732e-002 - - -5.0289982557296753e-001 2.3814825341105461e-002 - - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - 0 - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - 0 - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 2 2 2 3. - 0 - <_> - - <_> - 0 0 8 7 -1. - <_> - 2 0 4 7 2. - 0 - <_> - - <_> - 0 0 8 8 -1. - <_> - 2 0 4 8 2. - 0 - <_> - - <_> - 0 0 6 13 -1. - <_> - 2 0 2 13 3. - 0 - <_> - - <_> - 0 0 12 13 -1. - <_> - 3 0 6 13 2. - 0 - <_> - - <_> - 0 0 12 4 -1. - <_> - 4 0 4 4 3. - 0 - <_> - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - <_> - - <_> - 0 0 36 11 -1. - <_> - 12 0 12 11 3. - 0 - <_> - - <_> - 0 0 17 12 -1. - <_> - 0 4 17 4 3. - 0 - <_> - - <_> - 0 0 36 13 -1. - <_> - 18 0 18 13 2. - 0 - <_> - - <_> - 0 0 22 2 -1. - <_> - 0 1 22 1 2. - 0 - <_> - - <_> - 0 0 24 9 -1. - <_> - 0 3 24 3 3. - 0 - <_> - - <_> - 0 0 29 2 -1. - <_> - 0 1 29 1 2. - 0 - <_> - - <_> - 0 0 34 2 -1. - <_> - 0 1 34 1 2. - 0 - <_> - - <_> - 0 0 36 8 -1. - <_> - 0 2 36 4 2. - 0 - <_> - - <_> - 0 0 42 6 -1. - <_> - 0 3 42 3 2. - 0 - <_> - - <_> - 0 0 44 2 -1. - <_> - 0 1 44 1 2. - 0 - <_> - - <_> - 0 0 51 8 -1. - <_> - 0 2 51 4 2. - 0 - <_> - - <_> - 0 1 2 9 -1. - <_> - 1 1 1 9 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 1 1 1 12 2. - 0 - <_> - - <_> - 0 1 2 12 -1. - <_> - 0 7 2 6 2. - 0 - <_> - - <_> - 0 1 8 10 -1. - <_> - 0 1 4 5 2. - <_> - 4 6 4 5 2. - 0 - <_> - - <_> - 0 1 7 12 -1. - <_> - 0 4 7 6 2. - 0 - <_> - - <_> - 0 1 12 12 -1. - <_> - 0 5 12 4 3. - 0 - <_> - - <_> - 0 1 17 12 -1. - <_> - 0 5 17 4 3. - 0 - <_> - - <_> - 0 2 6 2 -1. - <_> - 2 2 2 2 3. - 0 - <_> - - <_> - 0 2 4 6 -1. - <_> - 2 2 2 6 2. - 0 - <_> - - <_> - 0 2 20 7 -1. - <_> - 5 2 10 7 2. - 0 - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - <_> - - <_> - 0 3 4 2 -1. - <_> - 1 3 2 2 2. - 0 - <_> - - <_> - 0 3 6 9 -1. - <_> - 2 3 2 9 3. - 0 - <_> - - <_> - 0 3 4 10 -1. - <_> - 2 3 2 10 2. - 0 - <_> - - <_> - 0 3 6 10 -1. - <_> - 2 3 2 10 3. - 0 - <_> - - <_> - 0 3 9 3 -1. - <_> - 3 3 3 3 3. - 0 - <_> - - <_> - 0 3 3 9 -1. - <_> - 0 6 3 3 3. - 0 - <_> - - <_> - 0 3 9 6 -1. - <_> - 3 3 3 6 3. - 0 - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 3 4 2 2. - <_> - 4 5 4 2 2. - 0 - <_> - - <_> - 0 3 8 6 -1. - <_> - 0 3 4 3 2. - <_> - 4 6 4 3 2. - 0 - <_> - - <_> - 0 3 16 10 -1. - <_> - 4 3 8 10 2. - 0 - <_> - - <_> - 0 3 10 6 -1. - <_> - 0 5 10 2 3. - 0 - <_> - - <_> - 0 3 16 8 -1. - <_> - 0 7 16 4 2. - 0 - <_> - - <_> - 0 3 51 8 -1. - <_> - 0 7 51 4 2. - 0 - <_> - - <_> - 0 4 3 3 -1. - <_> - 1 5 1 1 9. - 0 - <_> - - <_> - 0 4 3 9 -1. - <_> - 0 7 3 3 3. - 0 - <_> - - <_> - 0 4 20 7 -1. - <_> - 10 4 10 7 2. - 0 - <_> - - <_> - 0 4 34 9 -1. - <_> - 17 4 17 9 2. - 0 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 7 1 2 2. - 0 - <_> - - <_> - 0 5 2 8 -1. - <_> - 1 5 1 8 2. - 0 - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 7 10 2 2. - 0 - <_> - - <_> - 0 5 22 6 -1. - <_> - 0 8 22 3 2. - 0 - <_> - - <_> - 0 6 2 7 -1. - <_> - 1 6 1 7 2. - 0 - <_> - - <_> - 0 6 4 2 -1. - <_> - 2 6 2 2 2. - 0 - <_> - - <_> - 0 6 6 5 -1. - <_> - 2 6 2 5 3. - 0 - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - 0 - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 9 4 3 2. - 0 - <_> - - <_> - 0 6 13 4 -1. - <_> - 0 8 13 2 2. - 0 - <_> - - <_> - 0 6 14 4 -1. - <_> - 0 8 14 2 2. - 0 - <_> - - <_> - 0 6 33 4 -1. - <_> - 0 8 33 2 2. - 0 - <_> - - <_> - 0 6 44 6 -1. - <_> - 0 8 44 2 3. - 0 - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 10 1 3 2. - 0 - <_> - - <_> - 0 7 7 6 -1. - <_> - 0 10 7 3 2. - 0 - <_> - - <_> - 0 7 25 6 -1. - <_> - 0 9 25 2 3. - 0 - <_> - - <_> - 0 7 32 3 -1. - <_> - 0 8 32 1 3. - 0 - <_> - - <_> - 0 8 12 5 -1. - <_> - 3 8 6 5 2. - 0 - <_> - - <_> - 0 8 12 2 -1. - <_> - 6 8 6 2 2. - 0 - <_> - - <_> - 0 8 21 4 -1. - <_> - 7 8 7 4 3. - 0 - <_> - - <_> - 0 8 25 4 -1. - <_> - 0 9 25 2 2. - 0 - <_> - - <_> - 0 9 15 4 -1. - <_> - 5 9 5 4 3. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 7 9 14 4 2. - 0 - <_> - - <_> - 0 9 28 4 -1. - <_> - 14 9 14 4 2. - 0 - <_> - - <_> - 0 9 46 2 -1. - <_> - 0 10 46 1 2. - 0 - <_> - - <_> - 0 9 50 2 -1. - <_> - 0 10 50 1 2. - 0 - <_> - - <_> - 0 10 6 3 -1. - <_> - 3 10 3 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 3 10 6 3 2. - 0 - <_> - - <_> - 0 10 10 3 -1. - <_> - 5 10 5 3 2. - 0 - <_> - - <_> - 0 10 12 3 -1. - <_> - 6 10 6 3 2. - 0 - <_> - - <_> - 0 11 5 2 -1. - <_> - 0 12 5 1 2. - 0 - <_> - - <_> - 0 11 26 2 -1. - <_> - 13 11 13 2 2. - 0 - <_> - - <_> - 0 11 28 2 -1. - <_> - 14 11 14 2 2. - 0 - <_> - - <_> - 0 11 42 2 -1. - <_> - 14 11 14 2 3. - 0 - <_> - - <_> - 0 11 19 2 -1. - <_> - 0 12 19 1 2. - 0 - <_> - - <_> - 0 11 23 2 -1. - <_> - 0 12 23 1 2. - 0 - <_> - - <_> - 1 0 5 12 -1. - <_> - 1 3 5 6 2. - 0 - <_> - - <_> - 1 0 15 4 -1. - <_> - 6 0 5 4 3. - 0 - <_> - - <_> - 1 0 14 1 -1. - <_> - 8 0 7 1 2. - 0 - <_> - - <_> - 1 0 8 2 -1. - <_> - 1 1 8 1 2. - 0 - <_> - - <_> - 1 0 9 2 -1. - <_> - 1 1 9 1 2. - 0 - <_> - - <_> - 1 0 11 2 -1. - <_> - 1 1 11 1 2. - 0 - <_> - - <_> - 1 0 17 9 -1. - <_> - 1 3 17 3 3. - 0 - <_> - - <_> - 1 0 21 2 -1. - <_> - 1 1 21 1 2. - 0 - <_> - - <_> - 1 0 41 6 -1. - <_> - 1 3 41 3 2. - 0 - <_> - - <_> - 1 0 47 2 -1. - <_> - 1 1 47 1 2. - 0 - <_> - - <_> - 1 1 6 8 -1. - <_> - 3 1 2 8 3. - 0 - <_> - - <_> - 1 1 6 9 -1. - <_> - 3 1 2 9 3. - 0 - <_> - - <_> - 1 1 6 11 -1. - <_> - 3 1 2 11 3. - 0 - <_> - - <_> - 1 1 9 5 -1. - <_> - 4 1 3 5 3. - 0 - <_> - - <_> - 1 1 20 7 -1. - <_> - 6 1 10 7 2. - 0 - <_> - - <_> - 1 1 20 8 -1. - <_> - 6 1 10 8 2. - 0 - <_> - - <_> - 1 1 9 9 -1. - <_> - 1 4 9 3 3. - 0 - <_> - - <_> - 1 1 27 10 -1. - <_> - 10 1 9 10 3. - 0 - <_> - - <_> - 1 1 10 6 -1. - <_> - 1 3 10 2 3. - 0 - <_> - - <_> - 1 2 4 6 -1. - <_> - 1 2 2 3 2. - <_> - 3 5 2 3 2. - 0 - <_> - - <_> - 1 2 20 8 -1. - <_> - 6 2 10 8 2. - 0 - <_> - - <_> - 1 2 13 10 -1. - <_> - 1 7 13 5 2. - 0 - <_> - - <_> - 1 2 34 7 -1. - <_> - 18 2 17 7 2. - 0 - <_> - - <_> - 1 3 4 3 -1. - <_> - 2 3 2 3 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 3 3 2 8 3. - 0 - <_> - - <_> - 1 3 6 4 -1. - <_> - 1 3 3 2 2. - <_> - 4 5 3 2 2. - 0 - <_> - - <_> - 1 3 6 8 -1. - <_> - 1 3 3 4 2. - <_> - 4 7 3 4 2. - 0 - <_> - - <_> - 1 3 6 5 -1. - <_> - 4 3 3 5 2. - 0 - <_> - - <_> - 1 3 15 3 -1. - <_> - 6 3 5 3 3. - 0 - <_> - - <_> - 1 3 36 9 -1. - <_> - 13 3 12 9 3. - 0 - <_> - - <_> - 1 3 36 10 -1. - <_> - 13 3 12 10 3. - 0 - <_> - - <_> - 1 4 4 2 -1. - <_> - 2 4 2 2 2. - 0 - <_> - - <_> - 1 4 6 2 -1. - <_> - 3 4 2 2 3. - 0 - <_> - - <_> - 1 4 6 3 -1. - <_> - 3 4 2 3 3. - 0 - <_> - - <_> - 1 4 6 4 -1. - <_> - 4 4 3 4 2. - 0 - <_> - - <_> - 1 4 6 6 -1. - <_> - 4 4 3 6 2. - 0 - <_> - - <_> - 1 4 9 4 -1. - <_> - 1 6 9 2 2. - 0 - <_> - - <_> - 1 5 12 3 -1. - <_> - 5 6 4 1 9. - 0 - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 7 8 3 2. - <_> - 9 10 8 3 2. - 0 - <_> - - <_> - 1 11 46 2 -1. - <_> - 1 12 46 1 2. - 0 - <_> - - <_> - 1 11 50 2 -1. - <_> - 1 12 50 1 2. - 0 - <_> - - <_> - 1 12 50 1 -1. - <_> - 26 12 25 1 2. - 0 - <_> - - <_> - 2 0 6 13 -1. - <_> - 4 0 2 13 3. - 0 - <_> - - <_> - 2 0 24 3 -1. - <_> - 8 0 12 3 2. - 0 - <_> - - <_> - 2 0 12 10 -1. - <_> - 8 0 6 10 2. - 0 - <_> - - <_> - 2 0 33 11 -1. - <_> - 13 0 11 11 3. - 0 - <_> - - <_> - 2 0 20 2 -1. - <_> - 2 1 20 1 2. - 0 - <_> - - <_> - 2 0 48 12 -1. - <_> - 26 0 24 12 2. - 0 - <_> - - <_> - 2 1 4 6 -1. - <_> - 2 1 2 3 2. - <_> - 4 4 2 3 2. - 0 - <_> - - <_> - 2 1 16 9 -1. - <_> - 10 1 8 9 2. - 0 - <_> - - <_> - 2 1 11 9 -1. - <_> - 2 4 11 3 3. - 0 - <_> - - <_> - 2 1 18 10 -1. - <_> - 2 6 18 5 2. - 0 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 2 3 16 1 -1. - <_> - 6 3 8 1 2. - 0 - <_> - - <_> - 2 3 25 6 -1. - <_> - 2 6 25 3 2. - 0 - <_> - - <_> - 2 4 4 2 -1. - <_> - 3 4 2 2 2. - 0 - <_> - - <_> - 2 5 2 8 -1. - <_> - 2 5 1 4 2. - <_> - 3 9 1 4 2. - 0 - <_> - - <_> - 2 5 6 4 -1. - <_> - 5 5 3 4 2. - 0 - <_> - - <_> - 2 5 10 8 -1. - <_> - 2 7 10 4 2. - 0 - <_> - - <_> - 2 7 4 6 -1. - <_> - 2 7 2 3 2. - <_> - 4 10 2 3 2. - 0 - <_> - - <_> - 2 7 4 4 -1. - <_> - 2 9 4 2 2. - 0 - <_> - - <_> - 2 8 14 2 -1. - <_> - 9 8 7 2 2. - 0 - <_> - - <_> - 2 8 24 5 -1. - <_> - 14 8 12 5 2. - 0 - <_> - - <_> - 2 9 8 3 -1. - <_> - 6 9 4 3 2. - 0 - <_> - - <_> - 2 9 12 4 -1. - <_> - 6 9 4 4 3. - 0 - <_> - - <_> - 2 9 32 4 -1. - <_> - 2 9 16 2 2. - <_> - 18 11 16 2 2. - 0 - <_> - - <_> - 2 10 12 2 -1. - <_> - 2 10 6 1 2. - <_> - 8 11 6 1 2. - 0 - <_> - - <_> - 2 11 38 1 -1. - <_> - 21 11 19 1 2. - 0 - <_> - - <_> - 2 12 32 1 -1. - <_> - 18 12 16 1 2. - 0 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - 0 - <_> - - <_> - 3 0 3 9 -1. - <_> - 4 3 1 3 9. - 0 - <_> - - <_> - 3 0 6 11 -1. - <_> - 5 0 2 11 3. - 0 - <_> - - <_> - 3 0 6 12 -1. - <_> - 5 0 2 12 3. - 0 - <_> - - <_> - 3 0 16 10 -1. - <_> - 11 0 8 10 2. - 0 - <_> - - <_> - 3 0 42 9 -1. - <_> - 17 3 14 3 9. - 0 - <_> - - <_> - 3 0 15 6 -1. - <_> - 3 3 15 3 2. - 0 - <_> - - <_> - 3 0 30 13 -1. - <_> - 18 0 15 13 2. - 0 - <_> - - <_> - 3 1 3 9 -1. - <_> - 4 1 1 9 3. - 0 - <_> - - <_> - 3 1 6 10 -1. - <_> - 5 1 2 10 3. - 0 - <_> - - <_> - 3 1 15 12 -1. - <_> - 8 5 5 4 9. - 0 - <_> - - <_> - 3 1 21 3 -1. - <_> - 10 1 7 3 3. - 0 - <_> - - <_> - 3 1 32 7 -1. - <_> - 11 1 16 7 2. - 0 - <_> - - <_> - 3 1 33 11 -1. - <_> - 14 1 11 11 3. - 0 - <_> - - <_> - 3 1 42 9 -1. - <_> - 17 4 14 3 9. - 0 - <_> - - <_> - 3 1 29 10 -1. - <_> - 3 6 29 5 2. - 0 - <_> - - <_> - 3 2 1 2 -1. - <_> - 3 2 1 1 2. - 1 - <_> - - <_> - 3 2 6 11 -1. - <_> - 5 2 2 11 3. - 0 - <_> - - <_> - 3 2 16 3 -1. - <_> - 7 2 8 3 2. - 0 - <_> - - <_> - 3 2 46 6 -1. - <_> - 3 5 46 3 2. - 0 - <_> - - <_> - 3 3 14 10 -1. - <_> - 10 3 7 10 2. - 0 - <_> - - <_> - 3 3 40 5 -1. - <_> - 13 3 20 5 2. - 0 - <_> - - <_> - 3 5 2 2 -1. - <_> - 4 5 1 2 2. - 0 - <_> - - <_> - 3 5 16 5 -1. - <_> - 7 5 8 5 2. - 0 - <_> - - <_> - 3 5 16 2 -1. - <_> - 3 5 8 1 2. - <_> - 11 6 8 1 2. - 0 - <_> - - <_> - 3 6 8 3 -1. - <_> - 7 6 4 3 2. - 0 - <_> - - <_> - 3 7 16 6 -1. - <_> - 11 7 8 6 2. - 0 - <_> - - <_> - 3 7 45 2 -1. - <_> - 3 8 45 1 2. - 0 - <_> - - <_> - 3 9 9 4 -1. - <_> - 6 9 3 4 3. - 0 - <_> - - <_> - 3 10 6 3 -1. - <_> - 5 11 2 1 9. - 0 - <_> - - <_> - 3 11 9 2 -1. - <_> - 3 12 9 1 2. - 0 - <_> - - <_> - 3 11 48 2 -1. - <_> - 3 12 48 1 2. - 0 - <_> - - <_> - 4 0 4 1 -1. - <_> - 4 0 2 1 2. - 1 - <_> - - <_> - 4 0 6 11 -1. - <_> - 6 0 2 11 3. - 0 - <_> - - <_> - 4 0 4 12 -1. - <_> - 4 3 4 6 2. - 0 - <_> - - <_> - 4 0 18 4 -1. - <_> - 10 0 6 4 3. - 0 - <_> - - <_> - 4 1 6 9 -1. - <_> - 6 1 2 9 3. - 0 - <_> - - <_> - 4 1 14 2 -1. - <_> - 11 1 7 2 2. - 0 - <_> - - <_> - 4 1 36 4 -1. - <_> - 22 1 18 4 2. - 0 - <_> - - <_> - 4 2 3 11 -1. - <_> - 5 2 1 11 3. - 0 - <_> - - <_> - 4 2 6 5 -1. - <_> - 6 2 2 5 3. - 0 - <_> - - <_> - 4 2 6 10 -1. - <_> - 6 2 2 10 3. - 0 - <_> - - <_> - 4 2 10 10 -1. - <_> - 4 2 5 5 2. - <_> - 9 7 5 5 2. - 0 - <_> - - <_> - 4 2 21 3 -1. - <_> - 11 2 7 3 3. - 0 - <_> - - <_> - 4 2 27 8 -1. - <_> - 4 4 27 4 2. - 0 - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 4 3 2 6 -1. - <_> - 4 5 2 2 3. - 0 - <_> - - <_> - 4 3 6 5 -1. - <_> - 6 3 2 5 3. - 0 - <_> - - <_> - 4 3 30 6 -1. - <_> - 14 5 10 2 9. - 0 - <_> - - <_> - 4 3 37 8 -1. - <_> - 4 5 37 4 2. - 0 - <_> - - <_> - 4 4 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 2 2. - 1 - <_> - - <_> - 4 4 7 3 -1. - <_> - 4 5 7 1 3. - 0 - <_> - - <_> - 4 4 23 9 -1. - <_> - 4 7 23 3 3. - 0 - <_> - - <_> - 4 5 5 4 -1. - <_> - 4 7 5 2 2. - 0 - <_> - - <_> - 4 7 42 4 -1. - <_> - 4 8 42 2 2. - 0 - <_> - - <_> - 4 8 16 1 -1. - <_> - 12 8 8 1 2. - 0 - <_> - - <_> - 4 9 24 4 -1. - <_> - 10 9 12 4 2. - 0 - <_> - - <_> - 4 10 10 2 -1. - <_> - 4 10 5 1 2. - <_> - 9 11 5 1 2. - 0 - <_> - - <_> - 4 10 7 2 -1. - <_> - 4 11 7 1 2. - 0 - <_> - - <_> - 5 0 16 8 -1. - <_> - 9 0 8 8 2. - 0 - <_> - - <_> - 5 0 24 13 -1. - <_> - 13 0 8 13 3. - 0 - <_> - - <_> - 5 1 8 12 -1. - <_> - 5 1 4 6 2. - <_> - 9 7 4 6 2. - 0 - <_> - - <_> - 5 1 36 12 -1. - <_> - 5 7 36 6 2. - 0 - <_> - - <_> - 5 2 3 10 -1. - <_> - 6 2 1 10 3. - 0 - <_> - - <_> - 5 2 6 6 -1. - <_> - 7 2 2 6 3. - 0 - <_> - - <_> - 5 2 3 6 -1. - <_> - 5 5 3 3 2. - 0 - <_> - - <_> - 5 2 12 9 -1. - <_> - 5 5 12 3 3. - 0 - <_> - - <_> - 5 2 34 8 -1. - <_> - 5 6 34 4 2. - 0 - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 3 1 6 3. - 0 - <_> - - <_> - 5 3 6 4 -1. - <_> - 7 3 2 4 3. - 0 - <_> - - <_> - 5 3 4 5 -1. - <_> - 7 3 2 5 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 7 3 2 6 2. - 0 - <_> - - <_> - 5 3 4 6 -1. - <_> - 5 6 4 3 2. - 0 - <_> - - <_> - 5 3 21 8 -1. - <_> - 12 3 7 8 3. - 0 - <_> - - <_> - 5 4 3 7 -1. - <_> - 6 4 1 7 3. - 0 - <_> - - <_> - 5 4 3 9 -1. - <_> - 6 4 1 9 3. - 0 - <_> - - <_> - 5 4 18 6 -1. - <_> - 11 6 6 2 9. - 0 - <_> - - <_> - 5 4 27 9 -1. - <_> - 14 7 9 3 9. - 0 - <_> - - <_> - 5 4 24 6 -1. - <_> - 17 4 12 6 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 6 5 2 2 2. - 0 - <_> - - <_> - 5 5 2 3 -1. - <_> - 6 5 1 3 2. - 0 - <_> - - <_> - 5 5 3 4 -1. - <_> - 6 5 1 4 3. - 0 - <_> - - <_> - 5 5 4 7 -1. - <_> - 6 5 2 7 2. - 0 - <_> - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 2 2. - 1 - <_> - - <_> - 5 5 6 4 -1. - <_> - 7 5 2 4 3. - 0 - <_> - - <_> - 5 5 4 4 -1. - <_> - 5 7 4 2 2. - 0 - <_> - - <_> - 5 6 4 6 -1. - <_> - 6 6 2 6 2. - 0 - <_> - - <_> - 5 6 12 2 -1. - <_> - 11 6 6 2 2. - 0 - <_> - - <_> - 5 7 3 6 -1. - <_> - 5 9 3 2 3. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 5 7 3 3 2. - <_> - 8 10 3 3 2. - 0 - <_> - - <_> - 5 7 6 6 -1. - <_> - 8 7 3 6 2. - 0 - <_> - - <_> - 5 7 12 6 -1. - <_> - 5 10 12 3 2. - 0 - <_> - - <_> - 5 9 9 4 -1. - <_> - 8 9 3 4 3. - 0 - <_> - - <_> - 5 10 6 2 -1. - <_> - 5 10 3 1 2. - <_> - 8 11 3 1 2. - 0 - <_> - - <_> - 5 10 20 3 -1. - <_> - 10 10 10 3 2. - 0 - <_> - - <_> - 5 11 16 2 -1. - <_> - 5 12 16 1 2. - 0 - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 3 6 1 2. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 4 2 3 2 3. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 6 0 3 5 2. - 1 - <_> - - <_> - 6 0 8 2 -1. - <_> - 6 0 4 1 2. - <_> - 10 1 4 1 2. - 0 - <_> - - <_> - 6 0 33 13 -1. - <_> - 17 0 11 13 3. - 0 - <_> - - <_> - 6 1 4 5 -1. - <_> - 7 1 2 5 2. - 0 - <_> - - <_> - 6 1 2 11 -1. - <_> - 7 1 1 11 2. - 0 - <_> - - <_> - 6 1 6 12 -1. - <_> - 8 1 2 12 3. - 0 - <_> - - <_> - 6 1 12 11 -1. - <_> - 12 1 6 11 2. - 0 - <_> - - <_> - 6 2 4 4 -1. - <_> - 7 2 2 4 2. - 0 - <_> - - <_> - 6 2 3 7 -1. - <_> - 7 2 1 7 3. - 0 - <_> - - <_> - 6 2 12 10 -1. - <_> - 12 2 6 10 2. - 0 - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 6 1 3 2. - 0 - <_> - - <_> - 6 3 3 8 -1. - <_> - 7 3 1 8 3. - 0 - <_> - - <_> - 6 3 37 6 -1. - <_> - 6 6 37 3 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 4 1 4 3. - 0 - <_> - - <_> - 6 4 8 2 -1. - <_> - 8 4 4 2 2. - 0 - <_> - - <_> - 6 4 3 4 -1. - <_> - 6 6 3 2 2. - 0 - <_> - - <_> - 6 4 3 6 -1. - <_> - 6 6 3 2 3. - 0 - <_> - - <_> - 6 4 9 9 -1. - <_> - 9 7 3 3 9. - 0 - <_> - - <_> - 6 6 4 5 -1. - <_> - 7 6 2 5 2. - 0 - <_> - - <_> - 6 6 4 6 -1. - <_> - 7 6 2 6 2. - 0 - <_> - - <_> - 6 9 6 4 -1. - <_> - 6 9 3 2 2. - <_> - 9 11 3 2 2. - 0 - <_> - - <_> - 6 10 20 3 -1. - <_> - 11 10 10 3 2. - 0 - <_> - - <_> - 6 11 7 2 -1. - <_> - 6 12 7 1 2. - 0 - <_> - - <_> - 6 11 17 2 -1. - <_> - 6 12 17 1 2. - 0 - <_> - - <_> - 7 0 12 1 -1. - <_> - 10 0 6 1 2. - 0 - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - 0 - <_> - - <_> - 7 0 32 9 -1. - <_> - 23 0 16 9 2. - 0 - <_> - - <_> - 7 0 38 13 -1. - <_> - 26 0 19 13 2. - 0 - <_> - - <_> - 7 1 4 2 -1. - <_> - 8 2 2 2 2. - 1 - <_> - - <_> - 7 1 16 10 -1. - <_> - 11 1 8 10 2. - 0 - <_> - - <_> - 7 1 15 6 -1. - <_> - 12 1 5 6 3. - 0 - <_> - - <_> - 7 1 15 8 -1. - <_> - 12 1 5 8 3. - 0 - <_> - - <_> - 7 1 15 11 -1. - <_> - 12 1 5 11 3. - 0 - <_> - - <_> - 7 1 7 6 -1. - <_> - 7 4 7 3 2. - 0 - <_> - - <_> - 7 2 1 4 -1. - <_> - 6 3 1 2 2. - 1 - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 3 2 2 2. - 1 - <_> - - <_> - 7 2 4 7 -1. - <_> - 8 3 2 7 2. - 1 - <_> - - <_> - 7 2 2 9 -1. - <_> - 8 2 1 9 2. - 0 - <_> - - <_> - 7 2 6 3 -1. - <_> - 9 3 2 1 9. - 0 - <_> - - <_> - 7 3 2 5 -1. - <_> - 8 3 1 5 2. - 0 - <_> - - <_> - 7 3 2 6 -1. - <_> - 8 3 1 6 2. - 0 - <_> - - <_> - 7 3 3 7 -1. - <_> - 8 3 1 7 3. - 0 - <_> - - <_> - 7 4 1 4 -1. - <_> - 7 5 1 2 2. - 0 - <_> - - <_> - 7 4 3 7 -1. - <_> - 8 4 1 7 3. - 0 - <_> - - <_> - 7 4 28 9 -1. - <_> - 21 4 14 9 2. - 0 - <_> - - <_> - 7 5 3 6 -1. - <_> - 8 5 1 6 3. - 0 - <_> - - <_> - 7 5 4 6 -1. - <_> - 8 5 2 6 2. - 0 - <_> - - <_> - 7 5 4 4 -1. - <_> - 7 5 2 2 2. - <_> - 9 7 2 2 2. - 0 - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - 0 - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 6 1 6 3. - 0 - <_> - - <_> - 7 10 4 2 -1. - <_> - 7 10 2 1 2. - <_> - 9 11 2 1 2. - 0 - <_> - - <_> - 7 10 6 2 -1. - <_> - 7 11 6 1 2. - 0 - <_> - - <_> - 7 11 36 2 -1. - <_> - 7 11 18 1 2. - <_> - 25 12 18 1 2. - 0 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 8 0 2 8 -1. - <_> - 8 0 1 8 2. - 1 - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 0 3 2 2. - <_> - 11 2 3 2 2. - 0 - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 0 4 1 2. - <_> - 12 1 4 1 2. - 0 - <_> - - <_> - 8 0 10 12 -1. - <_> - 13 0 5 12 2. - 0 - <_> - - <_> - 8 0 15 12 -1. - <_> - 13 0 5 12 3. - 0 - <_> - - <_> - 8 0 15 13 -1. - <_> - 13 0 5 13 3. - 0 - <_> - - <_> - 8 0 8 6 -1. - <_> - 8 3 8 3 2. - 0 - <_> - - <_> - 8 1 3 2 -1. - <_> - 9 2 1 2 3. - 1 - <_> - - <_> - 8 1 12 3 -1. - <_> - 12 1 4 3 3. - 0 - <_> - - <_> - 8 1 8 6 -1. - <_> - 12 1 4 6 2. - 0 - <_> - - <_> - 8 1 15 4 -1. - <_> - 13 1 5 4 3. - 0 - <_> - - <_> - 8 1 15 12 -1. - <_> - 13 1 5 12 3. - 0 - <_> - - <_> - 8 1 8 10 -1. - <_> - 8 6 8 5 2. - 0 - <_> - - <_> - 8 1 10 8 -1. - <_> - 8 3 10 4 2. - 0 - <_> - - <_> - 8 2 4 3 -1. - <_> - 9 2 2 3 2. - 0 - <_> - - <_> - 8 2 3 4 -1. - <_> - 9 2 1 4 3. - 0 - <_> - - <_> - 8 2 4 4 -1. - <_> - 9 2 2 4 2. - 0 - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - 0 - <_> - - <_> - 8 2 7 4 -1. - <_> - 8 4 7 2 2. - 0 - <_> - - <_> - 8 3 4 3 -1. - <_> - 9 3 2 3 2. - 0 - <_> - - <_> - 8 4 10 9 -1. - <_> - 13 4 5 9 2. - 0 - <_> - - <_> - 8 5 23 2 -1. - <_> - 8 6 23 1 2. - 0 - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 8 6 3 5 -1. - <_> - 9 6 1 5 3. - 0 - <_> - - <_> - 8 6 3 6 -1. - <_> - 9 6 1 6 3. - 0 - <_> - - <_> - 8 7 6 2 -1. - <_> - 11 7 3 2 2. - 0 - <_> - - <_> - 8 9 4 4 -1. - <_> - 8 11 4 2 2. - 0 - <_> - - <_> - 8 10 8 2 -1. - <_> - 8 11 8 1 2. - 0 - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - 0 - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - 0 - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 1 2 1 9. - 0 - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 0 2 2 2. - <_> - 11 2 2 2 2. - 0 - <_> - - <_> - 9 0 12 12 -1. - <_> - 13 0 4 12 3. - 0 - <_> - - <_> - 9 1 3 2 -1. - <_> - 10 2 1 2 3. - 1 - <_> - - <_> - 9 1 12 2 -1. - <_> - 13 1 4 2 3. - 0 - <_> - - <_> - 9 1 12 4 -1. - <_> - 13 1 4 4 3. - 0 - <_> - - <_> - 9 1 12 11 -1. - <_> - 13 1 4 11 3. - 0 - <_> - - <_> - 9 1 8 12 -1. - <_> - 13 1 4 12 2. - 0 - <_> - - <_> - 9 1 12 12 -1. - <_> - 13 1 4 12 3. - 0 - <_> - - <_> - 9 2 12 10 -1. - <_> - 13 2 4 10 3. - 0 - <_> - - <_> - 9 3 4 8 -1. - <_> - 9 7 4 4 2. - 0 - <_> - - <_> - 9 3 6 8 -1. - <_> - 9 7 6 4 2. - 0 - <_> - - <_> - 9 4 33 4 -1. - <_> - 9 5 33 2 2. - 0 - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 5 2 3 2. - <_> - 11 8 2 3 2. - 0 - <_> - - <_> - 9 7 8 6 -1. - <_> - 9 9 8 2 3. - 0 - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 9 1 1 9. - 0 - <_> - - <_> - 9 8 3 2 -1. - <_> - 10 9 1 2 3. - 1 - <_> - - <_> - 9 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 9 8 20 1 -1. - <_> - 19 8 10 1 2. - 0 - <_> - - <_> - 9 9 2 4 -1. - <_> - 9 11 2 2 2. - 0 - <_> - - <_> - 9 10 6 2 -1. - <_> - 9 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - <_> - - <_> - 9 10 16 3 -1. - <_> - 13 10 8 3 2. - 0 - <_> - - <_> - 9 10 42 3 -1. - <_> - 30 10 21 3 2. - 0 - <_> - - <_> - 9 12 42 1 -1. - <_> - 23 12 14 1 3. - 0 - <_> - - <_> - 10 0 12 2 -1. - <_> - 10 0 6 1 2. - <_> - 16 1 6 1 2. - 0 - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 1 8 1 2. - 0 - <_> - - <_> - 10 1 9 11 -1. - <_> - 13 1 3 11 3. - 0 - <_> - - <_> - 10 1 12 2 -1. - <_> - 14 1 4 2 3. - 0 - <_> - - <_> - 10 2 3 9 -1. - <_> - 11 5 1 3 9. - 0 - <_> - - <_> - 10 2 4 5 -1. - <_> - 11 2 2 5 2. - 0 - <_> - - <_> - 10 2 12 11 -1. - <_> - 13 2 6 11 2. - 0 - <_> - - <_> - 10 2 4 3 -1. - <_> - 9 3 4 1 3. - 1 - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 3 1 2 2. - <_> - 11 5 1 2 2. - 0 - <_> - - <_> - 10 4 8 1 -1. - <_> - 10 4 4 1 2. - 1 - <_> - - <_> - 10 6 4 4 -1. - <_> - 10 6 2 2 2. - <_> - 12 8 2 2 2. - 0 - <_> - - <_> - 10 6 6 5 -1. - <_> - 13 6 3 5 2. - 0 - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 9 2 2 3. - 0 - <_> - - <_> - 10 9 2 3 -1. - <_> - 10 10 2 1 3. - 0 - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - 0 - <_> - - <_> - 10 11 3 2 -1. - <_> - 10 12 3 1 2. - 0 - <_> - - <_> - 10 11 6 2 -1. - <_> - 10 12 6 1 2. - 0 - <_> - - <_> - 11 0 3 8 -1. - <_> - 11 4 3 4 2. - 0 - <_> - - <_> - 11 0 12 12 -1. - <_> - 15 0 4 12 3. - 0 - <_> - - <_> - 11 0 10 4 -1. - <_> - 11 0 5 2 2. - <_> - 16 2 5 2 2. - 0 - <_> - - <_> - 11 0 6 6 -1. - <_> - 11 3 6 3 2. - 0 - <_> - - <_> - 11 0 21 7 -1. - <_> - 18 0 7 7 3. - 0 - <_> - - <_> - 11 0 10 3 -1. - <_> - 10 1 10 1 3. - 1 - <_> - - <_> - 11 0 36 9 -1. - <_> - 29 0 18 9 2. - 0 - <_> - - <_> - 11 1 2 3 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 11 1 9 11 -1. - <_> - 14 1 3 11 3. - 0 - <_> - - <_> - 11 1 12 11 -1. - <_> - 15 1 4 11 3. - 0 - <_> - - <_> - 11 2 9 9 -1. - <_> - 14 5 3 3 9. - 0 - <_> - - <_> - 11 2 12 5 -1. - <_> - 14 2 6 5 2. - 0 - <_> - - <_> - 11 3 6 9 -1. - <_> - 13 6 2 3 9. - 0 - <_> - - <_> - 11 3 3 3 -1. - <_> - 10 4 3 1 3. - 1 - <_> - - <_> - 11 3 27 6 -1. - <_> - 11 6 27 3 2. - 0 - <_> - - <_> - 11 4 6 9 -1. - <_> - 13 7 2 3 9. - 0 - <_> - - <_> - 11 4 26 6 -1. - <_> - 11 7 26 3 2. - 0 - <_> - - <_> - 11 4 27 6 -1. - <_> - 11 7 27 3 2. - 0 - <_> - - <_> - 11 4 31 2 -1. - <_> - 11 5 31 1 2. - 0 - <_> - - <_> - 11 4 35 2 -1. - <_> - 11 5 35 1 2. - 0 - <_> - - <_> - 11 7 30 3 -1. - <_> - 21 8 10 1 9. - 0 - <_> - - <_> - 11 8 8 4 -1. - <_> - 13 8 4 4 2. - 0 - <_> - - <_> - 11 8 6 4 -1. - <_> - 11 10 6 2 2. - 0 - <_> - - <_> - 11 9 8 2 -1. - <_> - 13 9 4 2 2. - 0 - <_> - - <_> - 12 0 4 1 -1. - <_> - 14 0 2 1 2. - 0 - <_> - - <_> - 12 0 16 5 -1. - <_> - 16 0 8 5 2. - 0 - <_> - - <_> - 12 0 16 13 -1. - <_> - 16 0 8 13 2. - 0 - <_> - - <_> - 12 0 18 5 -1. - <_> - 18 0 6 5 3. - 0 - <_> - - <_> - 12 0 7 2 -1. - <_> - 12 1 7 1 2. - 0 - <_> - - <_> - 12 1 6 12 -1. - <_> - 14 5 2 4 9. - 0 - <_> - - <_> - 12 1 10 2 -1. - <_> - 17 1 5 2 2. - 0 - <_> - - <_> - 12 2 2 3 -1. - <_> - 12 2 1 3 2. - 1 - <_> - - <_> - 12 2 9 2 -1. - <_> - 15 2 3 2 3. - 0 - <_> - - <_> - 12 2 12 4 -1. - <_> - 16 2 4 4 3. - 0 - <_> - - <_> - 12 2 28 2 -1. - <_> - 19 2 14 2 2. - 0 - <_> - - <_> - 12 3 6 2 -1. - <_> - 14 5 2 2 3. - 1 - <_> - - <_> - 12 4 4 5 -1. - <_> - 13 5 2 5 2. - 1 - <_> - - <_> - 12 4 4 3 -1. - <_> - 12 4 2 3 2. - 1 - <_> - - <_> - 12 4 6 6 -1. - <_> - 14 4 2 6 3. - 0 - <_> - - <_> - 12 4 5 2 -1. - <_> - 12 5 5 1 2. - 0 - <_> - - <_> - 12 4 18 9 -1. - <_> - 18 7 6 3 9. - 0 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - 0 - <_> - - <_> - 12 5 18 6 -1. - <_> - 18 7 6 2 9. - 0 - <_> - - <_> - 12 7 21 3 -1. - <_> - 19 8 7 1 9. - 0 - <_> - - <_> - 12 12 6 1 -1. - <_> - 14 12 2 1 3. - 0 - <_> - - <_> - 12 12 39 1 -1. - <_> - 25 12 13 1 3. - 0 - <_> - - <_> - 13 0 16 5 -1. - <_> - 17 0 8 5 2. - 0 - <_> - - <_> - 13 0 5 8 -1. - <_> - 11 2 5 4 2. - 1 - <_> - - <_> - 13 0 24 10 -1. - <_> - 19 0 12 10 2. - 0 - <_> - - <_> - 13 0 36 3 -1. - <_> - 22 0 18 3 2. - 0 - <_> - - <_> - 13 0 28 1 -1. - <_> - 27 0 14 1 2. - 0 - <_> - - <_> - 13 1 8 3 -1. - <_> - 17 1 4 3 2. - 0 - <_> - - <_> - 13 1 8 6 -1. - <_> - 17 1 4 6 2. - 0 - <_> - - <_> - 13 1 20 7 -1. - <_> - 18 1 10 7 2. - 0 - <_> - - <_> - 13 1 36 1 -1. - <_> - 31 1 18 1 2. - 0 - <_> - - <_> - 13 1 20 3 -1. - <_> - 13 2 20 1 3. - 0 - <_> - - <_> - 13 2 14 1 -1. - <_> - 20 2 7 1 2. - 0 - <_> - - <_> - 13 3 3 8 -1. - <_> - 13 5 3 4 2. - 0 - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 4 4 1 2. - 0 - <_> - - <_> - 13 4 5 2 -1. - <_> - 13 5 5 1 2. - 0 - <_> - - <_> - 13 5 4 3 -1. - <_> - 13 5 2 3 2. - 1 - <_> - - <_> - 13 5 24 6 -1. - <_> - 19 5 12 6 2. - 0 - <_> - - <_> - 13 5 32 6 -1. - <_> - 13 8 32 3 2. - 0 - <_> - - <_> - 13 6 1 3 -1. - <_> - 12 7 1 1 3. - 1 - <_> - - <_> - 13 6 3 6 -1. - <_> - 13 8 3 2 3. - 0 - <_> - - <_> - 13 7 3 4 -1. - <_> - 13 9 3 2 2. - 0 - <_> - - <_> - 13 8 6 2 -1. - <_> - 13 9 6 1 2. - 0 - <_> - - <_> - 13 9 10 4 -1. - <_> - 18 9 5 4 2. - 0 - <_> - - <_> - 13 9 18 4 -1. - <_> - 19 9 6 4 3. - 0 - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - 0 - <_> - - <_> - 14 0 1 8 -1. - <_> - 14 4 1 4 2. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 4 1 4 3. - 0 - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 6 1 6 2. - 0 - <_> - - <_> - 14 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 18 2 4 2 2. - 0 - <_> - - <_> - 14 0 12 6 -1. - <_> - 18 2 4 2 9. - 0 - <_> - - <_> - 14 0 16 4 -1. - <_> - 18 0 8 4 2. - 0 - <_> - - <_> - 14 1 1 4 -1. - <_> - 14 3 1 2 2. - 0 - <_> - - <_> - 14 1 2 4 -1. - <_> - 14 2 2 2 2. - 0 - <_> - - <_> - 14 1 2 12 -1. - <_> - 14 7 2 6 2. - 0 - <_> - - <_> - 14 2 2 8 -1. - <_> - 14 4 2 4 2. - 0 - <_> - - <_> - 14 2 2 9 -1. - <_> - 14 5 2 3 3. - 0 - <_> - - <_> - 14 2 18 4 -1. - <_> - 14 2 9 2 2. - <_> - 23 4 9 2 2. - 0 - <_> - - <_> - 14 3 12 9 -1. - <_> - 14 6 12 3 3. - 0 - <_> - - <_> - 14 4 2 1 -1. - <_> - 15 4 1 1 2. - 0 - <_> - - <_> - 14 4 16 1 -1. - <_> - 22 4 8 1 2. - 0 - <_> - - <_> - 14 5 2 4 -1. - <_> - 14 6 2 2 2. - 0 - <_> - - <_> - 14 5 2 6 -1. - <_> - 14 8 2 3 2. - 0 - <_> - - <_> - 14 5 3 4 -1. - <_> - 14 6 3 2 2. - 0 - <_> - - <_> - 14 5 3 6 -1. - <_> - 14 8 3 3 2. - 0 - <_> - - <_> - 14 5 4 3 -1. - <_> - 13 6 4 1 3. - 1 - <_> - - <_> - 14 6 3 4 -1. - <_> - 14 8 3 2 2. - 0 - <_> - - <_> - 14 7 3 2 -1. - <_> - 14 8 3 1 2. - 0 - <_> - - <_> - 14 8 2 3 -1. - <_> - 15 8 1 3 2. - 0 - <_> - - <_> - 14 8 9 2 -1. - <_> - 17 8 3 2 3. - 0 - <_> - - <_> - 14 8 6 4 -1. - <_> - 17 8 3 4 2. - 0 - <_> - - <_> - 14 9 2 2 -1. - <_> - 14 10 2 1 2. - 0 - <_> - - <_> - 14 9 16 4 -1. - <_> - 18 9 8 4 2. - 0 - <_> - - <_> - 14 11 15 2 -1. - <_> - 19 11 5 2 3. - 0 - <_> - - <_> - 14 12 2 1 -1. - <_> - 15 12 1 1 2. - 0 - <_> - - <_> - 14 12 3 1 -1. - <_> - 15 12 1 1 3. - 0 - <_> - - <_> - 15 0 4 1 -1. - <_> - 16 0 2 1 2. - 0 - <_> - - <_> - 15 0 10 2 -1. - <_> - 20 0 5 2 2. - 0 - <_> - - <_> - 15 0 15 2 -1. - <_> - 20 0 5 2 3. - 0 - <_> - - <_> - 15 0 33 9 -1. - <_> - 15 3 33 3 3. - 0 - <_> - - <_> - 15 1 1 12 -1. - <_> - 15 7 1 6 2. - 0 - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - 0 - <_> - - <_> - 15 1 36 2 -1. - <_> - 33 1 18 2 2. - 0 - <_> - - <_> - 15 2 1 9 -1. - <_> - 15 5 1 3 3. - 0 - <_> - - <_> - 15 2 3 4 -1. - <_> - 15 4 3 2 2. - 0 - <_> - - <_> - 15 2 9 9 -1. - <_> - 18 5 3 3 9. - 0 - <_> - - <_> - 15 2 24 6 -1. - <_> - 15 2 12 3 2. - <_> - 27 5 12 3 2. - 0 - <_> - - <_> - 15 3 4 3 -1. - <_> - 16 4 2 3 2. - 1 - <_> - - <_> - 15 3 4 6 -1. - <_> - 15 6 4 3 2. - 0 - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 6 3 2 2. - 0 - <_> - - <_> - 15 4 6 3 -1. - <_> - 14 5 6 1 3. - 1 - <_> - - <_> - 15 6 4 4 -1. - <_> - 15 6 2 2 2. - <_> - 17 8 2 2 2. - 0 - <_> - - <_> - 15 8 1 3 -1. - <_> - 15 9 1 1 3. - 0 - <_> - - <_> - 15 8 15 5 -1. - <_> - 20 8 5 5 3. - 0 - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - 0 - <_> - - <_> - 15 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 16 10 1 1 2. - 0 - <_> - - <_> - 15 10 13 3 -1. - <_> - 15 11 13 1 3. - 0 - <_> - - <_> - 15 10 34 3 -1. - <_> - 15 11 34 1 3. - 0 - <_> - - <_> - 15 11 35 2 -1. - <_> - 15 12 35 1 2. - 0 - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 16 0 4 8 -1. - <_> - 16 0 2 8 2. - 1 - <_> - - <_> - 16 0 12 1 -1. - <_> - 19 0 6 1 2. - 0 - <_> - - <_> - 16 0 6 6 -1. - <_> - 14 2 6 2 3. - 1 - <_> - - <_> - 16 0 26 4 -1. - <_> - 29 0 13 4 2. - 0 - <_> - - <_> - 16 1 18 12 -1. - <_> - 22 1 6 12 3. - 0 - <_> - - <_> - 16 1 18 2 -1. - <_> - 16 2 18 1 2. - 0 - <_> - - <_> - 16 2 4 5 -1. - <_> - 16 2 2 5 2. - 1 - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - 0 - <_> - - <_> - 16 5 5 3 -1. - <_> - 15 6 5 1 3. - 1 - <_> - - <_> - 16 9 15 4 -1. - <_> - 21 9 5 4 3. - 0 - <_> - - <_> - 16 9 18 4 -1. - <_> - 22 9 6 4 3. - 0 - <_> - - <_> - 17 0 1 6 -1. - <_> - 15 2 1 2 3. - 1 - <_> - - <_> - 17 0 6 2 -1. - <_> - 17 1 6 1 2. - 0 - <_> - - <_> - 17 0 18 5 -1. - <_> - 23 0 6 5 3. - 0 - <_> - - <_> - 17 0 8 2 -1. - <_> - 17 1 8 1 2. - 0 - <_> - - <_> - 17 0 11 4 -1. - <_> - 17 2 11 2 2. - 0 - <_> - - <_> - 17 0 16 3 -1. - <_> - 17 1 16 1 3. - 0 - <_> - - <_> - 17 0 17 3 -1. - <_> - 17 1 17 1 3. - 0 - <_> - - <_> - 17 0 19 2 -1. - <_> - 17 1 19 1 2. - 0 - <_> - - <_> - 17 0 20 4 -1. - <_> - 17 1 20 2 2. - 0 - <_> - - <_> - 17 0 32 8 -1. - <_> - 17 4 32 4 2. - 0 - <_> - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - 0 - <_> - - <_> - 17 7 8 1 -1. - <_> - 21 7 4 1 2. - 0 - <_> - - <_> - 17 7 21 3 -1. - <_> - 17 8 21 1 3. - 0 - <_> - - <_> - 17 7 28 6 -1. - <_> - 17 9 28 2 3. - 0 - <_> - - <_> - 18 0 3 1 -1. - <_> - 19 0 1 1 3. - 0 - <_> - - <_> - 18 0 2 5 -1. - <_> - 18 0 1 5 2. - 1 - <_> - - <_> - 18 0 3 4 -1. - <_> - 18 2 3 2 2. - 0 - <_> - - <_> - 18 0 11 2 -1. - <_> - 18 1 11 1 2. - 0 - <_> - - <_> - 18 0 18 3 -1. - <_> - 18 1 18 1 3. - 0 - <_> - - <_> - 18 1 17 2 -1. - <_> - 18 2 17 1 2. - 0 - <_> - - <_> - 18 2 4 4 -1. - <_> - 19 2 2 4 2. - 0 - <_> - - <_> - 18 2 2 6 -1. - <_> - 16 4 2 2 3. - 1 - <_> - - <_> - 18 2 6 4 -1. - <_> - 20 2 2 4 3. - 0 - <_> - - <_> - 18 3 3 2 -1. - <_> - 19 3 1 2 3. - 0 - <_> - - <_> - 18 7 4 3 -1. - <_> - 19 7 2 3 2. - 0 - <_> - - <_> - 18 8 4 2 -1. - <_> - 19 8 2 2 2. - 0 - <_> - - <_> - 18 8 4 3 -1. - <_> - 19 8 2 3 2. - 0 - <_> - - <_> - 18 10 27 3 -1. - <_> - 18 11 27 1 3. - 0 - <_> - - <_> - 19 0 2 1 -1. - <_> - 20 0 1 1 2. - 0 - <_> - - <_> - 19 0 3 1 -1. - <_> - 20 0 1 1 3. - 0 - <_> - - <_> - 19 0 3 8 -1. - <_> - 20 1 1 8 3. - 1 - <_> - - <_> - 19 1 3 6 -1. - <_> - 20 3 1 2 9. - 0 - <_> - - <_> - 19 1 9 12 -1. - <_> - 22 1 3 12 3. - 0 - <_> - - <_> - 19 1 17 2 -1. - <_> - 19 2 17 1 2. - 0 - <_> - - <_> - 19 3 6 2 -1. - <_> - 21 3 2 2 3. - 0 - <_> - - <_> - 19 4 4 4 -1. - <_> - 19 4 2 2 2. - <_> - 21 6 2 2 2. - 0 - <_> - - <_> - 19 12 2 1 -1. - <_> - 20 12 1 1 2. - 0 - <_> - - <_> - 20 0 4 1 -1. - <_> - 21 0 2 1 2. - 0 - <_> - - <_> - 20 0 4 11 -1. - <_> - 21 0 2 11 2. - 0 - <_> - - <_> - 20 0 6 1 -1. - <_> - 22 0 2 1 3. - 0 - <_> - - <_> - 20 0 12 12 -1. - <_> - 24 0 4 12 3. - 0 - <_> - - <_> - 20 0 12 3 -1. - <_> - 26 0 6 3 2. - 0 - <_> - - <_> - 20 0 18 3 -1. - <_> - 26 0 6 3 3. - 0 - <_> - - <_> - 20 0 18 4 -1. - <_> - 29 0 9 4 2. - 0 - <_> - - <_> - 20 0 26 1 -1. - <_> - 33 0 13 1 2. - 0 - <_> - - <_> - 20 0 22 4 -1. - <_> - 20 1 22 2 2. - 0 - <_> - - <_> - 20 2 3 2 -1. - <_> - 21 3 1 2 3. - 1 - <_> - - <_> - 20 3 4 8 -1. - <_> - 21 3 2 8 2. - 0 - <_> - - <_> - 20 4 3 9 -1. - <_> - 21 7 1 3 9. - 0 - <_> - - <_> - 20 5 3 5 -1. - <_> - 21 5 1 5 3. - 0 - <_> - - <_> - 20 5 4 8 -1. - <_> - 22 5 2 8 2. - 0 - <_> - - <_> - 20 6 3 2 -1. - <_> - 21 7 1 2 3. - 1 - <_> - - <_> - 20 6 4 2 -1. - <_> - 21 7 2 2 2. - 1 - <_> - - <_> - 20 6 24 6 -1. - <_> - 20 9 24 3 2. - 0 - <_> - - <_> - 20 8 4 2 -1. - <_> - 21 8 2 2 2. - 0 - <_> - - <_> - 20 9 4 4 -1. - <_> - 20 9 2 2 2. - <_> - 22 11 2 2 2. - 0 - <_> - - <_> - 20 9 18 4 -1. - <_> - 26 9 6 4 3. - 0 - <_> - - <_> - 20 12 4 1 -1. - <_> - 21 12 2 1 2. - 0 - <_> - - <_> - 21 0 2 6 -1. - <_> - 21 0 1 3 2. - <_> - 22 3 1 3 2. - 0 - <_> - - <_> - 21 0 4 2 -1. - <_> - 21 1 4 1 2. - 0 - <_> - - <_> - 21 0 28 1 -1. - <_> - 28 0 14 1 2. - 0 - <_> - - <_> - 21 0 21 4 -1. - <_> - 28 0 7 4 3. - 0 - <_> - - <_> - 21 0 14 5 -1. - <_> - 28 0 7 5 2. - 0 - <_> - - <_> - 21 1 4 11 -1. - <_> - 22 1 2 11 2. - 0 - <_> - - <_> - 21 2 25 9 -1. - <_> - 21 5 25 3 3. - 0 - <_> - - <_> - 21 3 4 9 -1. - <_> - 22 3 2 9 2. - 0 - <_> - - <_> - 21 3 6 1 -1. - <_> - 23 3 2 1 3. - 0 - <_> - - <_> - 21 6 4 2 -1. - <_> - 22 7 2 2 2. - 1 - <_> - - <_> - 21 7 3 2 -1. - <_> - 22 8 1 2 3. - 1 - <_> - - <_> - 21 7 3 3 -1. - <_> - 22 8 1 3 3. - 1 - <_> - - <_> - 21 7 6 4 -1. - <_> - 23 7 2 4 3. - 0 - <_> - - <_> - 21 10 21 3 -1. - <_> - 28 10 7 3 3. - 0 - <_> - - <_> - 21 10 18 3 -1. - <_> - 21 11 18 1 3. - 0 - <_> - - <_> - 21 12 30 1 -1. - <_> - 36 12 15 1 2. - 0 - <_> - - <_> - 22 0 4 1 -1. - <_> - 23 0 2 1 2. - 0 - <_> - - <_> - 22 0 8 1 -1. - <_> - 24 0 4 1 2. - 0 - <_> - - <_> - 22 0 12 4 -1. - <_> - 25 0 6 4 2. - 0 - <_> - - <_> - 22 0 15 2 -1. - <_> - 27 0 5 2 3. - 0 - <_> - - <_> - 22 0 28 2 -1. - <_> - 36 0 14 2 2. - 0 - <_> - - <_> - 22 1 15 2 -1. - <_> - 27 1 5 2 3. - 0 - <_> - - <_> - 22 1 8 3 -1. - <_> - 21 2 8 1 3. - 1 - <_> - - <_> - 22 2 3 3 -1. - <_> - 23 2 1 3 3. - 0 - <_> - - <_> - 22 2 3 9 -1. - <_> - 23 2 1 9 3. - 0 - <_> - - <_> - 22 2 3 10 -1. - <_> - 23 2 1 10 3. - 0 - <_> - - <_> - 22 5 3 3 -1. - <_> - 22 6 3 1 3. - 0 - <_> - - <_> - 22 6 2 3 -1. - <_> - 22 7 2 1 3. - 0 - <_> - - <_> - 22 7 2 3 -1. - <_> - 22 8 2 1 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 8 1 2 3. - 0 - <_> - - <_> - 22 8 3 2 -1. - <_> - 23 9 1 2 3. - 1 - <_> - - <_> - 22 8 2 2 -1. - <_> - 22 9 2 1 2. - 0 - <_> - - <_> - 22 9 4 4 -1. - <_> - 22 9 2 2 2. - <_> - 24 11 2 2 2. - 0 - <_> - - <_> - 22 9 9 2 -1. - <_> - 25 9 3 2 3. - 0 - <_> - - <_> - 22 9 6 4 -1. - <_> - 25 9 3 4 2. - 0 - <_> - - <_> - 22 9 9 4 -1. - <_> - 25 9 3 4 3. - 0 - <_> - - <_> - 22 10 6 2 -1. - <_> - 22 10 3 1 2. - <_> - 25 11 3 1 2. - 0 - <_> - - <_> - 23 0 3 1 -1. - <_> - 24 0 1 1 3. - 0 - <_> - - <_> - 23 0 6 1 -1. - <_> - 25 0 2 1 3. - 0 - <_> - - <_> - 23 0 4 4 -1. - <_> - 23 0 2 2 2. - <_> - 25 2 2 2 2. - 0 - <_> - - <_> - 23 0 8 12 -1. - <_> - 25 0 4 12 2. - 0 - <_> - - <_> - 23 0 12 1 -1. - <_> - 26 0 6 1 2. - 0 - <_> - - <_> - 23 0 21 2 -1. - <_> - 23 1 21 1 2. - 0 - <_> - - <_> - 23 2 12 10 -1. - <_> - 29 2 6 10 2. - 0 - <_> - - <_> - 23 3 4 2 -1. - <_> - 24 3 2 2 2. - 0 - <_> - - <_> - 23 4 2 4 -1. - <_> - 22 5 2 2 2. - 1 - <_> - - <_> - 23 4 12 9 -1. - <_> - 27 4 4 9 3. - 0 - <_> - - <_> - 23 5 1 3 -1. - <_> - 23 6 1 1 3. - 0 - <_> - - <_> - 23 6 9 1 -1. - <_> - 26 6 3 1 3. - 0 - <_> - - <_> - 23 8 4 3 -1. - <_> - 24 8 2 3 2. - 0 - <_> - - <_> - 23 9 4 1 -1. - <_> - 24 9 2 1 2. - 0 - <_> - - <_> - 23 9 8 4 -1. - <_> - 25 9 4 4 2. - 0 - <_> - - <_> - 23 9 12 4 -1. - <_> - 26 9 6 4 2. - 0 - <_> - - <_> - 23 11 6 2 -1. - <_> - 23 11 3 1 2. - <_> - 26 12 3 1 2. - 0 - <_> - - <_> - 24 0 3 1 -1. - <_> - 25 0 1 1 3. - 0 - <_> - - <_> - 24 0 4 1 -1. - <_> - 25 0 2 1 2. - 0 - <_> - - <_> - 24 0 4 6 -1. - <_> - 24 0 2 3 2. - <_> - 26 3 2 3 2. - 0 - <_> - - <_> - 24 0 17 2 -1. - <_> - 24 1 17 1 2. - 0 - <_> - - <_> - 24 0 22 2 -1. - <_> - 24 1 22 1 2. - 0 - <_> - - <_> - 24 1 4 4 -1. - <_> - 24 1 2 2 2. - <_> - 26 3 2 2 2. - 0 - <_> - - <_> - 24 1 13 2 -1. - <_> - 24 2 13 1 2. - 0 - <_> - - <_> - 24 2 2 2 -1. - <_> - 24 2 1 1 2. - <_> - 25 3 1 1 2. - 0 - <_> - - <_> - 24 6 6 1 -1. - <_> - 26 6 2 1 3. - 0 - <_> - - <_> - 24 7 4 6 -1. - <_> - 24 7 2 3 2. - <_> - 26 10 2 3 2. - 0 - <_> - - <_> - 24 8 2 5 -1. - <_> - 25 8 1 5 2. - 0 - <_> - - <_> - 24 9 15 4 -1. - <_> - 29 9 5 4 3. - 0 - <_> - - <_> - 24 10 27 3 -1. - <_> - 24 11 27 1 3. - 0 - <_> - - <_> - 25 0 3 1 -1. - <_> - 26 0 1 1 3. - 0 - <_> - - <_> - 25 0 3 2 -1. - <_> - 26 1 1 2 3. - 1 - <_> - - <_> - 25 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 25 0 8 1 -1. - <_> - 27 0 4 1 2. - 0 - <_> - - <_> - 25 0 26 3 -1. - <_> - 25 1 26 1 3. - 0 - <_> - - <_> - 25 1 2 4 -1. - <_> - 25 1 1 2 2. - <_> - 26 3 1 2 2. - 0 - <_> - - <_> - 25 1 3 2 -1. - <_> - 26 2 1 2 3. - 1 - <_> - - <_> - 25 2 3 2 -1. - <_> - 26 3 1 2 3. - 1 - <_> - - <_> - 25 4 4 1 -1. - <_> - 26 4 2 1 2. - 0 - <_> - - <_> - 25 4 4 6 -1. - <_> - 25 4 2 3 2. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 25 6 3 6 -1. - <_> - 26 8 1 2 9. - 0 - <_> - - <_> - 25 7 4 2 -1. - <_> - 26 7 2 2 2. - 0 - <_> - - <_> - 25 8 4 2 -1. - <_> - 26 8 2 2 2. - 0 - <_> - - <_> - 25 9 3 3 -1. - <_> - 26 9 1 3 3. - 0 - <_> - - <_> - 25 9 13 4 -1. - <_> - 25 11 13 2 2. - 0 - <_> - - <_> - 25 10 2 2 -1. - <_> - 25 11 2 1 2. - 0 - <_> - - <_> - 26 0 3 1 -1. - <_> - 27 0 1 1 3. - 0 - <_> - - <_> - 26 0 4 1 -1. - <_> - 27 0 2 1 2. - 0 - <_> - - <_> - 26 0 1 12 -1. - <_> - 23 3 1 6 2. - 1 - <_> - - <_> - 26 0 18 13 -1. - <_> - 32 0 6 13 3. - 0 - <_> - - <_> - 26 0 18 2 -1. - <_> - 35 0 9 2 2. - 0 - <_> - - <_> - 26 2 1 6 -1. - <_> - 26 4 1 2 3. - 0 - <_> - - <_> - 26 2 2 2 -1. - <_> - 26 2 1 2 2. - 1 - <_> - - <_> - 26 2 3 2 -1. - <_> - 27 3 1 2 3. - 1 - <_> - - <_> - 26 2 5 3 -1. - <_> - 25 3 5 1 3. - 1 - <_> - - <_> - 26 2 10 4 -1. - <_> - 26 3 10 2 2. - 0 - <_> - - <_> - 26 3 4 6 -1. - <_> - 26 3 2 3 2. - <_> - 28 6 2 3 2. - 0 - <_> - - <_> - 26 3 5 3 -1. - <_> - 25 4 5 1 3. - 1 - <_> - - <_> - 26 4 4 6 -1. - <_> - 26 4 2 3 2. - <_> - 28 7 2 3 2. - 0 - <_> - - <_> - 26 5 4 2 -1. - <_> - 26 5 2 1 2. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 5 4 4 -1. - <_> - 26 5 2 2 2. - <_> - 28 7 2 2 2. - 0 - <_> - - <_> - 26 6 1 6 -1. - <_> - 26 8 1 2 3. - 0 - <_> - - <_> - 26 6 4 1 -1. - <_> - 28 6 2 1 2. - 0 - <_> - - <_> - 26 7 4 3 -1. - <_> - 27 7 2 3 2. - 0 - <_> - - <_> - 26 7 4 6 -1. - <_> - 26 7 2 3 2. - <_> - 28 10 2 3 2. - 0 - <_> - - <_> - 26 7 18 6 -1. - <_> - 32 7 6 6 3. - 0 - <_> - - <_> - 26 7 17 6 -1. - <_> - 26 10 17 3 2. - 0 - <_> - - <_> - 26 8 3 1 -1. - <_> - 27 8 1 1 3. - 0 - <_> - - <_> - 26 9 12 4 -1. - <_> - 29 9 6 4 2. - 0 - <_> - - <_> - 26 11 20 1 -1. - <_> - 36 11 10 1 2. - 0 - <_> - - <_> - 27 0 2 1 -1. - <_> - 28 0 1 1 2. - 0 - <_> - - <_> - 27 0 3 1 -1. - <_> - 28 0 1 1 3. - 0 - <_> - - <_> - 27 0 4 1 -1. - <_> - 29 0 2 1 2. - 0 - <_> - - <_> - 27 0 18 2 -1. - <_> - 27 0 9 1 2. - <_> - 36 1 9 1 2. - 0 - <_> - - <_> - 27 1 3 3 -1. - <_> - 28 2 1 3 3. - 1 - <_> - - <_> - 27 1 6 11 -1. - <_> - 29 1 2 11 3. - 0 - <_> - - <_> - 27 1 14 10 -1. - <_> - 34 1 7 10 2. - 0 - <_> - - <_> - 27 2 3 2 -1. - <_> - 28 3 1 2 3. - 1 - <_> - - <_> - 27 2 3 9 -1. - <_> - 28 2 1 9 3. - 0 - <_> - - <_> - 27 2 5 4 -1. - <_> - 26 3 5 2 2. - 1 - <_> - - <_> - 27 3 3 6 -1. - <_> - 28 3 1 6 3. - 0 - <_> - - <_> - 27 3 3 9 -1. - <_> - 28 3 1 9 3. - 0 - <_> - - <_> - 27 3 13 4 -1. - <_> - 27 5 13 2 2. - 0 - <_> - - <_> - 27 6 3 2 -1. - <_> - 28 7 1 2 3. - 1 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 7 1 2 3. - 0 - <_> - - <_> - 27 7 3 2 -1. - <_> - 28 8 1 2 3. - 1 - <_> - - <_> - 28 0 3 1 -1. - <_> - 29 0 1 1 3. - 0 - <_> - - <_> - 28 0 4 12 -1. - <_> - 29 0 2 12 2. - 0 - <_> - - <_> - 28 0 10 3 -1. - <_> - 28 0 5 3 2. - 1 - <_> - - <_> - 28 0 15 13 -1. - <_> - 33 0 5 13 3. - 0 - <_> - - <_> - 28 1 2 10 -1. - <_> - 29 1 1 10 2. - 0 - <_> - - <_> - 28 1 4 11 -1. - <_> - 29 1 2 11 2. - 0 - <_> - - <_> - 28 2 4 10 -1. - <_> - 29 2 2 10 2. - 0 - <_> - - <_> - 28 2 7 3 -1. - <_> - 27 3 7 1 3. - 1 - <_> - - <_> - 28 3 4 9 -1. - <_> - 29 3 2 9 2. - 0 - <_> - - <_> - 28 3 23 8 -1. - <_> - 28 5 23 4 2. - 0 - <_> - - <_> - 28 4 1 6 -1. - <_> - 28 7 1 3 2. - 0 - <_> - - <_> - 28 4 3 6 -1. - <_> - 28 6 3 2 3. - 0 - <_> - - <_> - 28 5 4 2 -1. - <_> - 30 5 2 2 2. - 0 - <_> - - <_> - 28 5 20 6 -1. - <_> - 28 8 20 3 2. - 0 - <_> - - <_> - 28 6 1 4 -1. - <_> - 27 7 1 2 2. - 1 - <_> - - <_> - 28 6 3 3 -1. - <_> - 29 7 1 3 3. - 1 - <_> - - <_> - 28 7 3 1 -1. - <_> - 29 8 1 1 3. - 1 - <_> - - <_> - 28 7 4 3 -1. - <_> - 28 8 4 1 3. - 0 - <_> - - <_> - 28 7 12 2 -1. - <_> - 28 8 12 1 2. - 0 - <_> - - <_> - 28 8 2 1 -1. - <_> - 28 8 1 1 2. - 1 - <_> - - <_> - 28 8 3 1 -1. - <_> - 29 9 1 1 3. - 1 - <_> - - <_> - 28 11 14 2 -1. - <_> - 28 11 7 1 2. - <_> - 35 12 7 1 2. - 0 - <_> - - <_> - 29 0 3 1 -1. - <_> - 30 0 1 1 3. - 0 - <_> - - <_> - 29 0 4 1 -1. - <_> - 30 0 2 1 2. - 0 - <_> - - <_> - 29 2 3 8 -1. - <_> - 30 2 1 8 3. - 0 - <_> - - <_> - 29 3 3 9 -1. - <_> - 30 3 1 9 3. - 0 - <_> - - <_> - 29 5 2 3 -1. - <_> - 29 6 2 1 3. - 0 - <_> - - <_> - 29 5 3 4 -1. - <_> - 29 6 3 2 2. - 0 - <_> - - <_> - 29 7 3 2 -1. - <_> - 30 8 1 2 3. - 1 - <_> - - <_> - 29 7 3 3 -1. - <_> - 30 8 1 3 3. - 1 - <_> - - <_> - 29 8 4 2 -1. - <_> - 30 8 2 2 2. - 0 - <_> - - <_> - 29 8 2 2 -1. - <_> - 29 8 1 2 2. - 1 - <_> - - <_> - 29 8 3 2 -1. - <_> - 30 9 1 2 3. - 1 - <_> - - <_> - 29 9 15 4 -1. - <_> - 34 9 5 4 3. - 0 - <_> - - <_> - 29 11 22 2 -1. - <_> - 40 11 11 2 2. - 0 - <_> - - <_> - 29 12 2 1 -1. - <_> - 30 12 1 1 2. - 0 - <_> - - <_> - 29 12 3 1 -1. - <_> - 30 12 1 1 3. - 0 - <_> - - <_> - 30 0 3 1 -1. - <_> - 31 0 1 1 3. - 0 - <_> - - <_> - 30 0 4 1 -1. - <_> - 31 0 2 1 2. - 0 - <_> - - <_> - 30 0 9 2 -1. - <_> - 33 3 3 2 3. - 1 - <_> - - <_> - 30 0 20 3 -1. - <_> - 35 0 10 3 2. - 0 - <_> - - <_> - 30 0 16 2 -1. - <_> - 30 1 16 1 2. - 0 - <_> - - <_> - 30 1 4 2 -1. - <_> - 30 1 2 1 2. - <_> - 32 2 2 1 2. - 0 - <_> - - <_> - 30 1 8 12 -1. - <_> - 32 1 4 12 2. - 0 - <_> - - <_> - 30 2 8 1 -1. - <_> - 32 2 4 1 2. - 0 - <_> - - <_> - 30 2 6 2 -1. - <_> - 32 2 2 2 3. - 0 - <_> - - <_> - 30 2 7 3 -1. - <_> - 29 3 7 1 3. - 1 - <_> - - <_> - 30 4 4 4 -1. - <_> - 31 4 2 4 2. - 0 - <_> - - <_> - 30 6 3 4 -1. - <_> - 30 6 3 2 2. - 1 - <_> - - <_> - 30 7 12 6 -1. - <_> - 33 7 6 6 2. - 0 - <_> - - <_> - 30 8 18 3 -1. - <_> - 36 9 6 1 9. - 0 - <_> - - <_> - 30 9 4 2 -1. - <_> - 31 9 2 2 2. - 0 - <_> - - <_> - 30 9 12 4 -1. - <_> - 33 9 6 4 2. - 0 - <_> - - <_> - 30 12 3 1 -1. - <_> - 31 12 1 1 3. - 0 - <_> - - <_> - 31 0 3 1 -1. - <_> - 32 0 1 1 3. - 0 - <_> - - <_> - 31 0 4 1 -1. - <_> - 32 0 2 1 2. - 0 - <_> - - <_> - 31 0 5 2 -1. - <_> - 31 1 5 1 2. - 0 - <_> - - <_> - 31 0 12 2 -1. - <_> - 31 0 6 1 2. - <_> - 37 1 6 1 2. - 0 - <_> - - <_> - 31 0 12 3 -1. - <_> - 31 1 12 1 3. - 0 - <_> - - <_> - 31 2 4 4 -1. - <_> - 31 2 2 2 2. - <_> - 33 4 2 2 2. - 0 - <_> - - <_> - 31 3 3 9 -1. - <_> - 31 6 3 3 3. - 0 - <_> - - <_> - 31 3 8 2 -1. - <_> - 31 3 4 2 2. - 1 - <_> - - <_> - 31 5 3 6 -1. - <_> - 32 7 1 2 9. - 0 - <_> - - <_> - 31 7 3 3 -1. - <_> - 32 7 1 3 3. - 0 - <_> - - <_> - 31 9 2 4 -1. - <_> - 31 9 1 2 2. - <_> - 32 11 1 2 2. - 0 - <_> - - <_> - 32 0 3 1 -1. - <_> - 33 0 1 1 3. - 0 - <_> - - <_> - 32 0 3 2 -1. - <_> - 33 0 1 2 3. - 0 - <_> - - <_> - 32 0 3 3 -1. - <_> - 33 1 1 3 3. - 1 - <_> - - <_> - 32 0 3 4 -1. - <_> - 32 1 3 2 2. - 0 - <_> - - <_> - 32 0 8 1 -1. - <_> - 36 0 4 1 2. - 0 - <_> - - <_> - 32 0 17 3 -1. - <_> - 32 1 17 1 3. - 0 - <_> - - <_> - 32 0 17 4 -1. - <_> - 32 1 17 2 2. - 0 - <_> - - <_> - 32 0 18 3 -1. - <_> - 32 1 18 1 3. - 0 - <_> - - <_> - 32 0 19 3 -1. - <_> - 32 1 19 1 3. - 0 - <_> - - <_> - 32 1 3 6 -1. - <_> - 33 3 1 2 9. - 0 - <_> - - <_> - 32 1 3 2 -1. - <_> - 33 2 1 2 3. - 1 - <_> - - <_> - 32 1 12 1 -1. - <_> - 36 1 4 1 3. - 0 - <_> - - <_> - 32 1 8 2 -1. - <_> - 32 1 4 1 2. - <_> - 36 2 4 1 2. - 0 - <_> - - <_> - 32 1 19 9 -1. - <_> - 32 4 19 3 3. - 0 - <_> - - <_> - 32 2 2 2 -1. - <_> - 32 3 2 1 2. - 0 - <_> - - <_> - 32 3 4 3 -1. - <_> - 33 3 2 3 2. - 0 - <_> - - <_> - 32 7 4 2 -1. - <_> - 33 7 2 2 2. - 0 - <_> - - <_> - 32 9 3 1 -1. - <_> - 33 9 1 1 3. - 0 - <_> - - <_> - 32 9 3 3 -1. - <_> - 33 10 1 1 9. - 0 - <_> - - <_> - 32 11 3 2 -1. - <_> - 32 12 3 1 2. - 0 - <_> - - <_> - 33 0 3 3 -1. - <_> - 34 1 1 3 3. - 1 - <_> - - <_> - 33 0 3 4 -1. - <_> - 34 1 1 4 3. - 1 - <_> - - <_> - 33 0 12 1 -1. - <_> - 37 0 4 1 3. - 0 - <_> - - <_> - 33 0 16 1 -1. - <_> - 37 0 8 1 2. - 0 - <_> - - <_> - 33 0 10 1 -1. - <_> - 38 0 5 1 2. - 0 - <_> - - <_> - 33 0 9 2 -1. - <_> - 33 1 9 1 2. - 0 - <_> - - <_> - 33 0 17 4 -1. - <_> - 33 1 17 2 2. - 0 - <_> - - <_> - 33 1 1 2 -1. - <_> - 33 2 1 1 2. - 0 - <_> - - <_> - 33 1 3 2 -1. - <_> - 34 2 1 2 3. - 1 - <_> - - <_> - 33 1 4 2 -1. - <_> - 34 2 2 2 2. - 1 - <_> - - <_> - 33 1 17 2 -1. - <_> - 33 2 17 1 2. - 0 - <_> - - <_> - 33 2 1 3 -1. - <_> - 33 3 1 1 3. - 0 - <_> - - <_> - 33 2 3 2 -1. - <_> - 34 3 1 2 3. - 1 - <_> - - <_> - 33 2 13 9 -1. - <_> - 33 5 13 3 3. - 0 - <_> - - <_> - 33 5 3 3 -1. - <_> - 34 6 1 1 9. - 0 - <_> - - <_> - 33 5 1 8 -1. - <_> - 33 7 1 4 2. - 0 - <_> - - <_> - 33 6 3 1 -1. - <_> - 34 7 1 1 3. - 1 - <_> - - <_> - 33 7 3 1 -1. - <_> - 34 8 1 1 3. - 1 - <_> - - <_> - 33 7 4 4 -1. - <_> - 33 7 2 2 2. - <_> - 35 9 2 2 2. - 0 - <_> - - <_> - 33 8 2 3 -1. - <_> - 32 9 2 1 3. - 1 - <_> - - <_> - 33 8 6 3 -1. - <_> - 35 8 2 3 3. - 0 - <_> - - <_> - 33 8 16 4 -1. - <_> - 33 10 16 2 2. - 0 - <_> - - <_> - 33 9 2 4 -1. - <_> - 33 11 2 2 2. - 0 - <_> - - <_> - 33 9 4 4 -1. - <_> - 33 9 2 2 2. - <_> - 35 11 2 2 2. - 0 - <_> - - <_> - 33 10 1 2 -1. - <_> - 33 11 1 1 2. - 0 - <_> - - <_> - 34 0 1 3 -1. - <_> - 33 1 1 1 3. - 1 - <_> - - <_> - 34 0 3 11 -1. - <_> - 35 0 1 11 3. - 0 - <_> - - <_> - 34 0 4 4 -1. - <_> - 34 0 2 4 2. - 1 - <_> - - <_> - 34 0 16 1 -1. - <_> - 38 0 8 1 2. - 0 - <_> - - <_> - 34 0 14 1 -1. - <_> - 41 0 7 1 2. - 0 - <_> - - <_> - 34 1 15 6 -1. - <_> - 39 1 5 6 3. - 0 - <_> - - <_> - 34 2 3 2 -1. - <_> - 35 3 1 2 3. - 1 - <_> - - <_> - 34 2 3 8 -1. - <_> - 35 2 1 8 3. - 0 - <_> - - <_> - 34 3 4 4 -1. - <_> - 35 3 2 4 2. - 0 - <_> - - <_> - 34 3 4 7 -1. - <_> - 35 3 2 7 2. - 0 - <_> - - <_> - 34 5 3 2 -1. - <_> - 35 6 1 2 3. - 1 - <_> - - <_> - 34 5 4 2 -1. - <_> - 35 6 2 2 2. - 1 - <_> - - <_> - 34 5 3 4 -1. - <_> - 35 5 1 4 3. - 0 - <_> - - <_> - 34 5 6 8 -1. - <_> - 36 5 2 8 3. - 0 - <_> - - <_> - 34 6 3 1 -1. - <_> - 35 7 1 1 3. - 1 - <_> - - <_> - 34 6 3 2 -1. - <_> - 35 7 1 2 3. - 1 - <_> - - <_> - 34 6 6 5 -1. - <_> - 36 6 2 5 3. - 0 - <_> - - <_> - 34 7 4 2 -1. - <_> - 35 7 2 2 2. - 0 - <_> - - <_> - 34 7 3 2 -1. - <_> - 35 8 1 2 3. - 1 - <_> - - <_> - 34 7 4 3 -1. - <_> - 35 7 2 3 2. - 0 - <_> - - <_> - 35 0 3 12 -1. - <_> - 36 0 1 12 3. - 0 - <_> - - <_> - 35 0 4 1 -1. - <_> - 37 0 2 1 2. - 0 - <_> - - <_> - 35 0 12 1 -1. - <_> - 41 0 6 1 2. - 0 - <_> - - <_> - 35 0 14 4 -1. - <_> - 35 0 7 2 2. - <_> - 42 2 7 2 2. - 0 - <_> - - <_> - 35 1 4 12 -1. - <_> - 36 1 2 12 2. - 0 - <_> - - <_> - 35 2 3 4 -1. - <_> - 36 3 1 4 3. - 1 - <_> - - <_> - 35 2 4 6 -1. - <_> - 36 2 2 6 2. - 0 - <_> - - <_> - 35 4 3 3 -1. - <_> - 35 5 3 1 3. - 0 - <_> - - <_> - 35 5 2 4 -1. - <_> - 36 5 1 4 2. - 0 - <_> - - <_> - 35 5 4 7 -1. - <_> - 36 5 2 7 2. - 0 - <_> - - <_> - 35 5 15 5 -1. - <_> - 40 5 5 5 3. - 0 - <_> - - <_> - 35 7 3 1 -1. - <_> - 36 8 1 1 3. - 1 - <_> - - <_> - 35 7 3 2 -1. - <_> - 36 8 1 2 3. - 1 - <_> - - <_> - 35 8 2 2 -1. - <_> - 35 8 1 2 2. - 1 - <_> - - <_> - 35 10 15 3 -1. - <_> - 35 11 15 1 3. - 0 - <_> - - <_> - 35 11 5 2 -1. - <_> - 35 12 5 1 2. - 0 - <_> - - <_> - 35 11 6 2 -1. - <_> - 35 12 6 1 2. - 0 - <_> - - <_> - 36 0 14 1 -1. - <_> - 43 0 7 1 2. - 0 - <_> - - <_> - 36 1 4 2 -1. - <_> - 36 1 2 1 2. - <_> - 38 2 2 1 2. - 0 - <_> - - <_> - 36 2 4 10 -1. - <_> - 37 2 2 10 2. - 0 - <_> - - <_> - 36 4 4 6 -1. - <_> - 37 4 2 6 2. - 0 - <_> - - <_> - 36 4 3 6 -1. - <_> - 36 4 3 3 2. - 1 - <_> - - <_> - 36 4 6 3 -1. - <_> - 35 5 6 1 3. - 1 - <_> - - <_> - 36 6 3 3 -1. - <_> - 37 7 1 3 3. - 1 - <_> - - <_> - 36 9 4 2 -1. - <_> - 38 9 2 2 2. - 0 - <_> - - <_> - 36 10 4 1 -1. - <_> - 37 10 2 1 2. - 0 - <_> - - <_> - 36 10 6 3 -1. - <_> - 39 10 3 3 2. - 0 - <_> - - <_> - 37 0 2 3 -1. - <_> - 36 1 2 1 3. - 1 - <_> - - <_> - 37 0 4 4 -1. - <_> - 37 0 2 2 2. - <_> - 39 2 2 2 2. - 0 - <_> - - <_> - 37 1 4 5 -1. - <_> - 38 2 2 5 2. - 1 - <_> - - <_> - 37 1 9 9 -1. - <_> - 37 4 9 3 3. - 0 - <_> - - <_> - 37 3 8 4 -1. - <_> - 37 5 8 2 2. - 0 - <_> - - <_> - 37 4 4 1 -1. - <_> - 38 4 2 1 2. - 0 - <_> - - <_> - 37 4 4 4 -1. - <_> - 38 4 2 4 2. - 0 - <_> - - <_> - 37 5 8 8 -1. - <_> - 39 5 4 8 2. - 0 - <_> - - <_> - 37 9 6 4 -1. - <_> - 37 9 3 2 2. - <_> - 40 11 3 2 2. - 0 - <_> - - <_> - 37 10 4 2 -1. - <_> - 37 10 2 1 2. - <_> - 39 11 2 1 2. - 0 - <_> - - <_> - 37 10 8 3 -1. - <_> - 39 10 4 3 2. - 0 - <_> - - <_> - 37 10 5 3 -1. - <_> - 37 11 5 1 3. - 0 - <_> - - <_> - 38 0 4 1 -1. - <_> - 40 0 2 1 2. - 0 - <_> - - <_> - 38 1 12 2 -1. - <_> - 38 2 12 1 2. - 0 - <_> - - <_> - 38 4 6 1 -1. - <_> - 40 4 2 1 3. - 0 - <_> - - <_> - 38 6 6 6 -1. - <_> - 40 8 2 2 9. - 0 - <_> - - <_> - 38 9 6 1 -1. - <_> - 40 9 2 1 3. - 0 - <_> - - <_> - 38 11 1 2 -1. - <_> - 38 12 1 1 2. - 0 - <_> - - <_> - 39 0 2 4 -1. - <_> - 39 1 2 2 2. - 0 - <_> - - <_> - 39 0 10 3 -1. - <_> - 39 1 10 1 3. - 0 - <_> - - <_> - 39 1 11 2 -1. - <_> - 39 2 11 1 2. - 0 - <_> - - <_> - 39 4 4 4 -1. - <_> - 40 4 2 4 2. - 0 - <_> - - <_> - 39 6 3 6 -1. - <_> - 40 8 1 2 9. - 0 - <_> - - <_> - 39 7 4 3 -1. - <_> - 40 7 2 3 2. - 0 - <_> - - <_> - 39 8 4 2 -1. - <_> - 40 8 2 2 2. - 0 - <_> - - <_> - 39 11 12 2 -1. - <_> - 45 11 6 2 2. - 0 - <_> - - <_> - 40 0 1 3 -1. - <_> - 40 1 1 1 3. - 0 - <_> - - <_> - 40 0 3 3 -1. - <_> - 40 1 3 1 3. - 0 - <_> - - <_> - 40 0 5 2 -1. - <_> - 40 1 5 1 2. - 0 - <_> - - <_> - 40 0 8 3 -1. - <_> - 40 1 8 1 3. - 0 - <_> - - <_> - 40 5 4 2 -1. - <_> - 42 5 2 2 2. - 0 - <_> - - <_> - 40 6 4 1 -1. - <_> - 41 7 2 1 2. - 1 - <_> - - <_> - 40 8 4 2 -1. - <_> - 41 8 2 2 2. - 0 - <_> - - <_> - 40 10 9 2 -1. - <_> - 40 11 9 1 2. - 0 - <_> - - <_> - 41 0 6 12 -1. - <_> - 43 0 2 12 3. - 0 - <_> - - <_> - 41 0 4 2 -1. - <_> - 41 1 4 1 2. - 0 - <_> - - <_> - 41 1 3 4 -1. - <_> - 42 2 1 4 3. - 1 - <_> - - <_> - 41 1 6 9 -1. - <_> - 41 4 6 3 3. - 0 - <_> - - <_> - 41 5 4 5 -1. - <_> - 42 5 2 5 2. - 0 - <_> - - <_> - 41 5 4 6 -1. - <_> - 42 5 2 6 2. - 0 - <_> - - <_> - 41 6 3 2 -1. - <_> - 42 7 1 2 3. - 1 - <_> - - <_> - 41 6 4 5 -1. - <_> - 42 6 2 5 2. - 0 - <_> - - <_> - 41 7 3 1 -1. - <_> - 42 8 1 1 3. - 1 - <_> - - <_> - 41 7 2 3 -1. - <_> - 41 8 2 1 3. - 0 - <_> - - <_> - 41 8 3 1 -1. - <_> - 42 8 1 1 3. - 0 - <_> - - <_> - 41 8 3 2 -1. - <_> - 42 9 1 2 3. - 1 - <_> - - <_> - 41 8 4 4 -1. - <_> - 41 8 2 2 2. - <_> - 43 10 2 2 2. - 0 - <_> - - <_> - 41 10 1 2 -1. - <_> - 41 11 1 1 2. - 0 - <_> - - <_> - 42 7 3 2 -1. - <_> - 43 8 1 2 3. - 1 - <_> - - <_> - 42 7 3 3 -1. - <_> - 43 8 1 3 3. - 1 - <_> - - <_> - 42 8 2 2 -1. - <_> - 42 8 1 2 2. - 1 - <_> - - <_> - 42 9 2 4 -1. - <_> - 42 9 1 2 2. - <_> - 43 11 1 2 2. - 0 - <_> - - <_> - 42 9 2 2 -1. - <_> - 42 9 1 2 2. - 1 - <_> - - <_> - 43 4 8 9 -1. - <_> - 47 4 4 9 2. - 0 - <_> - - <_> - 43 5 2 3 -1. - <_> - 43 6 2 1 3. - 0 - <_> - - <_> - 43 5 4 4 -1. - <_> - 43 5 4 2 2. - 1 - <_> - - <_> - 43 5 8 8 -1. - <_> - 47 5 4 8 2. - 0 - <_> - - <_> - 43 7 3 3 -1. - <_> - 44 8 1 3 3. - 1 - <_> - - <_> - 43 9 8 2 -1. - <_> - 45 9 4 2 2. - 0 - <_> - - <_> - 43 10 8 3 -1. - <_> - 45 10 4 3 2. - 0 - <_> - - <_> - 43 12 3 1 -1. - <_> - 44 12 1 1 3. - 0 - <_> - - <_> - 44 2 1 10 -1. - <_> - 44 7 1 5 2. - 0 - <_> - - <_> - 44 2 4 4 -1. - <_> - 44 2 2 2 2. - <_> - 46 4 2 2 2. - 0 - <_> - - <_> - 44 2 5 6 -1. - <_> - 44 5 5 3 2. - 0 - <_> - - <_> - 44 4 6 2 -1. - <_> - 46 4 2 2 3. - 0 - <_> - - <_> - 44 7 4 2 -1. - <_> - 45 7 2 2 2. - 0 - <_> - - <_> - 44 7 4 4 -1. - <_> - 45 7 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 46 5 2 4 2. - 0 - <_> - - <_> - 45 5 4 4 -1. - <_> - 45 5 2 2 2. - <_> - 47 7 2 2 2. - 0 - <_> - - <_> - 45 6 6 3 -1. - <_> - 47 7 2 1 9. - 0 - <_> - - <_> - 45 8 6 1 -1. - <_> - 47 8 2 1 3. - 0 - <_> - - <_> - 46 0 1 3 -1. - <_> - 46 1 1 1 3. - 0 - <_> - - <_> - 46 0 2 2 -1. - <_> - 46 1 2 1 2. - 0 - <_> - - <_> - 46 0 2 4 -1. - <_> - 46 2 2 2 2. - 0 - <_> - - <_> - 46 1 3 4 -1. - <_> - 46 2 3 2 2. - 0 - <_> - - <_> - 46 3 3 3 -1. - <_> - 47 4 1 1 9. - 0 - <_> - - <_> - 46 5 3 3 -1. - <_> - 47 6 1 1 9. - 0 - <_> - - <_> - 46 5 2 6 -1. - <_> - 46 7 2 2 3. - 0 - <_> - - <_> - 46 6 3 6 -1. - <_> - 47 8 1 2 9. - 0 - <_> - - <_> - 47 0 2 2 -1. - <_> - 47 1 2 1 2. - 0 - <_> - - <_> - 47 1 1 4 -1. - <_> - 47 2 1 2 2. - 0 - <_> - - <_> - 47 2 1 6 -1. - <_> - 47 4 1 2 3. - 0 - <_> - - <_> - 47 4 1 6 -1. - <_> - 47 6 1 2 3. - 0 - <_> - - <_> - 47 4 4 2 -1. - <_> - 49 4 2 2 2. - 0 - <_> - - <_> - 47 4 2 6 -1. - <_> - 47 6 2 2 3. - 0 - <_> - - <_> - 47 8 3 1 -1. - <_> - 48 9 1 1 3. - 1 - <_> - - <_> - 47 9 1 4 -1. - <_> - 47 11 1 2 2. - 0 - <_> - - <_> - 47 9 2 4 -1. - <_> - 47 11 2 2 2. - 0 - <_> - - <_> - 48 0 3 6 -1. - <_> - 48 3 3 3 2. - 0 - <_> - - <_> - 48 1 3 2 -1. - <_> - 49 2 1 2 3. - 1 - <_> - - <_> - 48 1 3 12 -1. - <_> - 49 1 1 12 3. - 0 - <_> - - <_> - 48 5 3 7 -1. - <_> - 49 5 1 7 3. - 0 - <_> - - <_> - 48 5 3 8 -1. - <_> - 49 5 1 8 3. - 0 - <_> - - <_> - 48 6 3 2 -1. - <_> - 49 7 1 2 3. - 1 - <_> - - <_> - 48 8 3 2 -1. - <_> - 49 9 1 2 3. - 1 - <_> - - <_> - 49 0 2 2 -1. - <_> - 50 0 1 2 2. - 0 - <_> - - <_> - 49 0 2 8 -1. - <_> - 50 0 1 8 2. - 0 - <_> - - <_> - 49 11 2 2 -1. - <_> - 50 11 1 2 2. - 0 - <_> - - <_> - 50 1 1 3 -1. - <_> - 50 2 1 1 3. - 0 - <_> - - <_> - 50 4 1 3 -1. - <_> - 50 5 1 1 3. - 0 - diff --git a/model/cascade_lbp.xml b/model/cascade_lbp.xml deleted file mode 100644 index 1117b89..0000000 --- a/model/cascade_lbp.xml +++ /dev/null @@ -1,842 +0,0 @@ - - - - BOOST - LBP - 16 - 64 - - GAB - 9.9500000476837158e-01 - 5.0000000000000000e-01 - 9.4999999999999996e-01 - 1 - 25 - - 256 - 1 - 13 - - - <_> - 4 - -1.6219481229782104e+00 - - <_> - - 0 -1 43 -2561 -234882069 -578037494 -3147793 -203032597 - 1902231761 -3407926 -2049 - - -7.8116589784622192e-01 6.8186044692993164e-01 - <_> - - 0 -1 57 352326928 1058083280 1502920181 -6613668 -1735873027 - -1141159777 -1142412372 -1157101560 - - -7.9259228706359863e-01 6.2141162157058716e-01 - <_> - - 0 -1 28 -50 -586226738 -552468344 -110118166 -717113442 - 21449 1474142699 1442839519 - - -7.1683514118194580e-01 6.0926103591918945e-01 - <_> - - 0 -1 3 -1054002 -460394782 -286332350 -487653842 -134742175 - 74798917 -545795120 -176179201 - - -6.4934897422790527e-01 6.6864526271820068e-01 - - <_> - 5 - -1.2461665868759155e+00 - - <_> - - 0 -1 40 -134217745 -235407873 -767164534 -9442626 -134744129 - 1358279167 -1572882 -167772417 - - -8.2479608058929443e-01 4.7822877764701843e-01 - <_> - - 0 -1 7 -1845456648 -585870960 319829493 -45086460 -922740488 - -776006 -1433921089 1000341512 - - -7.0899802446365356e-01 5.1915192604064941e-01 - <_> - - 0 -1 81 -67371134 -487394324 -649661312 -1031543834 - -1149046011 34820455 2002998528 -764152457 - - -7.0243948698043823e-01 5.5623692274093628e-01 - <_> - - 0 -1 52 605031448 -1084468744 -1655103491 2147294680 - -1316447491 -637769064 -1074216962 -1144512372 - - -7.3613041639328003e-01 5.2777582406997681e-01 - <_> - - 0 -1 74 -17825814 -209070806 1224757760 1301260154 - -243867776 537980928 822665600 1453848575 - - -7.6585876941680908e-01 5.4007095098495483e-01 - - <_> - 5 - -1.0288889408111572e+00 - - <_> - - 0 -1 45 -142606337 -234884105 -942669937 -168820737 - -738200065 -235472937 -526384 -2057 - - -7.3661798238754272e-01 4.7879859805107117e-01 - <_> - - 0 -1 26 -1600126800 -183469583 124855 -78637583 -133643336 - -1129276228 -1952969795 -1469053824 - - -7.1075737476348877e-01 4.3283107876777649e-01 - <_> - - 0 -1 2 -17830162 -523507506 -335297938 -989868310 -672663705 - 1651099457 -144248732 -144193705 - - -6.8117302656173706e-01 5.0106960535049438e-01 - <_> - - 0 -1 14 -167772178 -4341761 -537399902 -4117 -167905793 - -1795293185 1442162154 -1276139602 - - -5.5162549018859863e-01 5.6729644536972046e-01 - <_> - - 0 -1 0 286273977 1901156160 1976515063 1475813144 692299752 - -843064354 2005724111 231539854 - - -5.9739047288894653e-01 5.3236293792724609e-01 - - <_> - 5 - -1.2924413681030273e+00 - - <_> - - 0 -1 37 -2097153 -235144257 -545392210 -33572114 -16780289 - 1910626738 -1 -2109697 - - -7.6233702898025513e-01 3.0888170003890991e-01 - <_> - - 0 -1 36 -258 -175194962 -135991606 -738599954 -136863745 - 366325164 2013083647 2012741631 - - -7.0845782756805420e-01 4.1357228159904480e-01 - <_> - - 0 -1 82 -536870966 -536613905 -1852834560 -1027083697 - -1955475901 22082080 1935632198 -212339385 - - -5.8534580469131470e-01 4.9082395434379578e-01 - <_> - - 0 -1 63 -4196358 -179655702 1326732016 301789054 -186638920 - 1174458592 226521599 1464860671 - - -7.0115524530410767e-01 4.0752482414245605e-01 - <_> - - 0 -1 56 344981520 -136703748 356261887 -163428 796983036 - -72533315 -1115116035 780141600 - - -7.1504431962966919e-01 4.2116415500640869e-01 - - <_> - 5 - -1.1838985681533813e+00 - - <_> - - 0 -1 46 -67110917 -202115085 -271581201 -336592945 - -143140905 -201984013 -3407928 -2097185 - - -7.0421242713928223e-01 3.7325173616409302e-01 - <_> - - 0 -1 55 352326877 2003836272 -1617349227 1058474396 - 747657468 -41936696 479268351 455090176 - - -6.5891182422637939e-01 4.0733435750007629e-01 - <_> - - 0 -1 35 -68158522 -420809853 -2142795414 -531650130 - 1605890899 74375236 1962914631 -1048595537 - - -5.8815896511077881e-01 4.4766652584075928e-01 - <_> - - 0 -1 66 270536848 -720105612 1574215605 -1118474876 - -1309562435 -17718535 -1417101588 480510216 - - -6.9849157333374023e-01 3.8642087578773499e-01 - <_> - - 0 -1 83 -2134 -409219102 -855378432 -960304344 -1279021055 - 69585478 1405350480 -168296489 - - -6.0635018348693848e-01 4.3005070090293884e-01 - - <_> - 6 - -1.8914896249771118e+00 - - <_> - - 0 -1 48 -134219777 -788532525 -812650611 -1048593 -150998049 - -239602953 -2097204 -2177 - - -7.1383845806121826e-01 3.2626426219940186e-01 - <_> - - 0 -1 61 -1048594 -607129886 -487669600 -141563137 -136579627 - 1077113951 -638069761 -136315521 - - -5.5788379907608032e-01 4.3335753679275513e-01 - <_> - - 0 -1 60 1015027472 1065203709 -75 -1073881153 -57885763 - -88097793 -67356484 -1097200384 - - -6.2508052587509155e-01 3.9868113398551941e-01 - <_> - - 0 -1 8 -454234450 -318771793 -1284575442 -17830674 - -1040451841 -184827938 -196 1961355182 - - -7.3622447252273560e-01 3.3065965771675110e-01 - <_> - - 0 -1 21 -269484068 -33607937 -309449564 1060105967 - -239086164 351597820 -1517504612 1912370687 - - -7.0256131887435913e-01 3.3312633633613586e-01 - <_> - - 0 -1 71 -1050758 -5312152 1166557700 992935900 1736637342 - 860234746 161275919 2131755007 - - -6.1535042524337769e-01 3.6958575248718262e-01 - - <_> - 6 - -1.7857444286346436e+00 - - <_> - - 0 -1 18 -33597695 -16777351 2143250303 -67108865 -51445761 - -353435649 -529138753 -520094209 - - -7.5571727752685547e-01 1.9621904194355011e-01 - <_> - - 0 -1 77 -6166 -22028630 -1867890622 -208930962 -257952369 - 1694687690 -710676022 -676593681 - - -5.7280772924423218e-01 3.8669580221176147e-01 - <_> - - 0 -1 72 -4197398 -13667294 1264456776 520898368 -236866168 - 1017143276 287104651 2131754991 - - -6.6346269845962524e-01 3.3237108588218689e-01 - <_> - - 0 -1 39 -143130677 -235151367 -135405656 -1052726 -135202887 - 1901097317 -663602 -236987138 - - -5.5477285385131836e-01 3.9316710829734802e-01 - <_> - - 0 -1 65 83891216 2111053808 -1758445707 -1076331011 - -1186415942 -34267768 1072316092 1010306064 - - -7.1728479862213135e-01 3.6254638433456421e-01 - <_> - - 0 -1 67 -1082 1715970504 1179800832 1409279439 1903162828 - 1141306437 -757074473 -792726017 - - -5.5629384517669678e-01 3.9846968650817871e-01 - - <_> - 7 - -2.2031784057617188e+00 - - <_> - - 0 -1 11 -2301 -8519809 -144966345 -8388737 -17039361 - -889196545 -234950661 -855703553 - - -6.9055068492889404e-01 2.6715686917304993e-01 - <_> - - 0 -1 4 -1052950 -1030756626 1719921160 -892344210 -403215392 - 1145536103 -144186425 -145229969 - - -6.1277091503143311e-01 3.3642357587814331e-01 - <_> - - 0 -1 59 286531033 2098207187 1602043383 -1080477187 - 763371006 -537104396 -1175175713 794824808 - - -5.6694328784942627e-01 3.9781469106674194e-01 - <_> - - 0 -1 47 -134219777 -266078729 -1053010 -202441777 -671090829 - -252189705 -138421290 -201853577 - - -5.0729566812515259e-01 4.4068849086761475e-01 - <_> - - 0 -1 27 -234883080 223281098 -67191924 -536895489 1966425827 - 1107107294 1911366826 1912600478 - - -6.2338167428970337e-01 3.5619020462036133e-01 - <_> - - 0 -1 13 17914830 930939132 2064627679 2012686036 851311614 - 867926958 1870789886 999286414 - - -6.3150572776794434e-01 3.1903952360153198e-01 - <_> - - 0 -1 33 136839352 1566392105 320846289 -6316560 1264845256 - -310635363 1001921756 -16707584 - - -5.1506024599075317e-01 3.9011520147323608e-01 - - <_> - 8 - -1.7945843935012817e+00 - - <_> - - 0 -1 12 1398267901 2147439612 2123268094 -151554 1609564158 - -1094717490 -536936450 -2 - - -6.9123697280883789e-01 2.4225576221942902e-01 - <_> - - 0 -1 19 288649975 1896962996 2147358687 -2755801 1995717118 - -45818920 -5591569 -1410850678 - - -5.0494408607482910e-01 3.8951012492179871e-01 - <_> - - 0 -1 25 2009589607 2013210605 -854692018 -538983793 - 2007497719 837252003 1087274958 2012479430 - - -5.8543336391448975e-01 3.5037690401077271e-01 - <_> - - 0 -1 44 -235146869 -791101327 -808456274 -355467793 - -243272351 1365733749 -40903860 -202381833 - - -6.2743508815765381e-01 3.0872401595115662e-01 - <_> - - 0 -1 69 -187194750 -949043 71655182 -674369691 -605047809 - -135273794 1667695530 1407134219 - - -6.2414431571960449e-01 3.2251501083374023e-01 - <_> - - 0 -1 38 2230525 -135137994 -976214793 -135232159 -1292857608 - -34534659 -1266151425 -1391460176 - - -4.6821090579032898e-01 4.0499693155288696e-01 - <_> - - 0 -1 5 -3223809 -319881490 -827446787 -522134804 1969192959 - -917472815 1527129084 -596115457 - - -4.4530543684959412e-01 4.5620110630989075e-01 - <_> - - 0 -1 70 -269484046 -5976 -1394343700 265170172 -983433284 - 1613669713 774045688 1422913527 - - -6.2135016918182373e-01 3.1382775306701660e-01 - - <_> - 7 - -1.3709685802459717e+00 - - <_> - - 0 -1 53 288627701 -539716099 -1080189441 -5377221 -198147 - -19267681 -1077347329 -1078052480 - - -7.3079609870910645e-01 1.3688945770263672e-01 - <_> - - 0 -1 31 -101188633 2046427005 -879759474 -406213026 - -177474373 1347479032 -5645426 -704709665 - - -6.4822560548782349e-01 2.8430926799774170e-01 - <_> - - 0 -1 23 -79716865 -12726529 -1346466401 -1618014737 - -1246112259 1894838525 -1109410565 -4327171 - - -3.9296570420265198e-01 5.5672270059585571e-01 - <_> - - 0 -1 62 -2 -505680692 1156072780 1223288575 -852013125 - 912326647 1144182782 1173618679 - - -5.9236258268356323e-01 3.3399465680122375e-01 - <_> - - 0 -1 32 -574640434 -573771794 -1188549526 -103946518 - 865156840 86802270 2004682734 905399423 - - -6.8310183286666870e-01 2.9013493657112122e-01 - <_> - - 0 -1 29 -1608481027 -193948235 -1374540865 -174836947 - -1939801614 -436954268 -5239873 -1357379910 - - -4.5706689357757568e-01 3.9714139699935913e-01 - <_> - - 0 -1 51 -162535922 1965750879 1716452687 -608058379 - -943998986 1691930644 -9438210 -143655097 - - -5.1470088958740234e-01 3.5138621926307678e-01 - - <_> - 8 - -1.8140829801559448e+00 - - <_> - - 0 -1 17 1895692285 2011002740 -68714497 -67588 -290538497 - -5192712 -320164114 -34755958 - - -6.8089890480041504e-01 1.8467432260513306e-01 - <_> - - 0 -1 6 -288362774 -1064894778 1088554026 -326172954 - -204517530 1413968503 1931725632 -1000342529 - - -6.7872363328933716e-01 2.3477107286453247e-01 - <_> - - 0 -1 76 -571549462 -3149082 1359301463 1440727651 - -1074794578 -319326653 -681836625 -607405349 - - -4.2193624377250671e-01 4.7977572679519653e-01 - <_> - - 0 -1 58 90969104 1066153948 1606262773 -12624417 972370428 - -2511873 -90161928 -1170469880 - - -6.5543127059936523e-01 2.9713174700737000e-01 - <_> - - 0 -1 20 2137390587 -4991721 -273880438 -404424826 -686509057 - 1908479685 -11534354 -957683766 - - -4.1799837350845337e-01 4.4941714406013489e-01 - <_> - - 0 -1 34 1101522914 1643078770 1866900971 -1443209225 - -941264961 1875766127 1743137767 1088907182 - - -6.5640193223953247e-01 2.8259485960006714e-01 - <_> - - 0 -1 50 -340085256 -169869874 1295644543 -235208722 - -74778165 -126150213 -284165896 2029932510 - - -5.2174586057662964e-01 3.1938755512237549e-01 - <_> - - 0 -1 16 -1995780178 -1883579764 -1956835649 1064315450 - 298883276 -1651703672 1332547571 1529284110 - - -5.4796940088272095e-01 3.2749336957931519e-01 - - <_> - 9 - -1.5766727924346924e+00 - - <_> - - 0 -1 41 -10485775 -72630274 -168403503 -5964094 -608191528 - -1968703489 -6309394 -71303233 - - -6.4981359243392944e-01 2.7962529659271240e-01 - <_> - - 0 -1 49 -101713997 -795348237 -915944721 -923795474 - -470288461 -256416651 -1081606200 -5257787 - - -5.0733184814453125e-01 3.5640156269073486e-01 - <_> - - 0 -1 73 1360329646 1599450239 23042491 -168978051 499616426 - 88342532 -777262661 1474147167 - - -6.1151152849197388e-01 2.8293263912200928e-01 - <_> - - 0 -1 22 856699153 925965308 830177791 -540057732 601830333 - 1704204720 -127190050 -1372115764 - - -4.9403667449951172e-01 3.5013946890830994e-01 - <_> - - 0 -1 79 -321916242 1152275189 -491893242 16111322 463437710 - 1086714099 2129657567 1087328726 - - -6.8547970056533813e-01 2.7414512634277344e-01 - <_> - - 0 -1 9 -332399838 -20285713 1825214839 -572523876 -158433654 - -2075201062 705039115 -1061224609 - - -5.5482965707778931e-01 3.0516105890274048e-01 - <_> - - 0 -1 80 -7341158 -203165398 -1749860256 -1653488455 - -2040406360 554027584 121097696 1963982023 - - -6.0809975862503052e-01 2.5005647540092468e-01 - <_> - - 0 -1 15 -540144966 -1079535658 -1090185032 -1691418456 - 361506040 159694616 -1294064641 2139999194 - - -5.0468754768371582e-01 3.4012636542320251e-01 - <_> - - 0 -1 68 -104141110 -680827386 1995132851 -771791126 - -805863425 -830722433 1196418559 -1010052981 - - -4.0247300267219543e-01 4.3415176868438721e-01 - - <_> - 9 - -1.9237215518951416e+00 - - <_> - - 0 -1 54 1413290975 -545156659 1762334687 995038615 - -1182692869 -28249912 1821541343 -1079362594 - - -6.6381055116653442e-01 2.0693928003311157e-01 - <_> - - 0 -1 42 -109322241 1901183449 -402552948 -12846715 - -254880830 -238557903 -423887388 -100666383 - - -5.0527763366699219e-01 3.7808817625045776e-01 - <_> - - 0 -1 75 -134421258 -607673390 1476174026 -539383820 - -1617971461 -1156643126 -1778528769 -618974305 - - -4.0830761194229126e-01 4.5279026031494141e-01 - <_> - - 0 -1 10 -295002612 -1077350325 1608785181 1606605447 - -289670661 -354703719 -1915751721 402921239 - - -6.6798114776611328e-01 2.7213498950004578e-01 - <_> - - 0 -1 64 -881856086 1245839822 1690357408 1846439984 - -341085116 50727050 45514960 -207634376 - - -5.0356233119964600e-01 3.6370992660522461e-01 - <_> - - 0 -1 1 -606082066 -1265701494 -1056798134 -1031390972 - -880152291 1073768584 272887680 1893072868 - - -5.9699869155883789e-01 2.9342302680015564e-01 - <_> - - 0 -1 78 21984971 1535111923 325570343 -149214718 -2105559317 - 1757475362 -67371041 -70256225 - - -3.7804242968559265e-01 5.3985476493835449e-01 - <_> - - 0 -1 24 -904405842 -1866599595 -1878614625 848639499 - -502574588 -2096331903 -959214770 990902271 - - -5.5267244577407837e-01 3.5786947607994080e-01 - <_> - - 0 -1 30 -1029177089 1587125753 2012491709 -235919449 - -34069603 -146812932 -58834961 -80475869 - - -3.6617991328239441e-01 5.0907015800476074e-01 - - <_> - - 0 0 15 2 - <_> - - 0 1 1 5 - <_> - - 0 3 1 2 - <_> - - 0 4 1 3 - <_> - - 0 7 1 2 - <_> - - 0 7 2 3 - <_> - - 0 8 1 2 - <_> - - 0 13 20 1 - <_> - - 1 1 3 3 - <_> - - 1 1 7 3 - <_> - - 2 0 2 5 - <_> - - 2 0 7 4 - <_> - - 2 0 10 3 - <_> - - 2 0 14 3 - <_> - - 2 1 3 5 - <_> - - 2 9 12 2 - <_> - - 2 10 20 2 - <_> - - 3 0 4 3 - <_> - - 3 0 6 3 - <_> - - 3 0 11 1 - <_> - - 3 4 14 3 - <_> - - 3 6 3 3 - <_> - - 4 1 3 1 - <_> - - 4 4 4 4 - <_> - - 4 9 6 2 - <_> - - 5 1 3 3 - <_> - - 5 13 12 1 - <_> - - 7 1 2 5 - <_> - - 7 4 2 4 - <_> - - 7 13 9 1 - <_> - - 7 13 12 1 - <_> - - 8 3 7 4 - <_> - - 8 6 2 3 - <_> - - 8 12 18 1 - <_> - - 9 0 2 3 - <_> - - 9 4 1 3 - <_> - - 9 4 2 4 - <_> - - 10 4 6 3 - <_> - - 10 13 7 1 - <_> - - 11 3 5 4 - <_> - - 12 2 5 4 - <_> - - 12 10 3 2 - <_> - - 13 3 4 3 - <_> - - 13 3 4 4 - <_> - - 13 4 4 3 - <_> - - 14 2 4 4 - <_> - - 14 3 3 4 - <_> - - 14 4 4 3 - <_> - - 15 2 3 4 - <_> - - 15 3 3 4 - <_> - - 18 4 1 3 - <_> - - 19 0 4 4 - <_> - - 19 0 8 1 - <_> - - 20 0 5 1 - <_> - - 21 1 5 1 - <_> - - 21 1 14 1 - <_> - - 21 13 7 1 - <_> - - 22 0 11 1 - <_> - - 23 0 9 1 - <_> - - 24 0 13 1 - <_> - - 27 0 8 1 - <_> - - 28 3 2 3 - <_> - - 28 4 2 4 - <_> - - 30 4 2 4 - <_> - - 30 5 1 2 - <_> - - 30 13 7 1 - <_> - - 32 13 10 1 - <_> - - 33 4 2 3 - <_> - - 36 1 2 2 - <_> - - 36 1 4 2 - <_> - - 37 4 2 4 - <_> - - 39 4 2 4 - <_> - - 39 6 2 3 - <_> - - 41 0 4 2 - <_> - - 41 4 2 4 - <_> - - 44 10 3 2 - <_> - - 45 1 3 2 - <_> - - 47 4 2 3 - <_> - - 48 0 4 3 - <_> - - 52 2 2 4 - <_> - - 56 3 2 4 - <_> - - 61 2 1 3 - <_> - - 61 2 1 4 - <_> - - 61 8 1 2 - diff --git a/model/char_chi_sim.h5 b/model/char_chi_sim.h5 deleted file mode 100644 index d4d1504..0000000 Binary files a/model/char_chi_sim.h5 and /dev/null differ diff --git a/model/char_judgement.h5 b/model/char_judgement.h5 deleted file mode 100644 index 8bfd205..0000000 Binary files a/model/char_judgement.h5 and /dev/null differ diff --git a/model/char_judgement1.h5 b/model/char_judgement1.h5 deleted file mode 100644 index 7158a4a..0000000 Binary files a/model/char_judgement1.h5 and /dev/null differ diff --git a/model/char_rec.h5 b/model/char_rec.h5 deleted file mode 100644 index e7e305e..0000000 Binary files a/model/char_rec.h5 and /dev/null differ diff --git a/model/model12.h5 b/model/model12.h5 deleted file mode 100644 index 7ce8572..0000000 Binary files a/model/model12.h5 and /dev/null differ diff --git a/model/ocr_plate_all_gru.h5 b/model/ocr_plate_all_gru.h5 deleted file mode 100644 index ca1761c..0000000 Binary files a/model/ocr_plate_all_gru.h5 and /dev/null differ diff --git a/model/ocr_plate_all_w_rnn_2.h5 b/model/ocr_plate_all_w_rnn_2.h5 deleted file mode 100644 index 0909207..0000000 Binary files a/model/ocr_plate_all_w_rnn_2.h5 and /dev/null differ diff --git a/model/plate_type.h5 b/model/plate_type.h5 deleted file mode 100644 index 68f1a01..0000000 Binary files a/model/plate_type.h5 and /dev/null differ diff --git a/wxpy_uploader.py b/wxpy_uploader.py deleted file mode 100644 index 00f3092..0000000 --- a/wxpy_uploader.py +++ /dev/null @@ -1,28 +0,0 @@ -#coding=utf-8 - -from wxpy import * -import numpy -import cv2 -import time -import os -from hyperlpr import pipline - -def recognize(filename): - image = cv2.imread(filename) - return pipline.RecognizePlateJson(image) - -bot = Bot(console_qr=True, cache_path=True) - -@bot.register(Friend,PICTURE) -def pr_msg(msg): - image_name = msg.file_name - friend = msg.chat - print(msg.chat) - print('接收图片') - # face(image_name) - msg.get_file('' + msg.file_name) - json_text = recognize(image_name) - msg.reply(json_text) - msg.reply_image("0.jpg") - os.remove(image_name) -embed()