diff --git a/Analysis/BaseCaller/BarcodeClassifier.cpp b/Analysis/BaseCaller/BarcodeClassifier.cpp index 2a6fc9f8..f2107a10 100644 --- a/Analysis/BaseCaller/BarcodeClassifier.cpp +++ b/Analysis/BaseCaller/BarcodeClassifier.cpp @@ -162,6 +162,7 @@ BarcodeClassifier::BarcodeClassifier(OptArgs& opts, BarcodeDatasets& datasets, c printf(" Barcode filter minreads : %d (0 = disabled)\n", barcode_filter_minreads_); printf(" Barcode filter filename : %s\n", barcode_filter_filename_.c_str()); printf(" Generation of XB bam-tag : %s (number of base errors during barcode classification)\n", (barcode_bam_tag_ ? "on" : "off")); + printf(" No-match read group Idx : %d\n", no_barcode_read_group_); if (barcode_ignore_flows_) printf(" Ignoring flows %d to %d for barcode classification.\n",classifier_ignore_flows_[0],classifier_ignore_flows_[1]); printf("\n"); @@ -479,11 +480,11 @@ int BarcodeClassifier::FlowAlignClassification(const ProcessedRead &processed_r // ------------------------------------------------------------------------ int BarcodeClassifier::SignalSpaceClassification(const BasecallerRead& basecaller_read, float& best_distance, int& best_errors, - vector& best_bias, int& filtered_zero_errors) + vector& best_bias, bool& filtered_zero_errors, int& org_read_group) { int best_barcode = -1; best_errors = -1; - filtered_zero_errors = -1; + filtered_zero_errors = false; best_distance = score_cutoff_ + score_separation_; float second_best_distance = 1e20; @@ -531,10 +532,14 @@ int BarcodeClassifier::SignalSpaceClassification(const BasecallerRead& basecall } if (second_best_distance - best_distance < score_separation_) { - if (best_errors == 0) - filtered_zero_errors = barcode_.at(best_barcode).read_group_index; - best_barcode = -1; + if (best_errors == 0){ + filtered_zero_errors = true; + org_read_group = barcode_.at(best_barcode).read_group_index; + } + else + best_barcode = -1; } + return best_barcode; }; @@ -548,23 +553,24 @@ bool BarcodeClassifier::MatchesBarcodeSignal(const BasecallerRead& basecaller_re int best_barcode = -1; int best_errors = -1; - int filtered_zero_errors = -1; + int org_read_group = -1; + bool filtered_zero_errors = false; float best_distance = 0.0; vector best_bias; - best_barcode = SignalSpaceClassification(basecaller_read, best_distance, best_errors, best_bias, filtered_zero_errors); + best_barcode = SignalSpaceClassification(basecaller_read, best_distance, best_errors, best_bias, filtered_zero_errors, org_read_group); - return (best_barcode >= 0); + return (best_barcode >= 0 and org_read_group < 0); }; // ------------------------------------------------------------------------ int BarcodeClassifier::ProportionalSignalClassification(const BasecallerRead& basecaller_read, float& best_distance, int& best_errors, - vector& best_bias, int& filtered_zero_errors) + vector& best_bias, bool& filtered_zero_errors, int& org_read_group) { int best_barcode = -1; best_errors = -1; - filtered_zero_errors = -1; + filtered_zero_errors = false; best_distance = score_cutoff_ + score_separation_; float second_best_distance = 1e20; @@ -610,9 +616,12 @@ int BarcodeClassifier::ProportionalSignalClassification(const BasecallerRead& b } if (second_best_distance - best_distance < score_separation_) { - if (best_errors == 0) - filtered_zero_errors = barcode_.at(best_barcode).read_group_index; - best_barcode = -1; + if (best_errors == 0){ + filtered_zero_errors = true; + org_read_group = barcode_.at(best_barcode).read_group_index; + } + else + best_barcode = -1; } return best_barcode; }; @@ -620,9 +629,9 @@ int BarcodeClassifier::ProportionalSignalClassification(const BasecallerRead& b // ------------------------------------------------------------------------ -bool BarcodeClassifier::AdapterValidation(const BasecallerRead& basecaller_read, int& best_barcode, int& filtered_read_group) +bool BarcodeClassifier::AdapterValidation(const BasecallerRead& basecaller_read, int best_barcode, bool& filtered_read) { - filtered_read_group = -1; + filtered_read = false; // zero means disabled if (adapter_cutoff_ == 0) @@ -650,8 +659,9 @@ bool BarcodeClassifier::AdapterValidation(const BasecallerRead& basecaller_read, } if (residual_2 > num_adapter_flows * adapter_cutoff_) { - filtered_read_group = barcode_[best_barcode].read_group_index; - best_barcode = -1; + filtered_read = true; + //filtered_read_group = barcode_[best_barcode].read_group_index; + //best_barcode = -1; return false; } else @@ -680,12 +690,12 @@ void BarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead &pr case 2: // Minimize L2 distance for score_mode_ == 2 case 3: // Minimize L1 distance for score_mode_ == 3 best_barcode = SignalSpaceClassification(basecaller_read, processed_read.barcode_distance, processed_read.barcode_n_errors, - processed_read.barcode_bias, processed_read.barcode_filt_zero_error); + processed_read.barcode_bias, processed_read.barcode_filt_zero_error, processed_read.org_rg_idx); break; case 4: //L2 for score mode 4 case 5: //L1 for score mode 5 best_barcode = ProportionalSignalClassification(basecaller_read, processed_read.barcode_distance, processed_read.barcode_n_errors, - processed_read.barcode_bias, processed_read.barcode_filt_zero_error); + processed_read.barcode_bias, processed_read.barcode_filt_zero_error, processed_read.org_rg_idx); break; default: // Trivial base space comparison best_barcode = SimpleBaseSpaceClassification(basecaller_read); @@ -698,30 +708,35 @@ void BarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead &pr // -------- Classification done, now accounting ---------- + int x, y; + barcode_mask_.IndexToRowCol (read_index, y, x); + if (best_barcode == -1) { - int x, y; - barcode_mask_.IndexToRowCol (read_index, y, x); barcode_mask_.SetBarcodeId(x, y, 0); if (no_barcode_read_group_ >= 0) processed_read.read_group_index = no_barcode_read_group_; - return; + } + else if (processed_read.barcode_filt_zero_error or processed_read.barcode_adapter_filtered){ + barcode_mask_.SetBarcodeId(x, y, 0); + processed_read.read_group_index = barcode_[best_barcode].read_group_index; + processed_read.org_rg_idx = barcode_[best_barcode].read_group_index; + if (processed_read.barcode_filt_zero_error) + processed_read.barcode_adapter_filtered = false; + } + else { + barcode_mask_.SetBarcodeId(x, y, (uint16_t)barcode_[best_barcode].mask_index); + processed_read.read_group_index = barcode_[best_barcode].read_group_index; + processed_read.barcode_n_errors = max(processed_read.barcode_n_errors, 0); } - const Barcode& bce = barcode_[best_barcode]; - - int x, y; - barcode_mask_.IndexToRowCol (read_index, y, x); - barcode_mask_.SetBarcodeId(x, y, (uint16_t)bce.mask_index); - processed_read.read_group_index = bce.read_group_index; - processed_read.barcode_n_errors = max(processed_read.barcode_n_errors, 0); + if (not trim_barcodes_ or best_barcode == -1) + return; if(barcode_bam_tag_) processed_read.bam.AddTag("XB","i", processed_read.barcode_n_errors); - if (not trim_barcodes_) - return; - // Account for barcode + barcode adapter bases + const Barcode& bce = barcode_[best_barcode]; if (score_mode_ == 0){ processed_read.filter.n_bases_barcode = min(processed_read.filter.n_bases, (int)barcode_[best_barcode].full_barcode.length()); } @@ -741,7 +756,6 @@ void BarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead &pr processed_read.filter.n_bases_prefix = processed_read.filter.n_bases_tag = processed_read.filter.n_bases_barcode; // And now do handle classification and trimming ClassifyAndTrimHandle(read_index, best_barcode, processed_read, basecaller_read, base_to_flow); - } // ------------------------------------------------------------------------ @@ -877,9 +891,9 @@ void BarcodeClassifier::ClassifyAndTrimHandle(int read_index, int best_barcode, int x, y; barcode_mask_.IndexToRowCol (read_index, y, x); barcode_mask_.SetBarcodeId(x, y, 0); - if (no_barcode_read_group_ >= 0){ - processed_read.barcode_handle_filtered = processed_read.read_group_index; - processed_read.read_group_index = no_barcode_read_group_; + if (no_barcode_read_group_ >= 0 and processed_read.org_rg_idx < 0){ + processed_read.barcode_handle_filtered = true; + processed_read.org_rg_idx = processed_read.read_group_index; processed_read.handle_n_errors = 1+handle_cutoff_; } return; @@ -995,7 +1009,7 @@ int BarcodeClassifier::HandleFlowAlign(int best_barcode, ProcessedRead &process // ------------------------------------------------------------------------ -void BarcodeClassifier::Close(BarcodeDatasets& datasets) +void BarcodeClassifier::Close(BarcodeDatasets& datasets, int num_end_barcodes) { // Nothing to do if dataset is not in use // Do not filter control dataset and do not generate output files @@ -1016,6 +1030,7 @@ void BarcodeClassifier::Close(BarcodeDatasets& datasets) datasets.barcode_filters()["classifier_mode"] = (Json::Int64)score_mode_; datasets.barcode_filters()["classifier_cutoff"] = score_cutoff_; datasets.barcode_filters()["classifier_separation"] = score_separation_; + datasets.barcode_filters()["num_end_barcodes"] = num_end_barcodes; if (hamming_dmin_ >=0) datasets.barcode_filters()["hamming_distance"] = hamming_dmin_; @@ -1090,7 +1105,8 @@ void BarcodeClassifier::Close(BarcodeDatasets& datasets) // Filter read groups where a too large proportion of reads failed adapter verification // Likely to be a highly contaminated sample and should not be analyzed - if ((not i_am_filtered) and (not barcode_filter_postpone_) and (not is_control_barcode)) + // Do not apply to dual barcode sets - dual barcodes will filter contamination + if ((not i_am_filtered) and (not barcode_filter_postpone_) and (not is_control_barcode) and num_end_barcodes == 0) { //unsigned int adapter_filtered = (*rg)["barcode_adapter_filtered"].asUInt(); i_am_filtered = (5*adapter_filtered > read_count) ? true : false; @@ -1505,9 +1521,17 @@ void EndBarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead if (best_barcode < 0) { if (not process_as_single) PushReadToNomatch(read_index, processed_read); + // Trim the parts that have been identified + UpdateReadTrimming(processed_read, n_bases_trimmed, ""); return; } processed_read.end_barcode_index = best_barcode; + // If we process as single barcode, or demultiplex an external list + // we add the end barcode sequence to the YK field. + if (process_as_single or demux_barcode_list_) { + my_YK_tag += end_barcodes_.at(best_barcode).barcode_adapter; + my_YK_tag += end_barcodes_.at(best_barcode).barcode_sequence; + } // Move clearly identified barcode contamination to no-match, i.e., // reads where we identified an end barcode and it was the wrong one @@ -1516,19 +1540,6 @@ void EndBarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead PushReadToNomatch(read_index, processed_read); } - // we're done if trimming is not desired - if (not trim_barcodes_) { - processed_read.filter.n_bases_after_barcode_trim = -1; - return; - } - - // If we process as single barcode, or demultiplex an external list - // we add the end barcode sequence to the YK field. - if (process_as_single or demux_barcode_list_) { - my_YK_tag += end_barcodes_.at(best_barcode).barcode_adapter; - my_YK_tag += end_barcodes_.at(best_barcode).barcode_sequence; - } - UpdateReadTrimming(processed_read, n_bases_trimmed, my_YK_tag); }; @@ -1537,6 +1548,11 @@ void EndBarcodeClassifier::ClassifyAndTrimBarcode(int read_index, ProcessedRead void EndBarcodeClassifier::UpdateReadTrimming(ProcessedRead &processed_read, int trim_n_bases, const string& YK_tag) { + if (not trim_barcodes_) { + processed_read.filter.n_bases_after_barcode_trim = -1; + return; + } + // Trim bases from read processed_read.filter.n_bases_after_barcode_trim = max(0, processed_read.filter.n_bases_filtered-trim_n_bases); processed_read.filter.n_bases_filtered = processed_read.filter.n_bases_after_barcode_trim; @@ -1556,9 +1572,10 @@ void EndBarcodeClassifier::PushReadToNomatch(int read_index, ProcessedRead &proc { int x, y; barcode_mask_pointer_->IndexToRowCol (read_index, y, x); - if (nomatch_read_group_ >= 0){ - processed_read.end_barcode_filtered = processed_read.read_group_index; - processed_read.read_group_index = nomatch_read_group_; + if (nomatch_read_group_ >= 0 and processed_read.org_rg_idx < 0){ + processed_read.end_barcode_filtered = true; + processed_read.org_rg_idx = processed_read.read_group_index; + //processed_read.read_group_index = nomatch_read_group_; barcode_mask_pointer_->SetBarcodeId(x, y, 0); } } diff --git a/Analysis/BaseCaller/BarcodeClassifier.h b/Analysis/BaseCaller/BarcodeClassifier.h index f62de499..b3efc0f3 100644 --- a/Analysis/BaseCaller/BarcodeClassifier.h +++ b/Analysis/BaseCaller/BarcodeClassifier.h @@ -69,12 +69,12 @@ class BarcodeClassifier { int FlowAlignClassification(const ProcessedRead &processed_read, const vector& base_to_flow, int& best_errors); int SignalSpaceClassification(const BasecallerRead& basecaller_read, float& best_distance, int& best_errors, - vector& best_bias, int& filtered_zero_errors); + vector& best_bias, bool& filtered_zero_errors, int& org_read_group); int ProportionalSignalClassification(const BasecallerRead& basecaller_read, float& best_distance, int& best_errors, - vector& best_bias, int& filtered_zero_errors); + vector& best_bias, bool& filtered_zero_errors, int& org_read_group); - bool AdapterValidation(const BasecallerRead& basecaller_read, int& best_barcode, int& filtered_read_group); + bool AdapterValidation(const BasecallerRead& basecaller_read, int best_barcode, bool& filtered_read); void ClassifyAndTrimBarcode(int read_index, ProcessedRead &processed_read, const BasecallerRead& basecaller_read, const vector& base_to_flow); @@ -86,7 +86,7 @@ class BarcodeClassifier { Mask* GetBarcodeMaskPointer() { return &barcode_mask_; }; - void Close(BarcodeDatasets& datasets); + void Close(BarcodeDatasets& datasets, int num_end_barcodes); protected: diff --git a/Analysis/BaseCaller/BaseCaller.cpp b/Analysis/BaseCaller/BaseCaller.cpp index 8aad0749..865cfa5d 100644 --- a/Analysis/BaseCaller/BaseCaller.cpp +++ b/Analysis/BaseCaller/BaseCaller.cpp @@ -24,6 +24,9 @@ #include #include #include // Floating point exceptions +#include +#include +#include #include "json/json.h" #include "MaskSample.h" @@ -41,6 +44,7 @@ #include "BarcodeClassifier.h" #include "OrderedDatasetWriter.h" #include "TreephaserSSE.h" +#include "TreephaserVEC.h" #include "PhaseEstimator.h" #include "PerBaseQual.h" #include "BaseCallerFilters.h" @@ -111,8 +115,9 @@ void ReportState(time_t analysis_start_time, const char *my_state) { time_t analysis_current_time; time(&analysis_current_time); - fprintf(stdout, "\n%s: Elapsed: %.1lf minutes, Timestamp: %s\n", my_state, + fprintf(stdout, "\n%s: Elapsed: %.2lf minutes, (%.0lf seconds) Timestamp: %s\n", my_state, difftime(analysis_current_time, analysis_start_time) / 60, + difftime(analysis_current_time, analysis_start_time), ctime (&analysis_current_time)); } @@ -182,8 +187,42 @@ void make_base_to_flow(const vector& sequence,ion::FlowOrder& flow_order, } } +char FileCacherDummy=0; // to keep the access from being optimized away +void *FileCacher(void *ptr) +{ + const char *fname=(const char *)ptr; + struct stat statbuf; + if(stat(fname,&statbuf) != 0){ + printf("FileCacher: Failed to stat %s\n",fname); + return NULL; + } + + int fd = open(fname,O_RDONLY,0); + char cntr=0; + if(fd >= 0){ + char *dst; + if ((dst = (char *)mmap (0, statbuf.st_size, PROT_READ, + MAP_SHARED, fd, 0)) == (char *) 0xffffffffffffffff){ + printf("FileCacher: Failed to mmap %s size %ld\n",fname,statbuf.st_size); + close(fd); + return NULL; + } + + __off_t addr=0; + while(addr < statbuf.st_size){ + cntr+=dst[addr]; + addr += 4096; + } + FileCacherDummy=cntr; + munmap((void *)dst,statbuf.st_size); + //printf("Done caching %s\n",fname); + close(fd); + } + return NULL; +} + // -------------------------------------------------------------------------- -//! @brief Main function for BaseCaller executable Mark: XXX +//! @brief Main function for BaseCaller executable Mark: //! @ingroup BaseCaller @@ -243,6 +282,21 @@ int main (int argc, const char *argv[]) // Sampling options may reset command line arguments & change context bc_params.InitializeSamplingFromOptArgs(opts, bc.read_class_map->NumValidWells()); + + if(bc_params.GetSamplingOpts().calibration_training > 0 or bc_params.GetSamplingOpts().have_calib_panel){ + vector filename_wells=bc_params.GetFiles().filename_wells; + for (unsigned int i=0; iNumEndBarcodes()); + calibration_barcodes.Close(datasets_calibration, 0); if (bc.have_calibration_panel) { datasets.json()["IonControl"]["datasets"] = datasets_calibration.json()["datasets"]; datasets.json()["IonControl"]["read_groups"] = datasets_calibration.read_groups(); @@ -519,8 +578,9 @@ int main (int argc, const char *argv[]) return EXIT_SUCCESS; } +int threadCntr=0; // ---------------------------------------------------------------- -//! @brief Main code for BaseCaller worker thread Mark: XXX +//! @brief Main code for BaseCaller worker thread Mark: //! @ingroup BaseCaller //! @param[in] input Pointer to BaseCallerContext. @@ -528,17 +588,10 @@ void * BasecallerWorker(void *input) { BaseCallerContext& bc = *static_cast(input); - //RawWells wells ("", bc.filename_wells.c_str()); - WellsManager wells_mngr(bc.filename_wells, false); - wells_mngr.SetWellsContext(&bc.flow_order, - bc.keys, - bc.read_class_map, - bc.wells_norm_method, - bc.compress_multi_taps); - - pthread_mutex_lock(&bc.mutex); - wells_mngr.OpenForIncrementalRead(); - pthread_mutex_unlock(&bc.mutex); + pthread_mutex_lock(&bc.load_mutex); + WellsManager *wells_mngrp=new WellsManager(bc.wells_mngr); + WellsManager &wells_mngr=*wells_mngrp; + pthread_mutex_unlock(&bc.load_mutex); int num_flows = bc.flow_order.num_flows(); vector residual(num_flows, 0); @@ -565,12 +618,19 @@ void * BasecallerWorker(void *input) treephaser.SkipRecalDuringNormalization(bc.skip_recal_during_norm); // SSE treephaser definition. XXX -#if defined( __SSE3__ ) - TreephaserSSE treephaser_sse(bc.flow_order, bc.windowSize); - treephaser_sse.SkipRecalDuringNormalization(bc.skip_recal_during_norm); +#if 0 + TreephaserSSE treephaser_vec(bc.flow_order, bc.windowSize); + treephaser_vec.SkipRecalDuringNormalization(bc.skip_recal_during_norm); +#else + + TreephaserVEC treephaser_vec(bc.flow_order, bc.windowSize); + treephaser_vec.SkipRecalDuringNormalization(bc.skip_recal_during_norm); + treephaser_vec.SetBadPathLimit(bc.BadPathLimit); + treephaser_vec.SetManyPathLimit(bc.ManyPathLimit); + treephaser_vec.SetInitalPaths(bc.InitialPaths); + treephaser_vec.SetMaxMetrDiff(bc.MaxMetrDiff); #endif - while (true) { // @@ -587,10 +647,16 @@ void * BasecallerWorker(void *input) } int num_usable_wells = 0; - for (int y = begin_y; y < end_y; ++y) + if(bc.calibration_training or bc.have_calibration_panel){ + num_usable_wells=1; + }else{ + for (int y = begin_y; y < end_y; ++y) for (int x = begin_x; x < end_x; ++x) - if (bc.read_class_map->ClassMatch(x,y, MapOutputWell)) - num_usable_wells++; + if (bc.read_class_map->ClassMatch(x,y, MapOutputWell)) + num_usable_wells++; + if (begin_x == 0) + SaveBaseCallerProgress(10 + (80*begin_y)/bc.chip_subset.GetChipSizeY(), bc.output_directory); + } if (begin_x == 0) printf("\n% 5d/% 5d: ", begin_y, bc.chip_subset.GetChipSizeY()); if (num_usable_wells == 0) printf(" "); @@ -600,8 +666,6 @@ void * BasecallerWorker(void *input) else printf("##"); fflush(NULL); - if (begin_x == 0) - SaveBaseCallerProgress(10 + (80*begin_y)/bc.chip_subset.GetChipSizeY(), bc.output_directory); pthread_mutex_unlock(&bc.mutex); @@ -625,7 +689,7 @@ void * BasecallerWorker(void *input) continue; } - wells_mngr.LoadChunk(begin_y, end_y-begin_y, begin_x, end_x-begin_x, 0, num_flows); + wells_mngr.LoadChunk(begin_y, end_y-begin_y, begin_x, end_x-begin_x, 0, num_flows,&bc.load_mutex); for (int y = begin_y; y < end_y; ++y) for (int x = begin_x; x < end_x; ++x) { // Loop over wells within current region @@ -737,15 +801,16 @@ void * BasecallerWorker(void *input) treephaser.SetModelParameters(cf, ie, dr); // Execute vectorized basecaller version XXX -#if defined( __SSE3__ ) + if (bc.sse_dephaser) { - treephaser_sse.SetAsBs(aPtr, bPtr); // Set/delete recalibration model for this read - treephaser_sse.SetModelParameters(cf, ie); // SSE version has no hook for droop. - if (bc.dephaser == "treephaser-sse") - treephaser_sse.NormalizeAndSolve(read); + treephaser_vec.SetAsBs(aPtr, bPtr); // Set/delete recalibration model for this read + treephaser_vec.SetModelParameters(cf, ie); // SSE version has no hook for droop. + + if (bc.dephaser == "treephaser-vec") + treephaser_vec.NormalizeAndSolve(read); else // bc.dephaser == "treephaser-solve" Solving without normalization - treephaser_sse.SolveRead(read, 0, num_flows); + treephaser_vec.SolveRead(read, 0, num_flows); // Store debug info if desired and calibration enabled if (bc.debug_normalization_bam and bc.histogram_calibration->is_enabled()) @@ -760,10 +825,10 @@ void * BasecallerWorker(void *input) // Generate base_to_flow before ComputeQVmetrics. But not too early, otherwise the sequence is not ready make_base_to_flow(read.sequence,bc.flow_order,base_to_flow,flow_to_base,num_flows); - treephaser_sse.ComputeQVmetrics_flow(read,flow_to_base,bc.flow_predictors_); + treephaser_vec.ComputeQVmetrics_flow(read,flow_to_base,bc.flow_predictors_); compute_base_calls = false; } -#endif + // Use CPP code version if we didn't already use vectorized code if (compute_base_calls){ @@ -992,7 +1057,7 @@ void * BasecallerWorker(void *input) //! New mechanism for dumping potentially useful metrics. if (bc.metric_saver->save_anything() and (is_random_unfiltered or !bc.metric_saver->save_subset_only())) { - pthread_mutex_lock(&bc.mutex); + pthread_mutex_lock(&bc.metric_mutex); bc.metric_saver->SaveRawMeasurements (y,x,read.raw_measurements); bc.metric_saver->SaveAdditiveCorrection (y,x,read.additive_correction); @@ -1008,7 +1073,7 @@ void * BasecallerWorker(void *input) bc.metric_saver->SaveHomopolymerRank (y,x,homopolymer_rank); bc.metric_saver->SaveNeighborhoodNoise (y,x,neighborhood_noise); - pthread_mutex_unlock(&bc.mutex); + pthread_mutex_unlock(&bc.metric_mutex); } @@ -1016,6 +1081,9 @@ void * BasecallerWorker(void *input) // Step 4b. Add flow signal information to ZM tag in BAM record. // + // Push the reads that - at some point in time - where flagged as nomatch into the nomatch BAM + processed_read.PushToNomatch(bc.barcodes->NoBarcodeReadGroup()); + int max_flow = num_flows; if (bc.trim_zm){ if (processed_read.filter.n_bases_filtered > 0) diff --git a/Analysis/BaseCaller/BaseCallerFilters.cpp b/Analysis/BaseCaller/BaseCallerFilters.cpp index 37ab2e06..f9428e94 100644 --- a/Analysis/BaseCaller/BaseCallerFilters.cpp +++ b/Analysis/BaseCaller/BaseCallerFilters.cpp @@ -111,6 +111,27 @@ ReadFilteringHistory::ReadFilteringHistory() adapter_decision = false; } +// Function resets the +void ReadFilteringHistory::UndoBarcodeTrimming() +{ + if (is_filtered) + return; + + // reset 5' trimming to point to after library key + n_bases_prefix = n_bases_barcode = n_bases_tag = n_bases_key; + + // reset 3' trimming point to min of quality trimmer / adapter trimmer / read length + n_bases_filtered = n_bases; + if (n_bases_after_adapter_trim >=0 and n_bases_after_adapter_trim < n_bases_filtered) + n_bases_filtered = n_bases_after_adapter_trim; + if (n_bases_after_quality_trim >= 0 and n_bases_after_quality_trim < n_bases_filtered) + n_bases_filtered = n_bases_after_quality_trim; + + n_bases_after_barcode_trim = -1; + n_bases_after_tag_trim = -1; + n_bases_after_extra_trim = -1; +} + // ---------------------------------------------------------------------------- // Let's not modify the ZD vector @@ -539,7 +560,9 @@ void ReadFilteringStats::SaveToBasecallerJson(Json::Value &json, const string& c json["Filtering"]["BaseDetails"]["final"] = (Json::Int64)num_bases_final_; json["Filtering"]["LibraryReport"]["filtered_polyclonal"] = (Json::Int64)(num_reads_removed_bkgmodel_polyclonal_ + num_reads_removed_polyclonal_); - json["Filtering"]["LibraryReport"]["filtered_primer_dimer"] = (Json::Int64) num_reads_removed_adapter_trim_; + json["Filtering"]["LibraryReport"]["filtered_primer_dimer"] = (Json::Int64)(num_reads_removed_adapter_trim_ + + num_reads_removed_barcode_trim_ + + num_reads_removed_tag_trim_); json["Filtering"]["LibraryReport"]["filtered_low_quality"] = (Json::Int64)( num_reads_removed_bkgmodel_high_ppf_ + num_reads_removed_bkgmodel_keypass_ + @@ -547,10 +570,8 @@ void ReadFilteringStats::SaveToBasecallerJson(Json::Value &json, const string& c num_reads_removed_short_ + num_reads_removed_keypass_ + num_reads_removed_residual_ + - num_reads_removed_barcode_trim_ + num_reads_removed_quality_trim_ + num_reads_removed_quality_filt_ + - num_reads_removed_tag_trim_ + num_reads_removed_extra_trim_); json["Filtering"]["LibraryReport"]["final_library_reads"] = (Json::Int64)num_reads_final_; @@ -1396,18 +1417,24 @@ bool BaseCallerFilters::TrimAdapter_FlowAlign(float& best_metric, int& best_star best_adapter_overlap= -1; int sequence_pos = 0; char adapter_start_base = effective_adapter.at(0); + int numFlows=flow_order_.num_flows(); + int readSize=(int)read.sequence.size(); + const char *seq=&read.sequence[0]; + int EALength=(int)effective_adapter.length(); + const char *eadap=&effective_adapter[0]; - for (int adapter_start_flow = 0; adapter_start_flow < flow_order_.num_flows(); ++adapter_start_flow) { + for (int adapter_start_flow = 0; adapter_start_flow < numFlows; ++adapter_start_flow) { // Only consider start flows that agree with adapter start if (flow_order_[adapter_start_flow] != adapter_start_base) continue; - while (sequence_pos < (int)read.sequence.size() and base_to_flow[sequence_pos] < adapter_start_flow) + while (sequence_pos < readSize and base_to_flow[sequence_pos] < adapter_start_flow) sequence_pos++; - if (sequence_pos >= (int)read.sequence.size()) + + if (sequence_pos >= readSize) break; - else if (sequence_pos>0 and read.sequence.at(sequence_pos-1)==adapter_start_base) + else if (sequence_pos>0 and seq[sequence_pos-1]==adapter_start_base) continue; // Make sure we don't get impossible configurations // Evaluate this starting position @@ -1417,14 +1444,14 @@ bool BaseCallerFilters::TrimAdapter_FlowAlign(float& best_metric, int& best_star int local_sequence_pos = sequence_pos; int local_start_base = sequence_pos; - for (int flow = adapter_start_flow; flow < flow_order_.num_flows(); ++flow) { + for (int flow = adapter_start_flow; flow < numFlows; ++flow) { int base_delta = 0; - while (adapter_pos < (int)effective_adapter.length() and effective_adapter.at(adapter_pos) == flow_order_[flow]) { + while (adapter_pos < EALength and eadap[adapter_pos] == flow_order_[flow]) { adapter_pos++; base_delta--; } - while (local_sequence_pos < (int)read.sequence.size() and base_to_flow[local_sequence_pos] == flow) { + while (local_sequence_pos < readSize and base_to_flow[local_sequence_pos] == flow) { local_sequence_pos++; base_delta++; } @@ -1437,7 +1464,7 @@ bool BaseCallerFilters::TrimAdapter_FlowAlign(float& best_metric, int& best_star local_start_base += base_delta; score_len_flows++; - if (adapter_pos == (int)effective_adapter.length() or local_sequence_pos == (int)read.sequence.size()) + if (adapter_pos == EALength or local_sequence_pos == readSize) break; } @@ -1447,9 +1474,9 @@ bool BaseCallerFilters::TrimAdapter_FlowAlign(float& best_metric, int& best_star if (adapter_pos < trim_adapter_min_match_) // Match too short continue; - if (score_match * 2 * effective_adapter.length() > trim_adapter_cutoff_) // Match too dissimilar + if (score_match * 2 * EALength > trim_adapter_cutoff_) // Match too dissimilar continue; - float final_metric = adapter_pos / (float)effective_adapter.length() - score_match; // The higher the better + float final_metric = adapter_pos / (float)EALength - score_match; // The higher the better if (final_metric > best_metric) { adapter_found = true; diff --git a/Analysis/BaseCaller/BaseCallerParameters.cpp b/Analysis/BaseCaller/BaseCallerParameters.cpp index 6ee842e5..04c036f6 100644 --- a/Analysis/BaseCaller/BaseCallerParameters.cpp +++ b/Analysis/BaseCaller/BaseCallerParameters.cpp @@ -223,6 +223,8 @@ void BaseCallerParameters::PrintHelp() printf (" --compress-multi-taps BOOL Compress the signal from adjacent multi-tap flows [false]\n"); printf (" --num-unfiltered INT number of subsampled unfiltered reads [100000]\n"); printf (" --only-process-unfiltered-set on/off Only save reads that would also go to unfiltered BAMs. [off]\n"); + printf (" --bad-path-limit INT number of bad paths before aborting [10000]\n"); + printf (" --many-path-limit INT number of >=3 path decisions before aborting [10000]\n"); printf ("\n"); printf ("Chip/Block division:\n"); printf (" -r,--rows INT-INT subset of rows to be processed [all rows]\n"); @@ -403,7 +405,7 @@ bool BaseCallerParameters::InitContextVarsFromOptArgs(OptArgs& opts){ char default_run_id[6]; // Create a run identifier from full output directory string ion_run_to_readname (default_run_id, (char*)bc_files.output_directory.c_str(), bc_files.output_directory.length()); context_vars.run_id = opts.GetFirstString ('-', "run-id", default_run_id); - num_threads_ = opts.GetFirstInt ('n', "num-threads", max(2*numCores(), 4)); + num_threads_ = opts.GetFirstInt ('n', "num-threads", max(numCores(), 4)); num_bamwriter_threads_ = opts.GetFirstInt ('-', "num-threads-bamwriter", 0); compress_output_bam_ = opts.GetFirstBoolean('-', "compress-bam", true); @@ -413,7 +415,7 @@ bool BaseCallerParameters::InitContextVarsFromOptArgs(OptArgs& opts){ // Treephaser options #if defined( __SSE3__ ) - context_vars.dephaser = opts.GetFirstString ('-', "dephaser", "treephaser-sse"); + context_vars.dephaser = opts.GetFirstString ('-', "dephaser", "treephaser-vec"); #else context_vars.dephaser = opts.GetFirstString ('-', "dephaser", "treephaser-swan"); #endif @@ -427,6 +429,10 @@ bool BaseCallerParameters::InitContextVarsFromOptArgs(OptArgs& opts){ context_vars.calibrate_TFs = opts.GetFirstBoolean('-', "calibrate-tfs", false); context_vars.trim_zm = opts.GetFirstBoolean('-', "trim-zm", true); context_vars.compress_multi_taps = opts.GetFirstBoolean('-', "compress-multi-taps", false); + context_vars.bad_path_limit = opts.GetFirstInt ('-', "bad-path-limit", 10000); + context_vars.many_path_limit = opts.GetFirstInt ('-', "many-path-limit",10000); + context_vars.InitialPaths = opts.GetFirstInt ('-', "initial-paths",-1); + context_vars.MaxMetrDiff = opts.GetFirstDouble ('-', "max-metr-diff",0.3); context_vars.inline_control = opts.GetFirstBoolean('-', "inline-control", false); if (context_vars.inline_control and not bc_files.inline_control_reference_file.empty()){ @@ -524,7 +530,7 @@ bool BaseCallerParameters::SetBaseCallerContextVars(BaseCallerContext & bc) bc.wells_norm_method = context_vars.wells_norm_method; bc.keynormalizer = context_vars.keynormalizer; bc.dephaser = context_vars.dephaser; - bc.sse_dephaser = (bc.dephaser == "treephaser-sse" or bc.dephaser == "treephaser-solve"); + bc.sse_dephaser = (bc.dephaser == "treephaser-vec" or bc.dephaser == "treephaser-sse" or bc.dephaser == "treephaser-solve"); bc.windowSize = context_vars.windowSize; bc.diagonal_state_prog = context_vars.diagonal_state_prog; bc.skip_droop = context_vars.skip_droop; @@ -532,6 +538,10 @@ bool BaseCallerParameters::SetBaseCallerContextVars(BaseCallerContext & bc) bc.calibrate_TFs = context_vars.calibrate_TFs; bc.trim_zm = context_vars.trim_zm; bc.compress_multi_taps = context_vars.compress_multi_taps; + bc.BadPathLimit = context_vars.bad_path_limit; + bc.ManyPathLimit = context_vars.many_path_limit; + bc.InitialPaths = context_vars.InitialPaths; + bc.MaxMetrDiff = context_vars.MaxMetrDiff; bc.flow_predictors_ = context_vars.flow_predictors_; bc.inline_control = context_vars.inline_control; diff --git a/Analysis/BaseCaller/BaseCallerParameters.h b/Analysis/BaseCaller/BaseCallerParameters.h index 813c3c3b..1427bbe8 100644 --- a/Analysis/BaseCaller/BaseCallerParameters.h +++ b/Analysis/BaseCaller/BaseCallerParameters.h @@ -119,6 +119,10 @@ struct BCcontextVars { // "unclipped" - Normalized and phased but unclipped. string wells_norm_method; //!< Well file normalization method bool compress_multi_taps; //!< Compress the signal from adjacent multi-tap flows + int bad_path_limit; + int many_path_limit; + int InitialPaths; + float MaxMetrDiff; // Treephaser options string keynormalizer; //!< Name of selected key normalization algorithm @@ -167,6 +171,11 @@ struct BaseCallerContext { bool trim_zm; //!< Trim the ZM tag when writing it to the bam file bool compress_multi_taps; //!< Compress the signal from adjacent multi-tap flows bool inline_control; //!< Switch to trigger inline control statistics + int BadPathLimit; //!< number of dead end paths before aborting + int ManyPathLimit; //!< number of >3 path decisions before aborting + int InitialPaths; //!< number of initial paths to explore + float MaxMetrDiff; //!< maximum metric diff to create a new path + // Important outside entities accessed by BaseCaller ion::ChipSubset chip_subset; //!< Chip coordinate & region handling for Basecaller @@ -184,7 +193,9 @@ struct BaseCallerContext { MolecularTagTrimmer *tag_trimmer; //!< Class for tag accounting within read groups // Threaded processing - pthread_mutex_t mutex; //!< Shared read/write mutex for BaseCaller worker threads + pthread_mutex_t mutex; //!< Shared general mutex for BaseCaller worker threads + pthread_mutex_t load_mutex; //!< Shared load mutex for BaseCaller worker threads + pthread_mutex_t metric_mutex; //!< Shared metric mutex for BaseCaller worker threads // Basecalling results saved here OrderedDatasetWriter lib_writer; //!< Writer object for library BAMs @@ -193,7 +204,8 @@ struct BaseCallerContext { set unfiltered_set; //!< Indicates which wells are to be saved to unfiltered BAMs OrderedDatasetWriter unfiltered_writer; //!< Writer object for unfiltered BAMs for a random subset of library reads OrderedDatasetWriter unfiltered_trimmed_writer; //!< Writer object for unfiltered trimmed BAMs for a random subset of library reads - + WellsManager *wells_mngr; + bool SetKeyAndFlowOrder(OptArgs& opts, const char * FlowOrder, const int NumFlows); void ClassifyAndSampleWells(const BCwellSampling & SamplingOpts); diff --git a/Analysis/BaseCaller/OrderedDatasetWriter.cpp b/Analysis/BaseCaller/OrderedDatasetWriter.cpp index 08835c86..6ad94a17 100644 --- a/Analysis/BaseCaller/OrderedDatasetWriter.cpp +++ b/Analysis/BaseCaller/OrderedDatasetWriter.cpp @@ -17,6 +17,49 @@ using namespace std; +// ------------------------------------------------------------------ + +ProcessedRead::ProcessedRead(int default_read_group) +{ + read_group_index = default_read_group; // Needs to be a valid index at startup + is_control_barcode = false; + org_rg_idx = -1; + barcode_n_errors = 0; + barcode_filt_zero_error = false; + barcode_adapter_filtered= false; + barcode_distance = 0.0; + handle_index = -1; + handle_n_errors = 0; + barcode_handle_filtered = false; + end_barcode_index = -1; + end_barcode_filtered = false; + end_bc_n_errors = -1; + end_handle_index = -1; + end_handle_n_errors = -1; + end_adapter_filtered = false; + end_handle_filtered = false; + trimmed_tags.Clear(); +} + +bool ProcessedRead::PushToNomatch(int no_match_index) +{ + // Just return if this is a non-barcoded run + if (no_match_index < 0) + return false; + // Also return if this read was not filtered + if (org_rg_idx < 0) + return false; + + if (org_rg_idx != read_group_index and no_match_index != read_group_index){ + cerr << "WARNING: read group index " << read_group_index << " does not match org_rg_idx " << org_rg_idx + << " or no_match_index " << no_match_index << " for read " << bam.Name << endl; + } + + read_group_index = no_match_index; + filter.UndoBarcodeTrimming(); + + return true; +} // ------------------------------------------------------------------ @@ -31,6 +74,7 @@ OrderedDatasetWriter::OrderedDatasetWriter() compress_bam_ = true; have_handles_ = false; num_bamwriter_threads_ = 0; + no_barcode_read_group_ = -1; pthread_mutex_init(&dropbox_mutex_, NULL); pthread_mutex_init(&write_mutex_, NULL); pthread_mutex_init(&delete_mutex_, NULL); @@ -101,6 +145,9 @@ void OrderedDatasetWriter::Open(const string& base_directory, BarcodeDatasets& d read_group_end_handle_rejected_.assign(num_read_groups_, 0); for (int rg = 0; rg < num_read_groups_; ++rg) { + if (not datasets.read_group(rg).isMember("barcode_name")) + no_barcode_read_group_ = rg; + read_group_name_.at(rg) = datasets.read_group_name(rg); read_group_num_barcode_errors_.at(rg).assign(3,0); read_group_barcode_bias_.at(rg).assign(datasets.GetBCmaxFlows(),0.0); @@ -406,6 +453,13 @@ void OrderedDatasetWriter::PhysicalWriteRegion(int region) if (entry->filter.is_filtered and not save_filtered_reads_) continue; + // In a last filtering step move the surviving start adapter filtered ones to nomatch + // thus avoiding that small primer-dimers trigger the contamination warning + // processed_read.barcode_adapter_filtered + //if (entry->barcode_adapter_filtered >= 0){ + // entry->read_group_index = no_barcode_read_group_; + //} + int target_file_idx = read_group_dataset_.at(entry->read_group_index); if (target_file_idx < 0) // Read group not assigned to a dataset? continue; @@ -437,40 +491,40 @@ void OrderedDatasetWriter::PhysicalWriteRegion(int region) // Barcode No-match accounting // 0-error filtered barcodes - if (entry->barcode_filt_zero_error >= 0){ - read_group_barcode_filt_zero_err_.at(entry->barcode_filt_zero_error)++; - AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->barcode_filt_zero_error)+".SB"); + if (entry->barcode_filt_zero_error){ + read_group_barcode_filt_zero_err_.at(entry->org_rg_idx)++; + AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->org_rg_idx)+".SB"); } // Account for filtered reads due to barcode adapter rejection - if (entry->barcode_adapter_filtered >= 0){ - read_group_barcode_adapter_rejected_.at(entry->barcode_adapter_filtered)++; - AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->barcode_adapter_filtered)+".SA"); + if (entry->barcode_adapter_filtered){ + read_group_barcode_adapter_rejected_.at(entry->org_rg_idx)++; + AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->org_rg_idx)+".SA"); } // *** End barcode // No-match accounting - if (entry->end_barcode_filtered >= 0){ - string org_rg = read_group_name_.at(entry->end_barcode_filtered); + if (entry->end_barcode_filtered){ + string org_rg = read_group_name_.at(entry->org_rg_idx); if (entry->filter.adapter_type < 0){ - read_group_no_bead_adapter_.at(entry->end_barcode_filtered)++; + read_group_no_bead_adapter_.at(entry->org_rg_idx)++; AddOriginalReadGroupTag(entry->bam, org_rg); } else if (entry->end_adapter_filtered) { - read_group_end_adapter_rejected_.at(entry->end_barcode_filtered)++; + read_group_end_adapter_rejected_.at(entry->org_rg_idx)++; AddOriginalReadGroupTag(entry->bam, org_rg+".EA"); } else if (entry->end_handle_filtered){ - read_group_end_handle_rejected_.at(entry->end_barcode_filtered)++; + read_group_end_handle_rejected_.at(entry->org_rg_idx)++; AddOriginalReadGroupTag(entry->bam, org_rg+".EH"); } else{ - read_group_end_barcode_rejected_.at(entry->end_barcode_filtered)++; + read_group_end_barcode_rejected_.at(entry->org_rg_idx)++; AddOriginalReadGroupTag(entry->bam, org_rg+".EB"); } if (read_group_end_barcode_counts_.size() >0 and entry->end_barcode_index >=0){ - ++read_group_end_barcode_counts_.at(entry->end_barcode_filtered).at(entry->end_barcode_index); + ++read_group_end_barcode_counts_.at(entry->org_rg_idx).at(entry->end_barcode_index); } } @@ -488,9 +542,9 @@ void OrderedDatasetWriter::PhysicalWriteRegion(int region) read_group_handle_dist_.at(entry->read_group_index).at(entry->handle_index)++; read_group_num_handle_errors_.at(entry->read_group_index).at(entry->handle_n_errors)++; } - else if (entry->barcode_handle_filtered >=0){ - read_group_handle_rejected_.at(entry->barcode_handle_filtered)++; - AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->barcode_handle_filtered)+".SH"); + else if (entry->barcode_handle_filtered){ + read_group_handle_rejected_.at(entry->org_rg_idx)++; + AddOriginalReadGroupTag(entry->bam, read_group_name_.at(entry->org_rg_idx)+".SH"); } if (entry->end_handle_index >= 0){ diff --git a/Analysis/BaseCaller/OrderedDatasetWriter.h b/Analysis/BaseCaller/OrderedDatasetWriter.h index ee4fb2ed..200fcfcd 100644 --- a/Analysis/BaseCaller/OrderedDatasetWriter.h +++ b/Analysis/BaseCaller/OrderedDatasetWriter.h @@ -34,6 +34,7 @@ struct ReadFilteringHistory { void GenerateZDVector(vector& zd_vector); // Save filtering history to a vector void CalledRead(int num_bases) { is_called=true; n_bases=num_bases; }; + void UndoBarcodeTrimming(); // Basic information bool is_filtered; //!< true if the read should not be saved @@ -134,44 +135,30 @@ class ReadFilteringStats { //! @ingroup BaseCaller struct ProcessedRead { - ProcessedRead(int default_read_group) { - read_group_index = default_read_group; // Needs to be a valid index at startup - is_control_barcode = false; - barcode_n_errors = 0; - barcode_filt_zero_error = -1; - barcode_adapter_filtered= -1; - barcode_distance = 0.0; - handle_index = -1; - handle_n_errors = 0; - barcode_handle_filtered = -1; - end_barcode_index = -1; - end_barcode_filtered = -1; - end_bc_n_errors = -1; - end_handle_index = -1; - end_handle_n_errors = -1; - end_adapter_filtered = false; - end_handle_filtered = false; - trimmed_tags.Clear(); - } + ProcessedRead(int default_read_group); + + bool PushToNomatch(int no_match_index); + // Variables storing barcode classification results int read_group_index; //!< Read group index, generally based on barcode classification. + int org_rg_idx; //!< Indicator that the read is intended for the nomatch-bam file. Stores original read group index bool is_control_barcode; //!< Identified the read as having a control barcode int barcode_n_errors; //!< Number of base mismatches in barcode sequence. - int barcode_filt_zero_error; //!< Inidcator whether a hard decision match was filtered in signal space. - int barcode_adapter_filtered; //!< Indicator whether barcode adapter was too dissimilar + bool barcode_filt_zero_error; //!< Inidcator whether a hard decision match was filtered in signal space. + bool barcode_adapter_filtered; //!< Indicator whether barcode adapter was too dissimilar float barcode_distance; //!< Distance to assigned barcode in signal space. vector barcode_bias; //!< A bias vector for the assigned barcode. // Front handles int handle_index; //!< Index of assigned handle int handle_n_errors; //!< Number of errors in handle assignment - int barcode_handle_filtered; //!< Read was filtered for not matching any handle + bool barcode_handle_filtered; //!< Read was filtered for not matching any handle // End barcodes int end_barcode_index; //!< In case we demulitplex read groups, the end barcode index. - int end_barcode_filtered; //!< Read was filtered for not matching end barcode + bool end_barcode_filtered; //!< Read was filtered for not matching end barcode int end_bc_n_errors; //!< Number of errors in end barcode assignment bool end_adapter_filtered; //!< Indicator whether barcode adapter was too dissimilar int end_handle_index; //!< Index of assigned handle @@ -254,6 +241,7 @@ class OrderedDatasetWriter { vector read_group_dataset_; //!< Which dataset should a given read group be saved to? vector read_group_name_; int num_read_groups_; + int no_barcode_read_group_; //!< Index of the non-barcoded read group int num_regions_; //!< Total number of regions to expect int num_regions_written_; //!< Number of regions physically written thus far diff --git a/Analysis/BaseCaller/ReadClassMap.h b/Analysis/BaseCaller/ReadClassMap.h index 06ff60b1..49d704a4 100644 --- a/Analysis/BaseCaller/ReadClassMap.h +++ b/Analysis/BaseCaller/ReadClassMap.h @@ -137,6 +137,10 @@ class ReadClassMap { return ClassMatch(y*W+x, type); }; + inline uint16_t getClass(int x, int y) const + { + return (class_map.at(y*W+x)); + } inline bool ClassMatch(int index, ReadClassType type) const { if ( index < 0 || index >= ( W*H ) ) diff --git a/Analysis/BaseCaller/TreephaserSSE.cpp b/Analysis/BaseCaller/TreephaserSSE.cpp index 5093be7d..7f3f8c03 100644 --- a/Analysis/BaseCaller/TreephaserSSE.cpp +++ b/Analysis/BaseCaller/TreephaserSSE.cpp @@ -498,10 +498,10 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) rNucCpy = _mm_cmpeq_epi32(rNucCpy, rNucIdx); // store max_flow in ad_FlowEnd - _mm_store_si128((__m128i*)ad_FlowEnd, rFlowEnd); + _mm_store_si128((__m128i*)&ad_FlowEnd, rFlowEnd); // four child flows in four 32 bit integers - _mm_store_si128((__m128i*)ad_Idx, rNucIdx); + _mm_store_si128((__m128i*)&ad_Idx, rNucIdx); // changes datatype from int to float without doing any conversion __m128 rParNuc = _mm_castsi128_ps(rNucCpy); @@ -576,7 +576,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) rTemp1i = _mm_cmpeq_epi32(rTemp1i, rI); // filter min frac for nuc homopolymer child paths - rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)ad_MinFrac)); + rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)&ad_MinFrac)); // compares not less than equal to for two _m128i words. Entries will be 0xFFFF... for words where // (kStateWindowCutoff > child->state[flow]). Rest of the words are 0 @@ -649,7 +649,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) if(EXPECTED(ad_Adv == 0)) { // child window start - _mm_store_si128((__m128i*)ad_Beg, rBeg); + _mm_store_si128((__m128i*)&ad_Beg, rBeg); // flow < parent->window_end - 1 while(i < parLast) { @@ -747,7 +747,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) rTemp1s = _mm_or_ps(rTemp1s, rParNuc); rTemp1s = _mm_castsi128_ps(_mm_cmpeq_epi32(_mm_castps_si128(rTemp1s), rI)); rTemp1s = _mm_and_ps(rTemp1s, rAlive); - rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)ad_MinFrac)); + rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)&ad_MinFrac)); // child->window_end < max_flow rS = _mm_cmpnle_ps((_mm_castsi128_ps)(rFlowEnd), (_mm_castsi128_ps)(rEnd)); // flow == child->window_end-1 and child->window_end < max_flow and alive > kStateWindowCutoff @@ -805,7 +805,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) rTemp1s = _mm_or_ps(rTemp1s, rParNuc); rTemp1s = _mm_castsi128_ps(_mm_cmpeq_epi32(_mm_castps_si128(rTemp1s), rI)); rTemp1s = _mm_and_ps(rTemp1s, rAlive); - rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)ad_MinFrac)); + rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)&ad_MinFrac)); // child->window_end < max_flow rS = _mm_cmpnle_ps((_mm_castsi128_ps)(rFlowEnd), (_mm_castsi128_ps)(rEnd)); // flow == child->window_end-1 and child->window_end < max_flow and alive > kStateWindowCutoff @@ -817,8 +817,8 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) j += 4; } - rEnd = _mm_min_epi16(rEnd, *((__m128i*)ad_FlowEnd)); - _mm_store_si128((__m128i*)ad_End, rEnd); + rEnd = _mm_min_epi16(rEnd, *((__m128i*)&ad_FlowEnd)); + _mm_store_si128((__m128i*)&ad_End, rEnd); } // This branch is for if one of the child paths has an increase in window_start @@ -846,7 +846,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) __m128i rTemp1i = rBeg; rTemp1i = _mm_or_si128(rTemp1i, _mm_castps_si128(rParNuc)); rTemp1i = _mm_cmpeq_epi32(rTemp1i, rI); - rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)ad_MinFrac)); + rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)&ad_MinFrac)); rTemp1s = _mm_cmpnle_ps(rTemp1s, rS); rBeg = _mm_sub_epi32(rBeg, _mm_castps_si128(rTemp1s)); rTemp1i = rBeg; @@ -890,7 +890,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) // obtain state for child paths thar are incorporating new hp rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), rAlive); // child->state[flow] < kStateWindowCutoff - rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)ad_MinFrac)); + rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)&ad_MinFrac)); // child->window_end < max_flow rS = _mm_cmpnle_ps((_mm_castsi128_ps)(rFlowEnd), (_mm_castsi128_ps)(rEnd)); // flow == child->window_end-1 and child->window_end < max_flow and alive > kStateWindowCutoff @@ -922,7 +922,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) __m128i rTemp1i = rBeg; rTemp1i = _mm_or_si128(rTemp1i, _mm_castps_si128(rParNuc)); rTemp1i = _mm_cmpeq_epi32(rTemp1i, rI); - rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)ad_MinFrac)); + rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), *((__m128*)&ad_MinFrac)); rTemp1s = _mm_cmpnle_ps(rTemp1s, rS); rBeg = _mm_sub_epi32(rBeg, _mm_castps_si128(rTemp1s)); rTemp1i = rBeg; @@ -956,7 +956,7 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) rTemp1i = _mm_or_si128(rTemp1i, _mm_castps_si128(rParNuc)); rTemp1i = _mm_cmpeq_epi32(rTemp1i, rI); rTemp1s = _mm_and_ps(_mm_castsi128_ps(rTemp1i), rAlive); - rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)ad_MinFrac)); + rTemp1s = _mm_cmpnle_ps(rTemp1s, *((__m128*)&ad_MinFrac)); // child->window_end < max_flow rS = _mm_cmpnle_ps((_mm_castsi128_ps)(rFlowEnd), (_mm_castsi128_ps)(rEnd)); // flow == child->window_end-1 and child->window_end < max_flow and alive > kStateWindowCutoff @@ -968,9 +968,9 @@ void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) j += 4; } - rEnd = _mm_min_epi16(rEnd, *((__m128i*)ad_FlowEnd)); - _mm_store_si128((__m128i*)ad_Beg, rBeg); - _mm_store_si128((__m128i*)ad_End, rEnd); + rEnd = _mm_min_epi16(rEnd, *((__m128i*)&ad_FlowEnd)); + _mm_store_si128((__m128i*)&ad_Beg, rBeg); + _mm_store_si128((__m128i*)&ad_End, rEnd); } } @@ -1028,9 +1028,139 @@ void TreephaserSSE::SolveRead(BasecallerRead& read, int begin_flow, int end_flow } // ------------------------------------------------- +void TreephaserSSE::sortPaths(int & pathCnt) +{ + if(pathCnt > 3) { + int m = sv_PathPtr[0]->flow; + int i = 1; + do { + int n = sv_PathPtr[i]->flow; + if(m < n) + m = n; + } while(++i < pathCnt); + if((m -= MAX_PATH_DELAY) > 0) { + do { + if(sv_PathPtr[--i]->flow < m) + swap(sv_PathPtr[i], sv_PathPtr[--pathCnt]); + } while(i > 0); + } + } + + while(pathCnt > MAX_PATHS-4) { + float m = sv_PathPtr[0]->flowMetr; + int i = 1; + int j = 0; + do { + float n = sv_PathPtr[i]->flowMetr; + if(m < n) { + m = n; + j = i; + } + } while(++i < pathCnt); + swap(sv_PathPtr[j], sv_PathPtr[--pathCnt]); + } + +} + +float TreephaserSSE::computeParentDist(PathRec RESTRICT_PTR parent, int end_flow) +{ + // XXX Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end of calibA and calibB + // Computing squared distance between parent's predicted signal and normalized measurements + float dist = parent->res+(rd_SqNormMeasureSum[parent->window_end]-rd_SqNormMeasureSum[end_flow]); + for(int i = parent->window_start; i < parent->window_end; ++i) { + if((i & 3) == 0) { + if (recalibrate_predictions_) { + dist += sumOfSquaredDiffsFloatSSE_recal((float*)(&(rd_NormMeasure[i])), + (float*)(&(parent->pred[i])), + (float*)(&(parent->calib_A[i])), + (float*)(&(parent->calib_B[i])), + parent->window_end-i); + } else { + dist += sumOfSquaredDiffsFloatSSE((float*)(&(rd_NormMeasure[i])), + (float*)(&(parent->pred[i])), + parent->window_end-i); + } + break; + } + if (recalibrate_predictions_) + dist += Sqr(rd_NormMeasure[i]-parent->pred[i]*parent->calib_A[i]-parent->calib_B[i]); + else + dist += Sqr(rd_NormMeasure[i]-parent->pred[i]); + } + // Finished computing squared distance + return dist; +} + +void TreephaserSSE::CopyPath(PathRec RESTRICT_PTR dest, PathRec RESTRICT_PTR parent, PathRec RESTRICT_PTR child) +{ + dest->flowMetr = (child->flow == 0) ? 0 : ((child->metr + 0.5f*child->flowMetr) / child->flow); + char RESTRICT_PTR p = ad_Buf+child->nuc*4+AD_STATE_OFS; + for(int i = parent->window_start, j = 0, e = child->window_end; i < e; ++i, j += 16) { + dest->state[i] = *((float*)(p+j)); + dest->pred[i] = *((float*)(p+j+(AD_PRED_OFS-AD_STATE_OFS))); + } + if(dest != parent){ + // copy the beginning of the arrays as well + copySSE(dest->pred, parent->pred, parent->window_start << 2); + copySSE(dest->sequence, parent->sequence, parent->sequence_length); + } + + if(state_inphase_enabled_){ + if(dest != parent && child->flow > 0){ + int cpSize = (parent->flow+1)*sizeof(float); + copySSE(dest->state_inphase, parent->state_inphase, cpSize); + } + //extending from parent->state_inphase[parent->flow] to fill the gap + for(int tempInd = parent->flow+1; tempInd < child->flow; tempInd++){ + dest->state_inphase[tempInd] = max(dest->state[child->flow],0.01f); + } + dest->state_inphase[child->flow] = max(dest->state[child->flow],0.01f); + } + + int psl=parent->sequence_length; + dest->sequence_length = psl + 1; + dest->sequence[psl] = flow_order_[child->flow]; + if (psl and dest->sequence[psl] != dest->sequence[psl-1]) + dest->last_hp = 0; + else + dest->last_hp = parent->last_hp; + dest->last_hp++; + + // copy whole vector to avoid memory access to fields that have been written to by (longer) previously discarded paths XXX + // --> Reintroducing memory overrun since it seems to yield better performance + if (recalibrate_predictions_) { + if(dest != parent && child->flow > 0){ + // --- Reverting to old code with memory overrun + int cpSize = (parent->flow+1) << 2; + memcpy(dest->calib_A, parent->calib_A, cpSize); + memcpy(dest->calib_B, parent->calib_B, cpSize); + // --- + //copySSE(dest->calib_A, parent->calib_A, num_flows_*sizeof(float)); + //copySSE(dest->calib_B, parent->calib_B, num_flows_*sizeof(float)); + } + //explicitly fill zeros between parent->flow and dest->flow; + for(int tempInd = parent->flow + 1; tempInd < child->flow; tempInd++){ + dest->calib_A[tempInd] = 1.0f; + dest->calib_B[tempInd] = 0.0f; + } + int hp_length = min(dest->last_hp, MAX_HPXLEN); + dest->calib_A[child->flow] = (*As_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); + dest->calib_B[child->flow] = (*Bs_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); + } + if(dest == parent){ + dest->flow = child->flow; + dest->window_start = child->window_start; + dest->window_end = child->window_end; + dest->res = child->res; + dest->metr = child->metr; + dest->dotCnt = child->dotCnt; + } +} bool TreephaserSSE::Solve(int begin_flow, int end_flow) { + uint32_t num_paths=0; + uint32_t gblPathName=0; sumNormMeasures(); PathRec RESTRICT_PTR parent = sv_PathPtr[0]; @@ -1100,35 +1230,7 @@ bool TreephaserSSE::Solve(int begin_flow, int end_flow) do { - if(pathCnt > 3) { - int m = sv_PathPtr[0]->flow; - int i = 1; - do { - int n = sv_PathPtr[i]->flow; - if(m < n) - m = n; - } while(++i < pathCnt); - if((m -= MAX_PATH_DELAY) > 0) { - do { - if(sv_PathPtr[--i]->flow < m) - swap(sv_PathPtr[i], sv_PathPtr[--pathCnt]); - } while(i > 0); - } - } - - while(pathCnt > MAX_PATHS-4) { - float m = sv_PathPtr[0]->flowMetr; - int i = 1; - int j = 0; - do { - float n = sv_PathPtr[i]->flowMetr; - if(m < n) { - m = n; - j = i; - } - } while(++i < pathCnt); - swap(sv_PathPtr[j], sv_PathPtr[--pathCnt]); - } + sortPaths(pathCnt); parent = sv_PathPtr[0]; int parentPathIdx = 0; @@ -1141,225 +1243,140 @@ bool TreephaserSSE::Solve(int begin_flow, int end_flow) break; int parent_flow = parent->flow; - // compute child path flow states, predicted signal,negative and positive penalties - advanceState4(parent, end_flow); + float dist = computeParentDist(parent,end_flow); - int n = pathCnt; - double bestpen = 25.0; - for(int nuc = 0; nuc < 4; ++nuc) { - PathRec RESTRICT_PTR child = sv_PathPtr[n]; - child->flow = min(ad_Idx[nuc], end_flow); - child->window_start = ad_Beg[nuc]; - child->window_end = min(ad_End[nuc], end_flow); + int bestPathIdx = -1; + int childPathIdx = -1; - // Do not attempt to calculate child->last_hp in this loop; bad things happen - if(child->flow >= end_flow or parent->last_hp >= MAX_HPXLEN or parent->sequence_length >= 2*MAX_VALS-10) - continue; + // current best path is parent path + if(bestDist > dist) { + bestPathIdx = parentPathIdx; + parentPathIdx = -1; + } - // pointer in the ad_Buf buffer pointing at the running sum of positive residuals at start of parent window - char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; + // compute child path flow states, predicted signal,negative and positive penalties + advanceState4(parent, end_flow); - // child path metric - float metr = parent->res + *((float*)(pn+child->window_start*16+(AD_PRES_OFS-AD_NRES_OFS))); - // sum of squared residuals for positive residuals for flows < child->flow - float penPar = *((float*)(pn+child->flow*16+(AD_PRES_OFS-AD_NRES_OFS))); + v4i flowV = ad_Idx; + v4i window_startV=ad_Beg; + v4i window_endV={min(ad_End[0], end_flow),min(ad_End[1], end_flow),min(ad_End[2], end_flow),min(ad_End[3], end_flow)}; + v4i dotCntV={0}; + v4f penParV; + v4f penNegV; + v4f metrV = LD_VEC4F(parent->res); + v4f resV; - // sum of squared residuals for negative residuals for flows < child->window_end - float penNeg = *((float*)(pn+child->window_end*16)); + float bestpen = 19.8; - // sum of squared residuals left of child window start - child->res = metr + *((float*)(pn+child->window_start*16)); - - metr += penNeg; + for(int nuc = 0; nuc < 4; ++nuc) { + char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; + metrV[nuc] += *((float*)(pn+ad_Beg[nuc]*16+(AD_PRES_OFS-AD_NRES_OFS))); + penParV[nuc] = *((float*)(pn+ad_Idx[nuc]*16+(AD_PRES_OFS-AD_NRES_OFS))); + penNegV[nuc] = *((float*)(pn+window_endV[nuc]*16)); + resV[nuc] = metrV[nuc] + *((float*)(pn+ad_Beg[nuc]*16)); - // penPar corresponds to penalty1 in DPTreephaser.cpp - penPar += penNeg; - penNeg += penPar; + } + metrV += penNegV; + penParV += penNegV; + penNegV += penParV; - // penalty = penalty1 + (kNegativeMultiplier = 2)*penNeg - if(penNeg >= 20.0) + int useChild[4]={0}; + int usedChildren=0; + int n = pathCnt; + + for(int nuc = 0; nuc < 4; ++nuc) { + + // Do not attempt to calculate child->last_hp in this loop; bad things happen + if(flowV[nuc] >= end_flow or parent->last_hp >= MAX_HPXLEN or parent->sequence_length >= 2*MAX_VALS-10) continue; - if(bestpen > penNeg) - bestpen = penNeg; - else if(penNeg-bestpen >= 0.2) + if(bestpen > penNegV[nuc]) + bestpen = penNegV[nuc]; + else if(penNegV[nuc]-bestpen >= 0.2) continue; // child->path_metric > sum_of_squares_upper_bound - if(metr > bestDist) + if(metrV[nuc] > bestDist) continue; - float newSignal = rd_NormMeasure[child->flow]; + float newSignal = rd_NormMeasure[flowV[nuc]]; // XXX Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end // Check 'dot' criterion - if(child->flow < parent->window_end){ + if(flowV[nuc] < parent->window_end){ if (recalibrate_predictions_) - newSignal -= (parent->calib_A[child->flow]*parent->pred[child->flow]+parent->calib_B[child->flow]); + newSignal -= (parent->calib_A[flowV[nuc]]*parent->pred[flowV[nuc]]+parent->calib_B[flowV[nuc]]); else - newSignal -= parent->pred[child->flow]; + newSignal -= parent->pred[flowV[nuc]]; } - newSignal /= *((float*)(pn+child->flow*16+(AD_STATE_OFS-AD_NRES_OFS+16))); - child->dotCnt = 0; + // pointer in the ad_Buf buffer pointing at the running sum of positive residuals at start of parent window + char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; + newSignal /= *((float*)(pn+flowV[nuc]*16+(AD_STATE_OFS-AD_NRES_OFS+16))); if(newSignal < 0.3f) { if(parent->dotCnt > 0) continue; - child->dotCnt = 1; + dotCntV[nuc] = 1; } - // child path survives at this point - child->metr = float(metr); - child->flowMetr = float(penPar); - child->penalty = float(penNeg); - child->nuc = nuc; - ++n; + useChild[nuc]=1; + usedChildren++; } - // XXX Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end of calibA and calibB - // Computing squared distance between parent's predicted signal and normalized measurements - float dist = parent->res+(rd_SqNormMeasureSum[parent->window_end]-rd_SqNormMeasureSum[end_flow]); - for(int i = parent->window_start; i < parent->window_end; ++i) { - if((i & 3) == 0) { - if (recalibrate_predictions_) { - dist += sumOfSquaredDiffsFloatSSE_recal((float*)(&(rd_NormMeasure[i])), - (float*)(&(parent->pred[i])), - (float*)(&(parent->calib_A[i])), - (float*)(&(parent->calib_B[i])), - parent->window_end-i); - } else { - dist += sumOfSquaredDiffsFloatSSE((float*)(&(rd_NormMeasure[i])), - (float*)(&(parent->pred[i])), - parent->window_end-i); - } - break; - } - if (recalibrate_predictions_) - dist += Sqr(rd_NormMeasure[i]-parent->pred[i]*parent->calib_A[i]-parent->calib_B[i]); - else - dist += Sqr(rd_NormMeasure[i]-parent->pred[i]); - } - // Finished computing squared distance +// for(int nuc = 0; nuc < 4; ++nuc) { +// if(useChild[nuc]==0) +// continue; +// if(penNegV[nuc]-bestpen >= 0.2f) +// useChild[nuc]=0; +// } - int bestPathIdx = -1; + for(int nuc = 0; nuc < 4; ++nuc) { + if(useChild[nuc]==0) + continue; - // current best path is parent path - if(bestDist > dist) { - bestPathIdx = parentPathIdx; - parentPathIdx = -1; + // child path survives at this point + PathRec RESTRICT_PTR child = sv_PathPtr[n]; + child->flow = flowV[nuc]; + child->window_start = window_startV[nuc]; + child->window_end = window_endV[nuc]; + child->metr = metrV[nuc]; + child->flowMetr = penParV[nuc]; + child->res = resV[nuc]; + child->penalty = penNegV[nuc]; + child->nuc = nuc; + child->dotCnt = dotCntV[nuc]; + ++n; } - int childPathIdx = -1; while(pathCnt < n) { PathRec RESTRICT_PTR child = sv_PathPtr[pathCnt]; // Rule that depends on finding the best nuc if(child->penalty-bestpen >= 0.2f) { sv_PathPtr[pathCnt] = sv_PathPtr[--n]; sv_PathPtr[n] = child; - } - else if((childPathIdx < 0) && (parentPathIdx >= 0)) { + usedChildren--; + } + else + if((childPathIdx < 0) && (parentPathIdx >= 0)) { sv_PathPtr[pathCnt] = sv_PathPtr[--n]; sv_PathPtr[n] = child; childPathIdx = n; } - // this is the child path to be kept else { - if (child->flow) - child->flowMetr = (child->metr + 0.5f*child->flowMetr) / child->flow; - char RESTRICT_PTR p = ad_Buf+child->nuc*4+AD_STATE_OFS; - for(int i = parent->window_start, j = 0, e = child->window_end; i < e; ++i, j += 16) { - child->state[i] = *((float*)(p+j)); - child->pred[i] = *((float*)(p+j+(AD_PRED_OFS-AD_STATE_OFS))); - } - copySSE(child->pred, parent->pred, parent->window_start << 2); - - copySSE(child->sequence, parent->sequence, parent->sequence_length); - - if(state_inphase_enabled_){ - if(child->flow > 0){ - int cpSize = (parent->flow+1)*sizeof(float); - copySSE(child->state_inphase, parent->state_inphase, cpSize); - } - //extending from parent->state_inphase[parent->flow] to fill the gap - for(int tempInd = parent->flow+1; tempInd < child->flow; tempInd++){ - child->state_inphase[tempInd] = max(child->state[child->flow],0.01f); - } - child->state_inphase[child->flow] = max(child->state[child->flow],0.01f); - } - - child->sequence_length = parent->sequence_length + 1; - child->sequence[parent->sequence_length] = flow_order_[child->flow]; - if (parent->sequence_length and child->sequence[parent->sequence_length] != child->sequence[parent->sequence_length-1]) - child->last_hp = 0; - else - child->last_hp = parent->last_hp; - child->last_hp++; - - // copy whole vector to avoid memory access to fields that have been written to by (longer) previously discarded paths XXX - // --> Reintroducing memory overrun since it seems to yield better performance - if (recalibrate_predictions_) { - if(child->flow > 0){ - // --- Reverting to old code with memory overrun - int cpSize = (parent->flow+1) << 2; - memcpy(child->calib_A, parent->calib_A, cpSize); - memcpy(child->calib_B, parent->calib_B, cpSize); - // --- - //copySSE(child->calib_A, parent->calib_A, num_flows_*sizeof(float)); - //copySSE(child->calib_B, parent->calib_B, num_flows_*sizeof(float)); - } - //explicitly fill zeros between parent->flow and child->flow; - for(int tempInd = parent->flow + 1; tempInd < child->flow; tempInd++){ - child->calib_A[tempInd] = 1.0f; - child->calib_B[tempInd] = 0.0f; - } - int hp_length = min(child->last_hp, MAX_HPXLEN); - child->calib_A[child->flow] = (*As_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); - child->calib_B[child->flow] = (*Bs_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); - } + CopyPath(child,parent,child); ++pathCnt; +// ++num_paths; } } +// printf("pathCnt=%d ",pathCnt); +// for(int pthNum=0;pthNumwindow_start,sv_PathPtr[pthNum]->window_end,sv_PathPtr[pthNum]->metr,sv_PathPtr[pthNum]->penalty); +// } +// printf("\n"); // In the event, there is no best path, one of the child is copied to the parent if(childPathIdx >= 0) { - PathRec RESTRICT_PTR child = sv_PathPtr[childPathIdx]; - parent_flow = parent->flow; //MJ - parent->flow = child->flow; - parent->window_end = child->window_end; - parent->res = child->res; - parent->metr = child->metr; - (child->flow == 0) ? (parent->flowMetr == 0) : (parent->flowMetr = (child->metr + 0.5f*child->flowMetr) / child->flow); - parent->dotCnt = child->dotCnt; - char RESTRICT_PTR p = ad_Buf+child->nuc*4+AD_STATE_OFS; - for(int i = parent->window_start, j = 0, e = child->window_end; i < e; ++i, j += 16) { - parent->state[i] = *((float*)(p+j)); - parent->pred[i] = *((float*)(p+j+(AD_PRED_OFS-AD_STATE_OFS))); - } - - parent->sequence[parent->sequence_length] = flow_order_[parent->flow]; - if (parent->sequence_length and parent->sequence[parent->sequence_length] != parent->sequence[parent->sequence_length-1]) - parent->last_hp = 0; - parent->last_hp = min(parent->last_hp+1, MAX_HPXLEN); - parent->sequence_length++; - - //update calib_A and calib_B for parent - if (recalibrate_predictions_) { - for(int tempInd = parent_flow + 1; tempInd < child->flow; tempInd++){ - parent->calib_A[tempInd] = 1.0f; - parent->calib_B[tempInd] = 0.0f; - } - parent->calib_A[parent->flow] = (*As_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - parent->calib_B[parent->flow] = (*Bs_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - } - - if(state_inphase_enabled_){ - for(int tempInd = parent_flow+1; tempInd < parent->flow; tempInd++){ - parent->state_inphase[tempInd] = parent->state[parent->flow]; - } - parent->state_inphase[parent->flow] = parent->state[parent->flow]; - } - - parent->window_start = child->window_start; + CopyPath(parent,parent,sv_PathPtr[childPathIdx]); parentPathIdx = -1; } @@ -1382,6 +1399,7 @@ bool TreephaserSSE::Solve(int begin_flow, int end_flow) ResetRecalibrationStructures(num_flows_); } +// printf("num_paths=%d num_flows=%d-%d\n",num_paths,begin_flow, end_flow); return false; } diff --git a/Analysis/BaseCaller/TreephaserSSE.h b/Analysis/BaseCaller/TreephaserSSE.h index aca42e2b..a3571b09 100644 --- a/Analysis/BaseCaller/TreephaserSSE.h +++ b/Analysis/BaseCaller/TreephaserSSE.h @@ -8,6 +8,7 @@ #include #include #include "BaseCallerUtils.h" +#include "Vecs.h" #ifdef _WIN32 #define ALIGN(AAlignSize) __declspec(align(AAlignSize)) @@ -140,6 +141,10 @@ class TreephaserSSE { //! @brief Solving a read bool Solve(int begin_flow, int end_flow); //! @brief Normalizing a read + void sortPaths(int & pathCnt); + float computeParentDist(PathRec RESTRICT_PTR parent, int end_flow); + void CopyPath(PathRec RESTRICT_PTR dest, PathRec RESTRICT_PTR parent, PathRec RESTRICT_PTR child); + void WindowedNormalize(BasecallerRead& read, int step); //! @brief Make recalibration changes to predictions explicitly visible void RecalibratePredictions(PathRec *maxPathPtr); @@ -165,11 +170,11 @@ class TreephaserSSE { ALIGN(64) float ft_stepNorms[MAX_STEPS]; - ALIGN(64) float ad_MinFrac[4]; - ALIGN(16) int ad_FlowEnd[4]; - ALIGN(16) int ad_Idx[4]; - ALIGN(16) int ad_End[4]; - ALIGN(16) int ad_Beg[4]; + ALIGN(64) v4f ad_MinFrac; + ALIGN(16) v4i ad_FlowEnd; + ALIGN(16) v4i ad_Idx; + ALIGN(16) v4i ad_End; + ALIGN(16) v4i ad_Beg; ALIGN(16) char ad_Buf[4*MAX_VALS*4*sizeof(float)]; ion::FlowOrder flow_order_; //!< Sequence of nucleotide flows diff --git a/Analysis/BaseCaller/TreephaserVEC.cpp b/Analysis/BaseCaller/TreephaserVEC.cpp index f1754f34..8a98804d 100644 --- a/Analysis/BaseCaller/TreephaserVEC.cpp +++ b/Analysis/BaseCaller/TreephaserVEC.cpp @@ -10,11 +10,10 @@ #include #include -#include "BaseCallerUtils.h" -#include "DPTreephaser.h" - -#define SHUF_PS(reg, mode) _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(reg), mode)) +//#define PRINT_DEBUG 1 +//#define DO_DEBUG (dbgX==1080 && dbgY==2133) +#define DFLT_CACHE 0x100000 using namespace std; @@ -22,81 +21,26 @@ ALWAYS_INLINE float Sqr(float val) { return val*val; } -inline void setZeroSSE(void *dst, int size) { - v4i r0 = LD_VEC4I(0); - v4i *dstV=(v4i *)dst; - int lsize=size/16; +#define memcpy_C(d,s,l) memcpy(d,s,l) - while((size & 15) != 0) { - --size; - ((char*)dst)[size] = char(0); - } - while(lsize) { - lsize--; - dstV[lsize]=r0; - } -} +#define memcpy_F(d,s,l) { \ + float *dst=(d); float *src=(s); int size=(l); \ + while (size--) dst[size] = src[size]; } +#define memcpy_4F(d,s,l) { \ + float *dst=(d); float *src=(s); int size=(l); \ + while (size--) dst[size] = src[4*size]; } -inline void setValueSSE(float *buf, float val, int size) { - v4f valV=LD_VEC4F(val); - v4f *bufV=(v4f *)buf; - int lsize=size/4; - int i=0; - for(;i 0) { - count--; - dstV[count] += srcV[count]; - } -} - - // ---------------------------------------------------------------------------- // Constructor used in variant caller -TreephaserSSE::TreephaserSSE() - : flow_order_("TACG", 4), my_cf_(-1.0), my_ie_(-1.0), As_(NULL), Bs_(NULL) +TreephaserVEC::TreephaserVEC() + : flow_order_("TACG", 4), my_cf_(-1.0), my_ie_(-1.0), As_(NULL), Bs_(NULL), + bad_path_limit_(10000), many_path_limit_(10000), + initial_paths_(-1),max_metr_diff_(0.3) { SetNormalizationWindowSize(38); SetFlowOrder(flow_order_); } // Constructor used in Basecaller -TreephaserSSE::TreephaserSSE(const ion::FlowOrder& flow_order, const int windowSize) - : my_cf_(-1.0), my_ie_(-1.0), As_(NULL), Bs_(NULL) +TreephaserVEC::TreephaserVEC(const ion::FlowOrder& flow_order, const int windowSize) + : my_cf_(-1.0), my_ie_(-1.0), As_(NULL), Bs_(NULL), + bad_path_limit_(10000), many_path_limit_(10000), + initial_paths_(-1),max_metr_diff_(0.3) { SetNormalizationWindowSize(windowSize); SetFlowOrder(flow_order); @@ -205,47 +98,19 @@ TreephaserSSE::TreephaserSSE(const ion::FlowOrder& flow_order, const int windowS // ---------------------------------------------------------------- // Initilizes all float variables to NAN so that they cause mayhem if we read out of bounds // and so that valgrind does not complain about uninitialized variables -void TreephaserSSE::InitializeVariables(float init_val) { - - // Initializing the elements of the paths - for (unsigned int path = 0; path <= MAX_PATHS; ++path) { - sv_PathPtr[path]->flow = 0; - sv_PathPtr[path]->window_start = 0; - sv_PathPtr[path]->window_end = 0; - sv_PathPtr[path]->dotCnt = 0; - sv_PathPtr[path]->sequence_length = 0; - sv_PathPtr[path]->last_hp = 0; - sv_PathPtr[path]->nuc = 0; - - sv_PathPtr[path]->res = init_val; - sv_PathPtr[path]->metr = init_val; - sv_PathPtr[path]->flowMetr = init_val; - sv_PathPtr[path]->penalty = init_val; - for (int val=0; valstate[val] = init_val; - sv_PathPtr[path]->pred[val] = init_val; - sv_PathPtr[path]->state_inphase[val] = init_val; - } - for (int val=0; val<(2*MAX_VALS + 12); val++) - sv_PathPtr[path]->sequence[val] = 0; - } +void TreephaserVEC::InitializeVariables() { + // Initializing the other variables of the object for (unsigned int idx=0; idx<4; idx++) { - ad_FlowEnd.A[idx] = 0; - ad_Idx.A[idx] = 0; - ad_End.A[idx] = 0; - ad_Beg.A[idx] = 0; + ad_FlowEnd[idx] = 0; + flow_Buf[idx] = 0; + winEnd_Buf[idx] = 0; + winStart_Buf[idx] = 0; } for (unsigned int val=0; val= 0; --flow) { nextIdx[flow_order_.int_at(flow)] = flow; - ts_NextNuc[0][flow] = (short)(ts_NextNuc4[flow].A[0] = nextIdx[0]); - ts_NextNuc[1][flow] = (short)(ts_NextNuc4[flow].A[1] = nextIdx[1]); - ts_NextNuc[2][flow] = (short)(ts_NextNuc4[flow].A[2] = nextIdx[2]); - ts_NextNuc[3][flow] = (short)(ts_NextNuc4[flow].A[3] = nextIdx[3]); + ts_NextNuc[flow] = nextIdx; } ts_StepCnt = 0; @@ -298,7 +149,6 @@ void TreephaserSSE::SetFlowOrder(const ion::FlowOrder& flow_order) // The initialization of the recalibration fields for all paths is necessary since we are // over-running memory in the use of the recalibration parameters - ResetRecalibrationStructures(MAX_VALS); pm_model_available_ = false; recalibrate_predictions_ = false; @@ -308,7 +158,7 @@ void TreephaserSSE::SetFlowOrder(const ion::FlowOrder& flow_order) // ---------------------------------------------------------------- -void TreephaserSSE::SetModelParameters(double cf, double ie) +void TreephaserVEC::SetModelParameters(double cf, double ie) { if (cf == my_cf_ and ie == my_ie_) return; @@ -317,13 +167,13 @@ void TreephaserSSE::SetModelParameters(double cf, double ie) for(int flow = 0; flow < num_flows_; ++flow) { dist[flow_order_.int_at(flow)] = 1.0; - ts_Transition4[flow].A[0] = ts_Transition[0][flow] = float(dist[0]*(1-ie)); + ts_Transition[flow][0] = float(dist[0]*(1-ie)); dist[0] *= cf; - ts_Transition4[flow].A[1] = ts_Transition[1][flow] = float(dist[1]*(1-ie)); + ts_Transition[flow][1] = float(dist[1]*(1-ie)); dist[1] *= cf; - ts_Transition4[flow].A[2] = ts_Transition[2][flow] = float(dist[2]*(1-ie)); + ts_Transition[flow][2] = float(dist[2]*(1-ie)); dist[2] *= cf; - ts_Transition4[flow].A[3] = ts_Transition[3][flow] = float(dist[3]*(1-ie)); + ts_Transition[flow][3] = float(dist[3]*(1-ie)); dist[3] *= cf; } my_cf_ = cf; @@ -332,15 +182,17 @@ void TreephaserSSE::SetModelParameters(double cf, double ie) // ---------------------------------------------------------------- -void TreephaserSSE::NormalizeAndSolve(BasecallerRead& read) +void TreephaserVEC::NormalizeAndSolve(BasecallerRead& read) { - copySSE(rd_NormMeasure, &read.raw_measurements[0], num_flows_*sizeof(float)); + memcpy_F(rd_NormMeasure, &read.raw_measurements[0], num_flows_); // Disable recalibration during normalization stage if requested if (skip_recal_during_normalization_) recalibrate_predictions_ = false; + Solve(ts_StepBeg[0], ts_StepEnd[0], ts_StepBeg[1], initial_paths_, max_metr_diff_); + WindowedNormalize(read, 0); for(int step = 0; step < ts_StepCnt; ++step) { - bool is_final = Solve(ts_StepBeg[step], ts_StepEnd[step]); + bool is_final = Solve(ts_StepBeg[step], ts_StepEnd[step], ts_StepBeg[step+1], initial_paths_, max_metr_diff_); WindowedNormalize(read, step); if (is_final) break; @@ -351,862 +203,756 @@ void TreephaserSSE::NormalizeAndSolve(BasecallerRead& read) // And turn recalibration back on (if available) for the final solving part EnableRecalibration(); - Solve(ts_StepBeg[ts_StepCnt], ts_StepEnd[ts_StepCnt]); + Solve(ts_StepBeg[ts_StepCnt], ts_StepEnd[ts_StepCnt], ts_StepEnd[ts_StepCnt], -1, max_metr_diff_); - int to_flow = min(sv_PathPtr[MAX_PATHS]->window_end, num_flows_); // Apparently window_end can be larger than num_flows_ - read.sequence.resize(sv_PathPtr[MAX_PATHS]->sequence_length); - copySSE(&read.sequence[0], sv_PathPtr[MAX_PATHS]->sequence, sv_PathPtr[MAX_PATHS]->sequence_length*sizeof(char)); - copySSE(&read.normalized_measurements[0], rd_NormMeasure, num_flows_*sizeof(float)); - setZeroSSE(&read.prediction[0], num_flows_*sizeof(float)); - copySSE(&read.prediction[0], sv_PathPtr[MAX_PATHS]->pred, to_flow*sizeof(float)); - setZeroSSE(&read.state_inphase[0], num_flows_*sizeof(float)); - copySSE(&read.state_inphase[0], sv_PathPtr[MAX_PATHS]->state_inphase, to_flow*sizeof(float)); + int to_flow = min(sv_PathPtr[BEST_PATH]->window_end, num_flows_); // Apparently window_end can be larger than num_flows_ + read.sequence.resize(sv_PathPtr[BEST_PATH]->sequence_length); + memcpy_C(&read.sequence[0], sv_PathPtr[BEST_PATH]->sequence, sv_PathPtr[BEST_PATH]->sequence_length); + memcpy_F(&read.normalized_measurements[0], rd_NormMeasure, num_flows_); + memset_F(&read.prediction[to_flow], 0, num_flows_-to_flow); + memcpy_F(&read.prediction[0], sv_PathPtr[BEST_PATH]->pred, to_flow); + memset_F(&read.state_inphase[to_flow], 0, num_flows_-to_flow); + memcpy_F(&read.state_inphase[0], sv_PathPtr[BEST_PATH]->state_inphase, to_flow); // copy inphase population and reset state_inphase flag if(state_inphase_enabled_){ for (int p = 0; p <= 8; ++p) { - setZeroSSE(&(sv_PathPtr[p]->state_inphase[0]), num_flows_*sizeof(float)); + memset_F(&(sv_PathPtr[p]->state_inphase[0]), 0, num_flows_); } } state_inphase_enabled_ = false; } -// ---------------------------------------------------------------------- - -// advanceStateInPlace is only used for the simulation step. - -void TreephaserSSE::advanceStateInPlace(PathRec RESTRICT_PTR path, int nuc, int end) { - int idx = ts_NextNuc[nuc][path->flow]; - if(idx > end) - idx = end; - if(path->flow != idx) { - path->flow = idx; - idx = path->window_end; - float alive = 0.0f; - float RESTRICT_PTR trans = ts_Transition[nuc]; - const float minFrac = 1e-6f; - int b = path->window_start; - int e = idx--; - int em1 = e-1; - int i = b; - v4i maskL=(v4i){1,2,3,0}; - while(i < idx) { - alive += path->state[i]; - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - ++i; - if(!(s < minFrac)) - break; - b++; - } - while(/*(i&3) && */(i < em1)) { - alive += path->state[i]; - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - ++i; - } -#if 0 - int llen=(em1-i)/4; - v4f *psp=(v4f *)&path->state[i]; - v4f *trp=(v4f *)&trans[i]; - for(int j=0;j < llen;j++) { - v4f_u ps,s,t; - ps.V =psp[j]; - t.V = trp[j]; - - - for(int li=0;li<4;li++){ - alive += ps.A[0]; - s.A[0] = alive * t.A[0]; - alive -= s.A[0]; - // shift ps, s, and t to the left - ps.V = __builtin_shuffle (ps, maskL); - s.V = __builtin_shuffle (s, maskL); - t.V = __builtin_shuffle (t, maskL); - } - psp[j] = s.V; - } - i+=4*llen; -#endif - // flow > window start - if(i > b) { - // flow < window end - 1 - while(i < idx) { - alive += path->state[i]; - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - ++i; - } - alive += path->state[i]; - - // flow >= window end - 1 - while(i < e) { - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - if((i == (e-1)) && (e < end) && (alive > minFrac)) - path->pred[e++] = 0.0f; - i++; - } - } - // flow = window start(or window end - 1) - else { - alive += path->state[i]; - while(i < em1) { - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - if((i == b)&& (s < minFrac)) - b++; - else - break; - i++; - } - while(i < em1) { - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - i++; - } - while(i < e) { - float s = alive * trans[i]; - path->state[i] = s; - alive -= s; - if((i == b)&& (s < minFrac)) - b++; - if((i == (e-1)) && (e < end) && (alive > minFrac)) - path->pred[e++] = 0.0f; - i++; - } - } - path->window_start = b; - path->window_end = e; - } -} - -#define AD_MINFRAC LD_VEC4F(1e-6f) -//// pseudo code: -// for(int li=0;li<4;li++){ -// rAlive[li] += parentState; -// -// if (parent->flow != child->flow or parent->flow == 0) { -// // This nuc begins a new homopolymer -// rS[li] = parent->state[flow]; -// } -// else{ -// rS[li] = transition_base_[nuc][flow] * rAlive[li] -// } -// childState[j] = rS[li]; -// rAlive[li] -= rS[li]; -// -// } -//// pseudo code: -#define advanceI( parentState, j, rParNuc, ts_tr, rAlive, rS) {\ -\ - /*rS = (v4f)((v4i)LD_VEC4F(parentState) & (v4i) rParNuc);*/ \ - /*v4f rTemp1s; = rParNuc;*/ \ - \ - /* add parent state at this flow */ \ - rAlive += LD_VEC4F(parentState); \ - \ - /* one of the entries is 0xFFFF.. where the homopolymer is extended, rest are 0 */ \ - /* keep the parent state for child where parent homopolymer is extended, rest are 0 */ \ - /*rS = (v4f) ((v4i) rS & (v4i) rParNuc); */\ - \ - /* select transitions where this nuc begins a new homopolymer */ \ - /*rTemp1s = rAlive * (v4f) (~(v4i)rParNuc & (v4i)(ts_tr)); */ \ - \ - /* multiply transition probabilities with alive */ \ - /*rTemp1s *= rAlive;*/ \ - \ - /* child state for this flow */ \ - rS = (v4f)((v4i)LD_VEC4F(parentState) & (v4i)rParNuc) + rAlive * (v4f) (~(v4i)rParNuc & (v4i)(ts_tr)); \ - \ - /* storing child states to the buffer */ \ - state_Buf[j].V = rS; \ - \ - /* alive *= transition_flow[nuc&7][flow] from DpTreephaser.cpp */ \ - \ - rAlive -= rS; \ -} -// this one is all about calculating the residual -inline void TreephaserSSE::CalcResidualI(PathRec RESTRICT_PTR parent, - int flow, int j, v4f &rS, v4f rTemp1s_, v4f &rPenNeg, v4f &rPenPos) +void TreephaserVEC::advanceState4 (PathRecV RESTRICT_PTR path, int end) { - v4f rTemp1S=(rTemp1s_); - /* storing child predictions */ - pred_Buf[j].V = rTemp1S; + ALIGN(64)v4f nres2_Buf[MAX_VALS]; + ALIGN(64)v4f pres2_Buf[MAX_VALS]; - /* apply recalibration model paramters to predicted signal if model is available */ - if (recalibrate_predictions_) { - rTemp1S *= LD_VEC4F(parent->calib_A[flow]); - rTemp1S += LD_VEC4F(parent->calib_B[flow]); - } + // child flows or the flow at which child nuc incorporates (corresponds to + // find child flow in AdvanceState() in DPTreephaser.cpp + flow_Buf = (v4i)_mm_min_epi16((__m128i)ts_NextNuc[path->flow], (__m128i)LD_VEC4I(end)); - /* load normalized measurement for the parent */ - rS = LD_VEC4F(rd_NormMeasure[flow]); + // compare parent flow and child flows + v4f rParNuc = (v4f)_mm_cmpeq_epi32((__m128i)LD_VEC4I(path->flow), (__m128i)flow_Buf); - /* residual from normalized and predicted values for this flow */ - rS -= rTemp1S; + // set alive to 0 for all 4 Nuc paths + v4f alive = LD_VEC4F(0); - rTemp1S = rS; - /* find out the negative residual. The number which are -ve have highest bit one and therefore gives */ - /* four ints with 0's in the ones which are not negative */ - rS = (v4f)(_mm_srai_epi32((__m128i)rS,31)); - /*rS = (v4f) (((v4i) rS) >> 31); get the signed bit... */ + // penalties for each nuc corresponding to four childs + v4f rPenNeg = alive; + v4f rPenPos = alive; + nres2_Buf[0]= alive; + pres2_Buf[0]= alive; + //path->pred_Buf[path->window_start]=alive; + const v4f minFrac = LD_VEC4F( 1e-6 ); + + int endi = path->window_end; + int flow = path->window_start; + v4i e =LD_VEC4I(endi); + v4i b =LD_VEC4I(flow); + + + v4i bInc = LD_VEC4I(-1); + v4i eInc = bInc; + int lastNuc=path->nuc; + + v4f *ps=path->state; + v4f *tst=ts_Transition; + v4f *nsb=&nres2_Buf[0]; + v4f *psb=&pres2_Buf[0]; + v4f *pdb=path->pred_Buf; + float *rdn=rd_NormMeasureAdj; + int j=1; + + while (flow < endi) { + // advance + float state=*(float *)&ps[flow][lastNuc]; + alive += state; + v4f s = (v4f)((v4i)LD_VEC4F(state) & (v4i)rParNuc) + + alive * (v4f) (~(v4i)rParNuc & (v4i)tst[flow]); + ps[flow] = s; + alive -= s; + + // check window start + bInc = (bInc & (v4i) (s < minFrac)); + b -= bInc; // minus -1 is the same as +1 + + v4f pred = s + pdb[flow][lastNuc]; + pdb[flow] = pred; + + // compute residuals + v4f res = rdn[flow] - pred; // difference between real signal and prediction + v4i resSel = (v4i) (_mm_srai_epi32 ((__m128i ) res, 31)); // fills with sign bits.. negative residuals are all 1's + res = res*res; + rPenNeg += (v4f) (resSel & (v4i) res); + rPenPos += (v4f) (~resSel & (v4i) res); + nsb[j] = rPenNeg; + psb[j] = rPenPos; - /* squared residual */ - rTemp1S = rTemp1S * rTemp1S; + flow++; + j++; + } - /* select negative residuals */ - rS = (v4f) ((v4i) rS & (v4i) rTemp1S); + b += (v4i) (e == b); // if (window_start==window_end) window_start--; + eInc = eInc & (v4i) (alive > minFrac); + e -= eInc; // minus -1 same as plus 1 + + // flow >= path->window_end + while ((flow < end) && _mm_movemask_ps ((v4f) eInc)) { + v4f s = alive * (v4f) (~(v4i)rParNuc & (v4i)tst[flow]); + ps[flow] = s; + alive -= s; + + v4f pred = s; + pdb[flow] = pred; + v4f res = rdn[flow] - pred; // difference between real signal and prediction + v4i resSel = (v4i) (_mm_srai_epi32 ((__m128i ) res, 31)); // fills with sign bits.. negative residuals are all 1's + res = res*res; + rPenNeg += (v4f) (resSel & (v4i) res); + rPenPos += (v4f) (~resSel & (v4i) res); + nsb[j] = rPenNeg; + psb[j] = rPenPos; + + eInc = eInc & (v4i) (alive > minFrac); + e -= eInc; + flow++; + j++; + } - /* select positive residuals */ - rTemp1S = (v4f) ((v4i) rTemp1S ^ (v4i) rS); + nres_WE=rPenNeg; + pres_WE=rPenPos; - /* add to negative penalty the square of negative residuals */ - rPenNeg += rS; + winStart_Buf = b; + winEnd_Buf = (v4i) _mm_min_epi16 ((__m128i ) e, (__m128i ) LD_VEC4I(end)); - /* add squared residuals to postive penalty */ - rPenPos += rTemp1S; + v4i wsi = winStart_Buf - path->window_start; + v4i fli = flow_Buf - path->window_start; + penNegV=nres_WE; + for (int nuc = 0; nuc < 4; ++nuc) { - /* running sum of negative penalties */ - nres_Buf[j].V = rPenNeg; - /* running sum of positive penalties */ - pres_Buf[j].V = rPenPos; -} + // sum of squared residuals left of child window start + resV[nuc] = nres2_Buf[wsi[nuc]][nuc]; + metrV[nuc] = pres2_Buf[wsi[nuc]][nuc]; -#define CheckWindowStartBase() \ -/* tracking flow from parent->window_start */ \ -v4i rTemp1i = (v4i)rBeg; \ - \ -/* obtain window start for child which doesn't extend parent homopolymer. The one that extends */ \ -/* has all bits for its word as 1 */ \ -rTemp1i = (rTemp1i | (v4i)rParNuc); \ - \ -/* compare parent window start to current flow i. All match except one where parent last hp extends */ \ -rTemp1i = (v4i)_mm_cmpeq_epi32((__m128i)rTemp1i,(__m128i)LD_VEC4I(flow)); \ - \ -/* filter min frac for nuc homopolymer child paths */ \ -v4f rTemp1s = (v4f)(rTemp1i & (v4i)AD_MINFRAC); \ - \ -/* compares not less than equal to for two _m128i words. Entries will be 0xFFFF... for words where */ \ -/* (kStateWindowCutoff > child->state[flow]). Rest of the words are 0 */ \ -rTemp1s = (v4f)_mm_cmpnle_ps(rTemp1s, rS); \ - \ -/* increasing child window start if child state less than state window cut off. */ \ -rBeg = ((v4i)rBeg - (v4i)rTemp1s); - - -#define CheckWindowStart1() { \ -CheckWindowStartBase(); \ -\ -/* this intrinsic gives sign of each word in binary indicating 1 for -ve sign and 0 for +ve */ \ -/* if ad_adv is greater than 0, it indicates increase in child window start for some child path */ \ -ad_Adv = _mm_movemask_ps(rTemp1s); \ -\ -} + // sum of squared residuals left of child->flow + penParV[nuc] = pres2_Buf[fli[nuc]][nuc]; -#define CheckWindowStart2() { \ -CheckWindowStartBase(); \ -\ -rTemp1i = (v4i)_mm_cmpeq_epi32((__m128i)rBeg, (__m128i)rEnd); \ -rBeg += rTemp1i; \ + } + metrV+=path->res; + resV += metrV; + metrV += penNegV; + penParV += penNegV; + penNegV += penParV; + distV = resV + nres_WE + pres_WE; } - -#define CheckWindowEnd() { \ - \ -v4f rTemp1s = (v4f)(LD_VEC4I(-1) + rEnd); \ -rTemp1s = (v4f)((v4i)rTemp1s | (v4i)rParNuc); \ -rTemp1s = (v4f)_mm_cmpeq_epi32((__m128i)rTemp1s, (__m128i)LD_VEC4I(flow)); \ -rTemp1s = (v4f)((v4i)rTemp1s & (v4i)rAlive);\ -rTemp1s = (v4f)_mm_cmpnle_ps(rTemp1s, AD_MINFRAC);\ -/* child->window_end < max_flow */ \ -rS = (v4f)_mm_cmpnle_ps((v4f)rFlowEnd, (v4f)rEnd); \ -/* flow == child->window_end-1 and child->window_end < max_flow and alive > kStateWindowCutoff */ \ -rTemp1s = (v4f)((v4i)rTemp1s & (v4i)rS); \ - \ -/* if non zero than an increase in window end for some child paths */ \ -ad_Adv = _mm_movemask_ps(rTemp1s); \ -/* increases the child window end */ \ -rEnd -= (v4i)rTemp1s; /* - (-1) is the same thing as +1 */ \ +void TreephaserVEC::sumNormMeasures() { + int i = num_flows_; + float sum = 0.0f; + rd_SqNormMeasureSum[i] = 0.0f; + while(--i >= 0) + rd_SqNormMeasureSum[i] = (sum += rd_NormMeasure[i]*rd_NormMeasure[i]); } -void TreephaserSSE::advanceState4(PathRec RESTRICT_PTR parent, int end) -{ - - int idx = parent->flow; - - // max flows - v4i rFlowEnd = LD_VEC4I(end); - // parent flow - v4i rNucCpy = LD_VEC4I(idx); - - // child flows or the flow at which child nuc incorporates (corresponds to - // find child flow in AdvanceState() in DPTreephaser.cpp - v4i rNucIdx = ts_NextNuc4[idx].V; - rNucIdx = (v4i)_mm_min_epi16((__m128i)rNucIdx, (__m128i)rFlowEnd); +// ------------------------------------------------- - // compare parent flow and child flows - rNucCpy = (v4i)_mm_cmpeq_epi32((__m128i)rNucCpy, (__m128i)rNucIdx); +void TreephaserVEC::RecalibratePredictions(PathRecV *maxPathPtr) +{ + // Distort predictions according to recalibration model + int to_flow = min(maxPathPtr->flow, num_flows_); - // store max_flow in ad_FlowEnd - ad_FlowEnd.V = rFlowEnd; + for (int flow=0; flowpred[flow] = + maxPathPtr->pred[flow] * maxPathPtr->calib_A[flow] + + maxPathPtr->calib_B[flow]; + } - // four child flows in four 32 bit integers - ad_Idx.V = rNucIdx; +} - // changes datatype from int to float without doing any conversion - v4f rParNuc = (v4f)(rNucCpy); +void TreephaserVEC::ResetRecalibrationStructures(int num_flows) { + for (int p = 0; p <= 8; ++p) { + memset_F(&(sv_PathPtr[p]->calib_A[0]), 1.0f, num_flows_); + memset_F(&(sv_PathPtr[p]->calib_B[0]), 0, num_flows_); + } +} - // set alive to 0 for all 4 Nuc paths - v4f rAlive = LD_VEC4F(0); +// -------------------------------------------------- - // penalties for each nuc corresponding to four childs - v4f rPenNeg = rAlive; - v4f rPenPos = rAlive; +void TreephaserVEC::SolveRead(BasecallerRead& read, int begin_flow, int end_flow) +{ + memcpy_F(rd_NormMeasure, &(read.normalized_measurements[0]), num_flows_); + memset_F(sv_PathPtr[BEST_PATH]->pred, 0, num_flows_); // Not necessary? + memcpy_C(sv_PathPtr[BEST_PATH]->sequence, &(read.sequence[0]), (int)read.sequence.size()); + sv_PathPtr[BEST_PATH]->sequence_length = read.sequence.size(); + + Solve(begin_flow, end_flow,end_flow,-1,max_metr_diff_ ); + + int to_flow = min(sv_PathPtr[BEST_PATH]->window_end, end_flow); + read.sequence.resize(sv_PathPtr[BEST_PATH]->sequence_length); + memcpy_C(&(read.sequence[0]), sv_PathPtr[BEST_PATH]->sequence, sv_PathPtr[BEST_PATH]->sequence_length); + memset_F(&(read.prediction[0]), 0, num_flows_); + memcpy_F(&(read.prediction[0]), sv_PathPtr[BEST_PATH]->pred, to_flow); +} - int parLast = parent->window_end; - v4i rEnd = LD_VEC4I(parLast); - parLast--; - v4i rBeg = LD_VEC4I(parent->window_start); +// ------------------------------------------------- +PathRecV *TreephaserVEC::sortPaths(int & pathCnt, int &parentPathIdx, int &badPaths, int numActivePaths) +{ +#ifdef PRINT_DEBUG + int commonSeq=0; + if(DO_DEBUG){ + printf("pathCnt=%d \n",pathCnt); + float minMetr=25.0f; + int minFlow=1000; + for(int i = 0; i < pathCnt; ++i){ + if(sv_PathPtr[i]->flow < minFlow) + minFlow=sv_PathPtr[i]->flow; + } + int diff=0; + for(;commonSeqsequence_length && !diff;commonSeq++){ + for(int i = 0; i < pathCnt; ++i){ + if(sv_PathPtr[0]->sequence[commonSeq] != sv_PathPtr[i]->sequence[commonSeq]){ + diff=1; + } + } + } + if(commonSeq) + commonSeq--; + + for(int i = 0; i < pathCnt; ++i){ + sv_PathPtr[i]->sequence[sv_PathPtr[i]->sequence_length]=0; // null-terminate + printf("%s (%d %s %d/%d-%d) sig(%.3f/%.3f) %.3f/%.3f/%.3f\n",(minFlow==sv_PathPtr[i]->flow?"--":" "), + commonSeq,&sv_PathPtr[i]->sequence[commonSeq], + sv_PathPtr[i]->window_start, + sv_PathPtr[i]->flow, + sv_PathPtr[i]->window_end, + sv_PathPtr[i]->pred[sv_PathPtr[i]->flow], + sv_PathPtr[i]->state[sv_PathPtr[i]->flow], + sv_PathPtr[i]->penalty,sv_PathPtr[i]->flowMetr,sv_PathPtr[i]->metr); + } + printf("\n"); + } +#endif - int flow = parent->window_start; - int j = 1; - ad_Adv = 1; - float *parent_CalibA= &parent->calib_A[0]; - float *parent_CalibB= &parent->calib_B[0]; - v4f rS; + int maxPaths = MAX_PATHS-4; + if(numActivePaths > 0) + maxPaths = min(maxPaths,numActivePaths); + if(pathCnt > (maxPaths-1)) { + int m = sv_PathPtr[0]->flow; + int i = 1; + do { + int n = sv_PathPtr[i]->flow; + if(m < n) + m = n; + } while(++i < pathCnt); + if((m -= MAX_PATH_DELAY) > 0) { + do { + if(sv_PathPtr[--i]->flow < m){ +#ifdef PRINT_DEBUG + sv_PathPtr[pathCnt]->sequence[sv_PathPtr[pathCnt]->sequence_length]=0; // null-terminate + printf("Removing path %s too far behind\n",&sv_PathPtr[pathCnt]->sequence[commonSeq]); +#endif + swap(sv_PathPtr[i], sv_PathPtr[--pathCnt]); + } + } while(i > 0); + } + } - // iterate over the flows from parent->window_start to (parent->window_end - 1) - // break this loop if child->window_start does not increase for any of the child paths from - // parent->window_start - while(flow < parLast) { - advanceI(parent->state[flow], j, rParNuc, ts_Transition4[flow].V, rAlive, rS); + while(pathCnt > maxPaths) { + float m = sv_PathPtr[0]->flowMetr; + int i = 1; + int j = 0; + do { + float n = sv_PathPtr[i]->flowMetr; + if(m < n) { + m = n; + j = i; + } + } while(++i < pathCnt); +#ifdef PRINT_DEBUG + if(DO_DEBUG){ + sv_PathPtr[j]->sequence[sv_PathPtr[j]->sequence_length]=0; // null-terminate + printf("%s Removing path %s too many paths\n",(j>= 4?"****":" "),&sv_PathPtr[j]->sequence[commonSeq]); + } +#endif + swap(sv_PathPtr[j], sv_PathPtr[--pathCnt]); + badPaths++; + } + PathRecV *parent = sv_PathPtr[0]; + for(int i = 1; i < pathCnt; ++i){ + if(parent->metr > sv_PathPtr[i]->metr) { + parent = sv_PathPtr[i]; + parentPathIdx = i; + } + } + return (parent); +} - CheckWindowStart1(); - CalcResidualI(parent, flow, j, rS, (LD_VEC4F(parent->pred[flow])+rS),rPenNeg,rPenPos); +float TreephaserVEC::computeParentDist(PathRecV RESTRICT_PTR parent, int end_flow) +{ + // Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end of calibA and calibB + // Computing squared distance between parent's predicted signal and normalized measurements + float dist = parent->res+(rd_SqNormMeasureSum[parent->window_end]-rd_SqNormMeasureSum[end_flow]); + dist += sumOfSquaredDiffsFloatSSE((float*)(&(rd_NormMeasureAdj[parent->window_start])), + (float*)(&(parent->pred[parent->window_start])), + parent->window_end-parent->window_start); + return dist; +} - flow++; - j++; - if(ad_Adv == 0) - break; +void TreephaserVEC::CopyPath (PathRecV RESTRICT_PTR dest, PathRecV RESTRICT_PTR parent, + PathRecV RESTRICT_PTR child, int saveFlow, + int &numSaved, int cached_flow, int cached_flow_ws, int cached_flow_seq) +{ + int pws=parent->window_start; + int cws=child->window_start; + int cwe=child->window_end; + int nuc=child->nuc; + int pf=parent->flow; + int cf=child->flow; + int psl=parent->sequence_length; + + memcpy_4F(&dest->pred[pws],&parent->pred_Buf[pws][nuc],cws - pws+1); + + if (state_inphase_enabled_) { + //extending from parent->state_inphase[pf] to fill the gap + for (int tempInd = pf + 1; tempInd < cf; tempInd++) { + dest->state_inphase[tempInd] = max ((float)dest->state[cf][nuc], 0.01f); + } + dest->state_inphase[cf] = max ((float)dest->state[cf][nuc], 0.01f); } - // if none of the child paths has increase in window start. - // this loop is the same as the previous loop, just doesn't check for window start - if(EXPECTED(ad_Adv == 0)) { - - // child window start - ad_Beg.V = rBeg; + dest->sequence_length = psl + 1; + dest->sequence[psl] = flow_order_[cf]; + dest->sequence[dest->sequence_length]=0; - // flow < parent->window_end - 1 - while(flow < parLast) { + if (psl and dest->sequence[psl] != dest->sequence[psl - 1]) + dest->last_hp = 0; + else + dest->last_hp = parent->last_hp; + dest->last_hp++; - advanceI(parent->state[flow], j, rParNuc, ts_Transition4[flow].V, rAlive, rS); + dest->flowMetr = (cf == 0)?0:((child->metr + 0.5f * child->flowMetr) / cf); - CalcResidualI(parent, flow, j, rS, (LD_VEC4F(parent->pred[flow])+rS),rPenNeg,rPenPos); - - flow++; - j++; + if (recalibrate_predictions_) { + //explicitly fill zeros between pf and cf; + for (int tempInd = pf + 1; tempInd < cf; tempInd++) { + dest->calib_A[tempInd] = 1.0f; + dest->calib_B[tempInd] = 0.0f; } + int hp_length = min (dest->last_hp, MAX_HPXLEN); + dest->calib_A[cf] = (*As_).at (cf).at ( + flow_order_.int_at (cf)).at (hp_length); + dest->calib_B[cf] = (*Bs_).at (cf).at ( + flow_order_.int_at (cf)).at (hp_length); + rd_NormMeasureAdj[cf] = (rd_NormMeasure[cf]-dest->calib_B[cf])/dest->calib_A[cf]; + } + { + dest->flow = child->flow; + dest->window_start = child->window_start; + dest->window_end = child->window_end; + dest->res = child->res; + dest->metr = child->metr; + dest->newSignal = child->newSignal; + dest->dist = child->dist; + dest->nuc = child->nuc; + } - // flow = parent->window_end - 1 - { - advanceI(parent->state[flow], j, rParNuc, (v4i) ts_Transition4[flow].V, rAlive, rS); - - CalcResidualI(parent, flow, j, rS, (LD_VEC4F(parent->pred[flow])+rS),rPenNeg,rPenPos); + dest->cached_flow = min(dest->flow,cached_flow); + dest->cached_flow_ws = min(dest->window_start,cached_flow_ws); + dest->cached_flow_seq = min(dest->sequence_length,cached_flow_seq); - CheckWindowEnd(); - flow++; - j++; +#ifdef PRINT_DEBUG + if(DO_DEBUG){ + child->sequence[child->sequence_length]=0; // null-terminate + if (singleChild != 1) + printf("adding child %s\n",child->sequence); } +#endif - // flow >= parent window end - while((flow < end) && (ad_Adv != 0)) { - rS = (v4f)(~(v4i)rParNuc & (v4i)ts_Transition4[flow].V); //_mm_andnot_ps(rTemp1s, ts_Transition4[flow]); - rS *= rAlive; - state_Buf[j].V=rS; - rAlive -= rS; +} - CalcResidualI(parent, flow, j, rS, rS,rPenNeg,rPenPos); +void TreephaserVEC::CopyPathNew (PathRecV RESTRICT_PTR dest, PathRecV RESTRICT_PTR parent, + PathRecV RESTRICT_PTR child, int saveFlow, + int &numSaved, int cached_flow, int cached_flow_ws, int cached_flow_seq) +{ + int dcf = (dest->cached_flow&0xffff); + int dws = (dest->cached_flow_ws&0xffff); + int dseq= (dest->cached_flow_seq&0xffff); + + int pws=parent->window_start; + int cws=child->window_start; + int cwe=child->window_end; + int nuc=child->nuc; + int pf=parent->flow; + int cf=child->flow; + int psl=parent->sequence_length; + int cwemcws=cwe-cws; + int pfmdcf=pf-dcf+1; + + memcpy_4F(&dest->pred[pws],&parent->pred_Buf[pws][nuc],cws - pws+1); + + if (dest != parent) + { + // copy the beginning of the arrays as well + memcpy_4F4(&dest->state[cws][nuc],&parent->state[cws][nuc],cwemcws); + memcpy_F(&dest->pred[dws], &parent->pred[dws], pws - dws); + memcpy_4F4(&dest->pred_Buf[cws][nuc],&parent->pred_Buf[cws][nuc],cwemcws); + memcpy_C(&dest->sequence[dseq], &parent->sequence[dseq], psl - dseq); + } - CheckWindowEnd(); + if (state_inphase_enabled_) { + if (dest != parent) + { + memcpy_F(&dest->state_inphase[dcf], &parent->state_inphase[dcf],pfmdcf); + } - flow++; - j++; + //extending from parent->state_inphase[pf] to fill the gap + for (int tempInd = pf + 1; tempInd < cf; tempInd++) { + dest->state_inphase[tempInd] = max ((float)dest->state[cf][nuc], 0.01f); } + dest->state_inphase[cf] = max ((float)dest->state[cf][nuc], 0.01f); + } - rEnd = (v4i)_mm_min_epi16((__m128i)rEnd, (__m128i)ad_FlowEnd.V); - ad_End.V = rEnd; + dest->sequence_length = psl + 1; + dest->sequence[psl] = flow_order_[cf]; + dest->sequence[dest->sequence_length]=0; + if (psl and dest->sequence[psl] != dest->sequence[psl - 1]) + dest->last_hp = 0; + else + dest->last_hp = parent->last_hp; + dest->last_hp++; - } - // This branch is for if one of the child paths has an increase in window_start - // flow = (parent->window_end - 1) - else { + dest->flowMetr = (cf == 0)?0:((child->metr + 0.5f * child->flowMetr) / cf); + if (recalibrate_predictions_) { + if (dest != parent && cf > 0) { - advanceI(parent->state[flow], j, rParNuc, ts_Transition4[flow].V, rAlive, rS); - - CalcResidualI(parent, flow, j, rS, (LD_VEC4F(parent->pred[flow])+rS),rPenNeg,rPenPos); - - CheckWindowStart2(); - - CheckWindowEnd(); - - flow++; - j++; + memcpy_F(&dest->calib_A[dcf], &parent->calib_A[dcf],pfmdcf); + memcpy_F(&dest->calib_B[dcf], &parent->calib_B[dcf],pfmdcf); } - - // flow >= parent->window_end - while((flow < end) && (ad_Adv != 0)) { - v4f rTemp1s = rParNuc; - rTemp1s = _mm_andnot_ps(rTemp1s, ts_Transition4[flow].V); - rTemp1s *= rAlive; - rS = rTemp1s; - state_Buf[j].V=rS; - rAlive -= rS; - - CheckWindowStart2(); - - CalcResidualI(parent, flow, j, rS, rS,rPenNeg,rPenPos); - - CheckWindowEnd(); - - flow++; - j++; + //explicitly fill zeros between pf and cf; + for (int tempInd = pf + 1; tempInd < cf; tempInd++) { + dest->calib_A[tempInd] = 1.0f; + dest->calib_B[tempInd] = 0.0f; } + int hp_length = min (dest->last_hp, MAX_HPXLEN); + dest->calib_A[cf] = (*As_).at (cf).at ( + flow_order_.int_at (cf)).at (hp_length); + dest->calib_B[cf] = (*Bs_).at (cf).at ( + flow_order_.int_at (cf)).at (hp_length); + rd_NormMeasureAdj[cf] = (rd_NormMeasure[cf]-dest->calib_B[cf])/dest->calib_A[cf]; + } + if(dest != child) + { + dest->flow = child->flow; + dest->window_start = child->window_start; + dest->window_end = child->window_end; + dest->res = child->res; + dest->metr = child->metr; + dest->newSignal = child->newSignal; + dest->dist = child->dist; + dest->nuc = child->nuc; + } - rEnd = (v4i)_mm_min_epi16((__m128i)rEnd, (__m128i)ad_FlowEnd.V); - ad_Beg.V = rBeg; - ad_End.V = rEnd; + dest->saved = parent->saved; + dest->cached_flow = min(dest->flow,cached_flow); + dest->cached_flow_ws = min(dest->window_start,cached_flow_ws); + dest->cached_flow_seq = min(dest->sequence_length,cached_flow_seq); - } -} +#ifdef PRINT_DEBUG + if(DO_DEBUG){ + child->sequence[child->sequence_length]=0; // null-terminate + if (singleChild != 1) + printf("adding child %s\n",child->sequence); + } +#endif -void TreephaserSSE::sumNormMeasures() { - int i = num_flows_; - float sum = 0.0f; - rd_SqNormMeasureSum[i] = 0.0f; - while(--i >= 0) - rd_SqNormMeasureSum[i] = (sum += rd_NormMeasure[i]*rd_NormMeasure[i]); } -// ------------------------------------------------- - -void TreephaserSSE::RecalibratePredictions(PathRec *maxPathPtr) +void +TreephaserVEC::CopyPathDeep (PathRecV RESTRICT_PTR destPath, + PathRecV RESTRICT_PTR srcPath) { - // Distort predictions according to recalibration model - int to_flow = min(maxPathPtr->flow+1, num_flows_); - - for (int flow=0; flowpred[flow] = - maxPathPtr->pred[flow] * maxPathPtr->calib_A[flow] - + maxPathPtr->calib_B[flow]; + memcpy_4F4(&destPath->state[srcPath->window_start][srcPath->nuc], + &srcPath->state[srcPath->window_start][srcPath->nuc], + srcPath->window_end -srcPath->window_start); + memcpy_4F4(&destPath->pred_Buf[srcPath->window_start][srcPath->nuc], + &srcPath->pred_Buf[srcPath->window_start][srcPath->nuc], + srcPath->window_end - srcPath->window_start + 1); + memcpy_F(destPath->pred,srcPath->pred,srcPath->window_end + 1); + memcpy_4F(&destPath->pred[srcPath->window_start], + &destPath->pred_Buf[srcPath->window_start][srcPath->nuc], + srcPath->window_end - srcPath->window_start); + memcpy_C(destPath->sequence,srcPath->sequence,srcPath->sequence_length + 1); + if (state_inphase_enabled_) { + memcpy_F(destPath->state_inphase,srcPath->state_inphase,srcPath->flow + 1); } -} + destPath->sequence_length = srcPath->sequence_length; -void TreephaserSSE::ResetRecalibrationStructures(int num_flows) { - for (int p = 0; p <= 8; ++p) { - setValueSSE(&(sv_PathPtr[p]->calib_A[0]), 1.0f, num_flows_); - setZeroSSE(&(sv_PathPtr[p]->calib_B[0]), num_flows_*sizeof(float)); + if (recalibrate_predictions_) { + memcpy_F(destPath->calib_A,srcPath->calib_A,srcPath->flow + 1); + memcpy_F(destPath->calib_B,srcPath->calib_B,srcPath->flow + 1); } + + destPath->flow = srcPath->flow; + destPath->window_start = srcPath->window_start; + destPath->window_end = srcPath->window_end; + destPath->res = srcPath->res; + destPath->metr = srcPath->metr; + destPath->newSignal = srcPath->newSignal; + destPath->dist = srcPath->dist; + destPath->flowMetr = srcPath->flowMetr; + destPath->nuc = srcPath->nuc; + destPath->penalty = srcPath->penalty; + destPath->last_hp = srcPath->last_hp; + destPath->cached_flow=0; + destPath->cached_flow_seq=0; + destPath->cached_flow_ws=0; } -// -------------------------------------------------- -void TreephaserSSE::SolveRead(BasecallerRead& read, int begin_flow, int end_flow) -{ - copySSE(rd_NormMeasure, &(read.normalized_measurements[0]), num_flows_*sizeof(float)); - setZeroSSE(sv_PathPtr[MAX_PATHS]->pred, num_flows_*sizeof(float)); // Not necessary? - copySSE(sv_PathPtr[MAX_PATHS]->sequence, &(read.sequence[0]), (int)read.sequence.size()*sizeof(char)); - sv_PathPtr[MAX_PATHS]->sequence_length = read.sequence.size(); - - Solve(begin_flow, end_flow); - - int to_flow = min(sv_PathPtr[MAX_PATHS]->window_end, end_flow); - read.sequence.resize(sv_PathPtr[MAX_PATHS]->sequence_length); - copySSE(&(read.sequence[0]), sv_PathPtr[MAX_PATHS]->sequence, sv_PathPtr[MAX_PATHS]->sequence_length*sizeof(char)); - setZeroSSE(&(read.prediction[0]), num_flows_*sizeof(float)); - copySSE(&(read.prediction[0]), sv_PathPtr[MAX_PATHS]->pred, to_flow*sizeof(float)); -} // ------------------------------------------------- - -bool TreephaserSSE::Solve(int begin_flow, int end_flow) +bool TreephaserVEC::Solve(int begin_flow, int end_flow, int saveFlow, int numActivePaths, float maxMetrDiff) { sumNormMeasures(); - PathRec RESTRICT_PTR parent = sv_PathPtr[0]; - PathRec RESTRICT_PTR best = sv_PathPtr[MAX_PATHS]; + PathRecV RESTRICT_PTR parent = sv_PathPtr[0]; + PathRecV RESTRICT_PTR best = sv_PathPtr[BEST_PATH]; - parent->flow = 0; - parent->window_start = 0; - parent->window_end = 1; - parent->res = 0.0f; - parent->metr = 0.0f; - parent->flowMetr = 0.0f; - parent->dotCnt = 0; - parent->state[0] = 1.0f; - parent->sequence_length = 0; - parent->last_hp = 0; - parent->pred[0] = 0.0f; - parent->state_inphase[0] = 1.0f; + + for(int flow=begin_flow;flow 0) { - - static const int char_to_nuc[8] = {-1, 0, -1, 1, 3, -1, -1, 2}; - - for (int base = 0; base < best->sequence_length; ++base) { - parent->sequence_length++; - parent->sequence[base] = best->sequence[base]; - if (base and parent->sequence[base] != parent->sequence[base-1]) - parent->last_hp = 0; - parent->last_hp++; - if (parent->last_hp > MAX_HPXLEN) { // Safety to not overrun recalibration array - parent->last_hp = MAX_HPXLEN; - } - - advanceStateInPlace(parent, char_to_nuc[best->sequence[base]&7], num_flows_); - if (parent->flow >= num_flows_) - break; - int to_flow = min(parent->window_end, end_flow); - sumVectFloatSSE(&parent->pred[parent->window_start], &parent->state[parent->window_start], to_flow-parent->window_start); -// for(int k = parent->window_start; k < to_flow; ++k) { -// if((k & 3) == 0) { -// sumVectFloatSSE(&parent->pred[k], &parent->state[k], to_flow-k); -// break; -// } -// parent->pred[k] += parent->state[k]; -// } - // Recalibration part of the initial simulation: log coefficients for simulation part - if(recalibrate_predictions_) { - parent->calib_A[parent->flow] = (*As_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - parent->calib_B[parent->flow] = (*Bs_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - } - if (parent->flow >= begin_flow) - break; - } - - // No point solving the read if we simulated the whole thing. - if(parent->window_end < begin_flow or parent->flow >= num_flows_) { - sv_PathPtr[MAX_PATHS] = parent; - sv_PathPtr[0] = best; - return true; + int found=0; + + if(sv_PathPtr[SAVED_PATHS]->flow > 0){ + int pth=0; + for(;pthflow > 0 && + memcmp(sv_PathPtr[SAVED_PATHS+pth]->sequence, + sv_PathPtr[BEST_PATH]->sequence, + sv_PathPtr[SAVED_PATHS+pth]->sequence_length)==0){ + + best=sv_PathPtr[SAVED_PATHS+pth]; + sv_PathPtr[SAVED_PATHS+pth]=parent; + sv_PathPtr[0]=best; + parent=best; + found=1; + break; + } + } } - parent->res = sumOfSquaredDiffsFloatSSE( - (float*)rd_NormMeasure, (float*)parent->pred, parent->window_start); - } - best->window_end = 0; - best->sequence_length = 0; + if(!found) return true; - do { + parent->res = sumOfSquaredDiffsFloatSSE( + (float*)rd_NormMeasure, (float*)parent->pred, parent->window_start); + }else{ + for(int i=0;icalib_A[0]=1.0; + sv_PathPtr[i]->calib_B[0]=0; - if(pathCnt > 3) { - int m = sv_PathPtr[0]->flow; - int i = 1; - do { - int n = sv_PathPtr[i]->flow; - if(m < n) - m = n; - } while(++i < pathCnt); - if((m -= MAX_PATH_DELAY) > 0) { - do { - if(sv_PathPtr[--i]->flow < m) - swap(sv_PathPtr[i], sv_PathPtr[--pathCnt]); - } while(i > 0); - } + memset(sv_PathPtr[i]->pred,0,num_flows_*sizeof(sv_PathPtr[i]->pred[0])); } + parent->flow = 0; + parent->window_start = 0; + parent->window_end = 1; + parent->res = 0.0f; + parent->metr = 0.0f; + parent->flowMetr = 0.0f; + parent->newSignal = 1.0f; + parent->state[0] = LD_VEC4F(1.0f); + parent->sequence_length = 0; + parent->last_hp = 0; + parent->pred[0] = 0.0f; + parent->pred_Buf[0]=LD_VEC4F(0); + parent->state_inphase[0] = 1.0f; + parent->nuc=0; - while(pathCnt > MAX_PATHS-4) { - float m = sv_PathPtr[0]->flowMetr; - int i = 1; - int j = 0; - do { - float n = sv_PathPtr[i]->flowMetr; - if(m < n) { - m = n; - j = i; - } - } while(++i < pathCnt); - swap(sv_PathPtr[j], sv_PathPtr[--pathCnt]); - } + } - parent = sv_PathPtr[0]; - int parentPathIdx = 0; - for(int i = 1; i < pathCnt; ++i) - if(parent->metr > sv_PathPtr[i]->metr) { - parent = sv_PathPtr[i]; - parentPathIdx = i; - } - if(parent->metr >= 1000.0f) - break; - int parent_flow = parent->flow; - - // compute child path flow states, predicted signal,negative and positive penalties - advanceState4(parent, end_flow); - - int n = pathCnt; - double bestpen = 25.0; - for(int nuc = 0; nuc < 4; ++nuc) { - PathRec RESTRICT_PTR child = sv_PathPtr[n]; - - child->flow = min(ad_Idx.A[nuc], end_flow); - child->window_start = ad_Beg.A[nuc]; - child->window_end = min(ad_End.A[nuc], end_flow); - - // Do not attempt to calculate child->last_hp in this loop; bad things happen - if(child->flow >= end_flow or parent->last_hp >= MAX_HPXLEN or parent->sequence_length >= 2*MAX_VALS-10) - continue; - - // pointer in the ad_Buf buffer pointing at the running sum of positive residuals at start of parent window - //char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; - int cwsIdx=child->window_start-parent->window_start; - int cfIdx =child->flow-parent->window_start; - int cweIdx=child->window_end-parent->window_start; - - // child path metric - float metr = parent->res + pres_Buf[cwsIdx].A[nuc];//*((float RESTRICT_PTR)(pn+child->window_start*16+(AD_PRES_OFS-AD_NRES_OFS))); - - // sum of squared residuals for positive residuals for flows < child->flow - float penPar = pres_Buf[cfIdx].A[nuc];//*((float RESTRICT_PTR)(pn+child->flow*16+(AD_PRES_OFS-AD_NRES_OFS))); - - // sum of squared residuals for negative residuals for flows < child->window_end - float penNeg = nres_Buf[cweIdx].A[nuc];//*((float RESTRICT_PTR)(pn+child->window_end*16)); - - // sum of squared residuals left of child window start - child->res = metr + nres_Buf[cwsIdx].A[nuc];//*((float RESTRICT_PTR)(pn+child->window_start*16)); - - metr += penNeg; - - // penPar corresponds to penalty1 in DPTreephaser.cpp - penPar += penNeg; - penNeg += penPar; - - // penalty = penalty1 + (kNegativeMultiplier = 2)*penNeg - if(penNeg >= 20.0) - continue; - - if(bestpen > penNeg) - bestpen = penNeg; - else if(penNeg-bestpen >= 0.2) - continue; - - // child->path_metric > sum_of_squares_upper_bound - if(metr > bestDist) - continue; - - float newSignal = rd_NormMeasure[child->flow]; - - // XXX Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end - // Check 'dot' criterion - if(child->flow < parent->window_end){ - if (recalibrate_predictions_) - newSignal -= (parent->calib_A[child->flow]*parent->pred[child->flow]+parent->calib_B[child->flow]); - else - newSignal -= parent->pred[child->flow]; - } - newSignal /= state_Buf[cfIdx+1].A[nuc];// *((float RESTRICT_PTR)(ad_Buf+nuc*4+AD_STATE_OFS + (child->flow-parent->window_start)*16)); - child->dotCnt = 0; - if(newSignal < 0.3f) { - if(parent->dotCnt > 0) - continue; - child->dotCnt = 1; - } - // child path survives at this point - child->metr = float(metr); - child->flowMetr = float(penPar); - child->penalty = float(penNeg); - child->nuc = nuc; - ++n; - } + for(int i=1;iflow=0; // mark as invalid for restart + //sv_PathPtr[i]->window_end = 1; + sv_PathPtr[i]->sequence_length = 0; + sv_PathPtr[i]->cached_flow=DFLT_CACHE; + sv_PathPtr[i]->cached_flow_ws=DFLT_CACHE; + sv_PathPtr[i]->cached_flow_seq=DFLT_CACHE; + } + sv_PathPtr[0]->cached_flow=DFLT_CACHE; + sv_PathPtr[0]->cached_flow_ws=DFLT_CACHE; + sv_PathPtr[0]->cached_flow_seq=DFLT_CACHE; - // XXX Right here we are having a memory overrun: We copied up to parent->flow but use until parent->window_end of calibA and calibB - // Computing squared distance between parent's predicted signal and normalized measurements - float dist = parent->res+(rd_SqNormMeasureSum[parent->window_end]-rd_SqNormMeasureSum[end_flow]); - if (recalibrate_predictions_) { - int i=parent->window_start; - dist += sumOfSquaredDiffsFloatSSE_recal((float RESTRICT_PTR)(&(rd_NormMeasure[i])), - (float RESTRICT_PTR)(&(parent->pred[i])), - (float RESTRICT_PTR)(&(parent->calib_A[i])), - (float RESTRICT_PTR)(&(parent->calib_B[i])), - parent->window_end-i); - } else { - int i=parent->window_start; - dist += sumOfSquaredDiffsFloatSSE((float RESTRICT_PTR)(&(rd_NormMeasure[i])), - (float RESTRICT_PTR)(&(parent->pred[i])), - parent->window_end-i); - } - // Finished computing squared distance - int bestPathIdx = -1; + parent->dist=computeParentDist(parent,end_flow); + parent->saved=0; + int badPaths=0; + int manyPaths=0; - // current best path is parent path - if(bestDist > dist) { - bestPathIdx = parentPathIdx; - parentPathIdx = -1; - } + do { + int parentPathIdx=0; + int childPathIdx=-1; + float bestpen = 19.8; + parent=sv_PathPtr[0]; + if(pathCnt>1) + parent = sortPaths(pathCnt,parentPathIdx,badPaths,numActivePaths); + else + badPaths=0; + + int pf=parent->flow; + int pws=parent->window_start; + int pseq=parent->sequence_length; + int numChild=0; + if(!(parent->last_hp >= MAX_HPXLEN or parent->sequence_length >= 2*MAX_VALS-10)){ + advanceState4(parent, end_flow); - int childPathIdx = -1; - while(pathCnt < n) { - PathRec RESTRICT_PTR child = sv_PathPtr[pathCnt]; - // Rule that depends on finding the best nuc - if(child->penalty-bestpen >= 0.2f) { - sv_PathPtr[pathCnt] = sv_PathPtr[--n]; - sv_PathPtr[n] = child; - } - else if((childPathIdx < 0) && (parentPathIdx >= 0)) { - sv_PathPtr[pathCnt] = sv_PathPtr[--n]; - sv_PathPtr[n] = child; - childPathIdx = n; + for(int nuc = 0; nuc < 4; ++nuc) { + bestpen = min(bestpen,(float)penNegV[nuc]); } - // this is the child path to be kept - else { - if (child->flow) - child->flowMetr = (child->metr + 0.5f*child->flowMetr) / child->flow; - //char RESTRICT_PTR p = ad_Buf+child->nuc*4+AD_STATE_OFS; - { - int len=child->window_end-parent->window_start; - copySSE_4th(&child->state[parent->window_start],&state_Buf[1].A[child->nuc],len); - copySSE_4th(&child->pred[parent->window_start],&pred_Buf[1].A[child->nuc],len); - } -// for(int i = parent->window_start, j = 1, e = child->window_end; i < e; ++i, j ++) { -// child->state[i] = state_Buf[j].A[child->nuc];//*((float*)(ad_Buf+child->nuc*4+AD_STATE_OFS + j)); -// child->pred[i] = pred_Buf[j].A[child->nuc]; //*((float*)(ad_Buf+child->nuc*4+AD_PRED_OFS + j)); -// } - copySSE(child->pred, parent->pred, parent->window_start << 2); - - copySSE(child->sequence, parent->sequence, parent->sequence_length); - - if(state_inphase_enabled_){ - if(child->flow > 0){ - int cpSize = (parent->flow+1)*sizeof(float); - copySSE(child->state_inphase, parent->state_inphase, cpSize); - } - //extending from parent->state_inphase[parent->flow] to fill the gap - for(int tempInd = parent->flow+1; tempInd < child->flow; tempInd++){ - child->state_inphase[tempInd] = max(child->state[child->flow],0.01f); - } - child->state_inphase[child->flow] = max(child->state[child->flow],0.01f); - } - child->sequence_length = parent->sequence_length + 1; - child->sequence[parent->sequence_length] = flow_order_[child->flow]; - if (parent->sequence_length and child->sequence[parent->sequence_length] != child->sequence[parent->sequence_length-1]) - child->last_hp = 0; - else - child->last_hp = parent->last_hp; - child->last_hp++; - - // copy whole vector to avoid memory access to fields that have been written to by (longer) previously discarded paths XXX - // --> Reintroducing memory overrun since it seems to yield better performance - if (recalibrate_predictions_) { - if(child->flow > 0){ - // --- Reverting to old code with memory overrun - int cpSize = (parent->flow+1) << 2; - //memcpy(child->calib_A, parent->calib_A, cpSize); - //memcpy(child->calib_B, parent->calib_B, cpSize); - // --- - copySSE(child->calib_A, parent->calib_A, cpSize); - copySSE(child->calib_B, parent->calib_B, cpSize); - } - //explicitly fill zeros between parent->flow and child->flow; - for(int tempInd = parent->flow + 1; tempInd < child->flow; tempInd++){ - child->calib_A[tempInd] = 1.0f; - child->calib_B[tempInd] = 0.0f; + int numChild=0; + for(int nuc = 0; nuc < 4; ++nuc) { + if(flow_Buf[nuc] >= end_flow) + continue; + if(penNegV[nuc]-bestpen >= maxMetrDiff) + continue; + + float newSignal=rd_NormMeasureAdj[flow_Buf[nuc]] / parent->state[flow_Buf[nuc]][nuc]; + if(newSignal < 0.3f && parent->newSignal < 0.3f) + continue; + distV[nuc] += rd_SqNormMeasureSum[winEnd_Buf[nuc]]-rd_SqNormMeasureSum[end_flow]; + + // child path survives at this point + PathRecV RESTRICT_PTR child = sv_PathPtr[pathCnt]; + child->flow = flow_Buf[nuc]; + child->window_start = winStart_Buf[nuc]; + child->window_end = winEnd_Buf[nuc]; + child->res = resV[nuc]; + child->newSignal = newSignal; + child->metr = metrV[nuc]; + child->flowMetr = penParV[nuc]; + child->penalty = penNegV[nuc]; + child->nuc = nuc; + child->dist = distV[nuc]; + numChild++; + if((childPathIdx < 0) && (bestDist < parent->dist || (parent->dist >= child->dist))){ + sv_PathPtr[pathCnt] = sv_PathPtr[MAX_PATHS-1]; + sv_PathPtr[MAX_PATHS-1] = child; + childPathIdx = MAX_PATHS-1; + if(bestDist >= child->dist){ + best=parent; + bestDist=child->dist; } - int hp_length = min(child->last_hp, MAX_HPXLEN); - child->calib_A[child->flow] = (*As_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); - child->calib_B[child->flow] = (*Bs_).at(child->flow).at(flow_order_.int_at(child->flow)).at(hp_length); + }else{ + CopyPathNew(child,parent,child,saveFlow,numSaved,cached_flow,cached_flow_ws,cached_flow_seq); + ++pathCnt; } - ++pathCnt; } - } - - // In the event, there is no best path, one of the child is copied to the parent - if(childPathIdx >= 0) { - PathRec RESTRICT_PTR child = sv_PathPtr[childPathIdx]; - parent_flow = parent->flow; //MJ - parent->flow = child->flow; - parent->window_end = child->window_end; - parent->res = child->res; - parent->metr = child->metr; - (child->flow == 0) ? (parent->flowMetr == 0) : (parent->flowMetr = (child->metr + 0.5f*child->flowMetr) / child->flow); - parent->dotCnt = child->dotCnt; - //char RESTRICT_PTR p = ad_Buf+child->nuc*4+AD_STATE_OFS; - for(int i = parent->window_start, j = 1, e = child->window_end; i < e; ++i, j ++) { - parent->state[i] = state_Buf[j].A[child->nuc];//*((float*)(ad_Buf+child->nuc*4+AD_STATE_OFS+j)); - parent->pred[i] = pred_Buf[j].A[child->nuc];//*((float*)(ad_Buf+child->nuc*4+AD_PRED_OFS+j)); - } - - parent->sequence[parent->sequence_length] = flow_order_[parent->flow]; - if (parent->sequence_length and parent->sequence[parent->sequence_length] != parent->sequence[parent->sequence_length-1]) - parent->last_hp = 0; - parent->last_hp++; - parent->sequence_length++; - - //update calib_A and calib_B for parent - if (recalibrate_predictions_) { - for(int tempInd = parent_flow + 1; tempInd < child->flow; tempInd++){ - parent->calib_A[tempInd] = 1.0f; - parent->calib_B[tempInd] = 0.0f; - } - parent->calib_A[parent->flow] = (*As_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - parent->calib_B[parent->flow] = (*Bs_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - } - - if(state_inphase_enabled_){ - for(int tempInd = parent_flow+1; tempInd < parent->flow; tempInd++){ - parent->state_inphase[tempInd] = parent->state[parent->flow]; - } - parent->state_inphase[parent->flow] = parent->state[parent->flow]; - } - - parent->window_start = child->window_start; - parentPathIdx = -1; - } + } - // updating parent as best path - if(bestPathIdx >= 0) { - bestDist = dist; - sv_PathPtr[bestPathIdx] = sv_PathPtr[--pathCnt]; - sv_PathPtr[pathCnt] = sv_PathPtr[MAX_PATHS]; - sv_PathPtr[MAX_PATHS] = parent; - } else if(parentPathIdx >= 0) { - sv_PathPtr[parentPathIdx] = sv_PathPtr[--pathCnt]; - sv_PathPtr[pathCnt] = parent; + if(childPathIdx >= 0) { + CopyPath(parent,parent,sv_PathPtr[childPathIdx],saveFlow,numSaved,cached_flow,cached_flow_ws,cached_flow_seq); + }else{ + if(bestDist >= parent->dist){ + bestDist = parent->dist; + sv_PathPtr[parentPathIdx] = sv_PathPtr[--pathCnt]; + sv_PathPtr[pathCnt] = sv_PathPtr[BEST_PATH]; + sv_PathPtr[BEST_PATH] = parent; + best=parent; + }else{ + sv_PathPtr[parentPathIdx] = sv_PathPtr[--pathCnt]; + sv_PathPtr[pathCnt] = parent; + } + } + if(pathCnt > 1){ + if(cached_flow==DFLT_CACHE){ + cached_flow=0;//pf; + cached_flow_ws=0;//pws; + cached_flow_seq=0;//pseq; + for(int pthi=0;pthi<=BEST_PATH;pthi++){ + PathRecV RESTRICT_PTR pth = sv_PathPtr[pthi]; + pth->cached_flow=min(pth->cached_flow,cached_flow); + pth->cached_flow_ws=min(pth->cached_flow_ws,cached_flow_ws); + pth->cached_flow_seq=min(pth->cached_flow_seq,cached_flow_seq); + } + } + }else if(cached_flow != DFLT_CACHE){ + cached_flow=DFLT_CACHE; + cached_flow_ws=DFLT_CACHE; + cached_flow_seq=DFLT_CACHE; + } + + if(saveFlow > 0){ + if(best->flow >= saveFlow && (pathCnt == 1 || best->flow >= end_flow)){ + + if(numSaved == 0){ + // save all the current paths + if(sv_PathPtr[BEST_PATH] != best){ + CopyPathDeep(sv_PathPtr[BEST_PATH],best); + best=sv_PathPtr[BEST_PATH]; + } + for(int i=0;iflow >= (saveFlow-8) && pathCnt != 1){ + for(int i=0;i 2) + manyPaths++; + } while(pathCnt > 0 && badPaths < bad_path_limit_ && manyPaths < many_path_limit_); + + for(int i=0;i<4;i++){ + if(best == sv_PathPtr[i]){ + sv_PathPtr[i]=sv_PathPtr[BEST_PATH]; + sv_PathPtr[BEST_PATH]=best; } - - } while(pathCnt > 0); + } + best=sv_PathPtr[BEST_PATH]; + memcpy_4F(&best->pred[best->window_start], + &best->pred_Buf[best->window_start][best->nuc], + best->window_end - best->window_start); // At the end change predictions according to recalibration model and reset data structures if (recalibrate_predictions_) { - RecalibratePredictions(sv_PathPtr[MAX_PATHS]); + RecalibratePredictions(sv_PathPtr[BEST_PATH]); ResetRecalibrationStructures(end_flow); } - - return false; + if(saveFlow > 0 && numSaved==0) + return true; + else + return false; } -void TreephaserSSE::WindowedNormalize(BasecallerRead& read, int num_steps) +void TreephaserVEC::WindowedNormalize(BasecallerRead& read, int num_steps) { // int num_flows = read.raw_measurements.size(); float median_set[windowSize_]; @@ -1216,33 +962,38 @@ void TreephaserSSE::WindowedNormalize(BasecallerRead& read, int num_steps) float next_normalizer = 0; int estim_flow = 0; int apply_flow = 0; + PathRecV *path=sv_PathPtr[BEST_PATH]; + int start_step=max(0,num_steps-1); - for (int step = 0; step <= num_steps; ++step) { + for (int step = start_step; step <= num_steps; ++step) { - int window_end = estim_flow + windowSize_; - int window_middle = estim_flow + windowSize_ / 2; - if (window_middle > num_flows_) - break; + int window_start = (step+0) * windowSize_; + int window_end = (step+1) * windowSize_; + int apply_flow_start = max(0,window_start-(windowSize_/2)); + int apply_flow_end = min(num_flows_,window_start+(windowSize_/2)); float normalizer = next_normalizer; int median_set_size = 0; - for (; estim_flow < window_end and estim_flow < num_flows_ and estim_flow < sv_PathPtr[MAX_PATHS]->window_end; ++estim_flow) - if (sv_PathPtr[MAX_PATHS]->pred[estim_flow] < 0.3) - median_set[median_set_size++] = read.raw_measurements[estim_flow] - sv_PathPtr[MAX_PATHS]->pred[estim_flow]; + float average=0; + for (estim_flow=window_start; estim_flow < window_end ; ++estim_flow){ + if (path->pred[estim_flow] < 0.3){ + average += read.raw_measurements[estim_flow] - path->pred[estim_flow]; + median_set_size++; + } + } if (median_set_size > 5) { - //cout << step << ":" << median_set_size << ":" << windowSize_ << endl; - std::nth_element(median_set, median_set + median_set_size/2, median_set + median_set_size); - next_normalizer = median_set[median_set_size / 2]; + next_normalizer = average/(float)median_set_size; if (step == 0) normalizer = next_normalizer; + else + normalizer = read.additive_correction[apply_flow_start-1]; } - float delta = (next_normalizer - normalizer) / static_cast(windowSize_); + float delta = (next_normalizer - normalizer) / (float)windowSize_; - for (; apply_flow < window_middle and apply_flow < num_flows_; ++apply_flow) { - //cout << apply_flow << ":" << window_middle << ":" << num_flows_ << endl; + for (apply_flow=apply_flow_start; apply_flow < apply_flow_end; ++apply_flow) { rd_NormMeasure[apply_flow] = read.raw_measurements[apply_flow] - normalizer; read.additive_correction[apply_flow] = normalizer; normalizer += delta; @@ -1260,30 +1011,37 @@ void TreephaserSSE::WindowedNormalize(BasecallerRead& read, int num_steps) estim_flow = 0; apply_flow = 0; - for (int step = 0; step <= num_steps; ++step) { + for (int step = start_step; step <= num_steps; ++step) { - int window_end = estim_flow + windowSize_; - int window_middle = estim_flow + windowSize_ / 2; - if (window_middle > num_flows_) - break; + int window_start = (step+0) * windowSize_; + int window_end = (step+1) * windowSize_; + int apply_flow_start = max(0,window_start-(windowSize_/2)); + int apply_flow_end = min(num_flows_,window_start+(windowSize_/2)); float normalizer = next_normalizer; int median_set_size = 0; - for (; estim_flow < window_end and estim_flow < num_flows_ and estim_flow < sv_PathPtr[MAX_PATHS]->window_end; ++estim_flow) - if (sv_PathPtr[MAX_PATHS]->pred[estim_flow] > 0.5 and rd_NormMeasure[estim_flow] > 0) - median_set[median_set_size++] = rd_NormMeasure[estim_flow] / sv_PathPtr[MAX_PATHS]->pred[estim_flow]; + float average=0; + for (estim_flow=window_start; estim_flow < window_end ; ++estim_flow){ + if (path->pred[estim_flow] > 0.5 and rd_NormMeasure[estim_flow] > 0){ + median_set[median_set_size++] = rd_NormMeasure[estim_flow] / path->pred[estim_flow]; + average+=rd_NormMeasure[estim_flow] / path->pred[estim_flow]; + } + } if (median_set_size > 5) { + average /= (float)median_set_size; std::nth_element(median_set, median_set + median_set_size/2, median_set + median_set_size); - next_normalizer = median_set[median_set_size / 2]; + next_normalizer = (median_set[median_set_size / 2] + average)/2; if (step == 0) normalizer = next_normalizer; + else + normalizer = read.multiplicative_correction[apply_flow_start-1]; } float delta = (next_normalizer - normalizer) / static_cast(windowSize_); - for (; apply_flow < window_middle and apply_flow < num_flows_; ++apply_flow) { + for (apply_flow=apply_flow_start; apply_flow < apply_flow_end; ++apply_flow) { rd_NormMeasure[apply_flow] /= normalizer; read.multiplicative_correction[apply_flow] = normalizer; normalizer += delta; @@ -1297,11 +1055,7 @@ void TreephaserSSE::WindowedNormalize(BasecallerRead& read, int num_steps) } -// ------------------------------------------------------------------------ -// Compute quality metrics -// Why does this function completely ignore recalibration? - -void TreephaserSSE::ComputeQVmetrics(BasecallerRead& read) +void TreephaserVEC::ComputeQVmetrics_flow(BasecallerRead& read, vector& flow_to_base, const bool flow_predictors_,const bool flow_quality) { static const char nuc_int_to_char[5] = "ACGT"; int num_flows = flow_order_.num_flows(); @@ -1314,19 +1068,19 @@ void TreephaserSSE::ComputeQVmetrics(BasecallerRead& read) read.penalty_mismatch.assign(num_bases, 0); read.penalty_residual.assign(num_bases, 0); - PathRec RESTRICT_PTR parent = sv_PathPtr[0]; - PathRec RESTRICT_PTR children[4] = {sv_PathPtr[1], sv_PathPtr[2], sv_PathPtr[3], sv_PathPtr[4]}; + PathRecV RESTRICT_PTR parent = sv_PathPtr[0]; parent->flow = 0; parent->window_start = 0; parent->window_end = 1; parent->res = 0.0f; parent->metr = 0.0f; parent->flowMetr = 0.0f; - parent->dotCnt = 0; - parent->state[0] = 1.0f; + parent->newSignal = 1.0f; + parent->state[0] = LD_VEC4F(1.0f); parent->sequence_length = 0; parent->last_hp = 0; parent->pred[0] = 0.0f; + parent->pred_Buf[0]=LD_VEC4F(0); float recent_state_inphase = 1; float recent_state_total = 1; @@ -1340,214 +1094,48 @@ void TreephaserSSE::ComputeQVmetrics(BasecallerRead& read) } // compute child path flow states, predicted signal,negative and positive penalties advanceState4(parent, num_flows); - - float penalty[4] = { 0, 0, 0, 0 }; - int called_nuc = -1; + int called_nuc = -1; for(int nuc = 0; nuc < 4; ++nuc) { - PathRec RESTRICT_PTR child = children[nuc]; if (nuc_int_to_char[nuc] == flow_order_[solution_flow]) called_nuc = nuc; - child->flow = min(ad_Idx.A[nuc], flow_order_.num_flows()); - child->window_end = min(ad_End.A[nuc], flow_order_.num_flows()); - child->window_start = min(ad_Beg.A[nuc], child->window_end); - - // Apply easy termination rules - if (child->flow >= num_flows || parent->last_hp >= MAX_HPXLEN ) { - penalty[nuc] = 25; // Mark for deletion - continue; - } - - // pointer in the ad_Buf buffer pointing at the running sum of positive residuals at start of parent window -// char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; - - // sum of squared residuals for positive residuals for flows < child->flow - float penPar = pres_Buf[child->flow-parent->window_start].A[nuc];// *((float RESTRICT_PTR)(ad_Buf+nuc*4+(AD_PRES_OFS)+(child->flow-parent->window_start-1)*16)); - - // sum of squared residuals for negative residuals for flows < child->window_end - float penNeg = nres_Buf[child->window_end-parent->window_start].A[nuc];// *((float RESTRICT_PTR)(ad_Buf+nuc*4+AD_NRES_OFS+(child->window_end-parent->window_start-1)*16)); - - penalty[nuc] = penPar + penNeg; } - // find current incorporating base - assert(called_nuc > -1); - assert(children[called_nuc]->flow == solution_flow); - - PathRec RESTRICT_PTR childToKeep = children[called_nuc]; - //copy -// char RESTRICT_PTR p = ad_Buf+ called_nuc*4 + AD_STATE_OFS; - - recent_state_total = 0; - for(int i = parent->window_start, j = 1, e = childToKeep->window_end; i < e; ++i, j ++) { - childToKeep->state[i] = state_Buf[j].A[called_nuc];// *((float*)(p+j*16)); - childToKeep->pred[i] = pred_Buf[j].A[called_nuc];// *((float*)(p+j*16+(AD_PRED_OFS-AD_STATE_OFS))); - recent_state_total += childToKeep->state[i]; + for(int i = parent->window_start, e = winStart_Buf[called_nuc]; i < e; ++i) { + parent->pred[i] = parent->pred_Buf[i][called_nuc]; } - //sse implementation with aligned memory; no gain as the number of elements to be summed up is small -// recent_state_total = vecSumSSE(state_Buf, countStates); - copySSE(childToKeep->pred, parent->pred, parent->window_start << 2); - - if (childToKeep->flow == parent->flow) - childToKeep->last_hp = parent->last_hp + 1; + if (flow_Buf[called_nuc] == parent->flow) + parent->last_hp = parent->last_hp + 1; else - childToKeep->last_hp = 1; + parent->last_hp = 1; - recent_state_inphase = childToKeep->state[solution_flow]; + recent_state_inphase = parent->state[solution_flow][called_nuc]; // Get delta penalty to next best solution read.penalty_mismatch[base] = -1; // min delta penalty to earlier base hypothesis read.penalty_residual[base] = 0; if (solution_flow - parent->window_start > 0) - read.penalty_residual[base] = penalty[called_nuc] / (solution_flow - parent->window_start); + read.penalty_residual[base] = penParV[called_nuc] / (solution_flow - parent->window_start); for (int nuc = 0; nuc < 4; ++nuc) { if (nuc == called_nuc) continue; - float penalty_mismatch = penalty[called_nuc] - penalty[nuc]; + float penalty_mismatch = penParV[called_nuc] - penParV[nuc]; read.penalty_mismatch[base] = max(read.penalty_mismatch[base], penalty_mismatch); } - // Called state is the starting point for next base - PathRec RESTRICT_PTR swap = parent; - parent = children[called_nuc]; - children[called_nuc] = swap; + parent->flow = min((int)(flow_Buf[called_nuc]), flow_order_.num_flows()); + parent->window_end = min((int)(winEnd_Buf[called_nuc]), flow_order_.num_flows()); + parent->window_start = min((int)(winStart_Buf[called_nuc]), parent->window_end); + parent->nuc=called_nuc; } read.state_inphase[solution_flow] = max(recent_state_inphase, 0.01f); - read.state_total[solution_flow] = max(recent_state_total, 0.01f); - } - - if(recalibrate_predictions_) { - RecalibratePredictions(parent); - ResetRecalibrationStructures(num_flows_); } - setZeroSSE(&read.prediction[0], num_flows_*sizeof(float)); - copySSE(&read.prediction[0], parent->pred, parent->window_end*sizeof(float)); -} - - -void TreephaserSSE::ComputeQVmetrics_flow(BasecallerRead& read, vector& flow_to_base, const bool flow_predictors_,const bool flow_quality) -{ - static const char nuc_int_to_char[5] = "ACGT"; - int num_flows = flow_order_.num_flows(); - read.state_inphase.assign(num_flows, 1); - read.state_total.assign(num_flows, 1); - - if (read.sequence.empty()) - return; - int num_bases = read.sequence.size(); - read.penalty_mismatch.assign(num_bases, 0); - read.penalty_residual.assign(num_bases, 0); - if (flow_predictors_ || flow_quality) { - read.penalty_mismatch_flow.assign(num_flows, 0); - read.penalty_residual_flow.assign(num_flows, 0); + for(int i = parent->window_start, e = parent->window_end; i < e; ++i) { + parent->pred[i] = parent->pred_Buf[i][parent->nuc]; } - PathRec RESTRICT_PTR parent = sv_PathPtr[0]; - PathRec RESTRICT_PTR children[4] = {sv_PathPtr[1], sv_PathPtr[2], sv_PathPtr[3], sv_PathPtr[4]}; - parent->flow = 0; - parent->window_start = 0; - parent->window_end = 1; - parent->res = 0.0f; - parent->metr = 0.0f; - parent->flowMetr = 0.0f; - parent->dotCnt = 0; - parent->state[0] = 1.0f; - parent->sequence_length = 0; - parent->last_hp = 0; - parent->pred[0] = 0.0f; - - float recent_state_inphase = 1; - float recent_state_total = 1; - - // main loop for base calling - for (int solution_flow = 0, base = 0; solution_flow < num_flows; ++solution_flow) { - for (; basecalib_A[parent->flow] = (*As_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - parent->calib_B[parent->flow] = (*Bs_).at(parent->flow).at(flow_order_.int_at(parent->flow)).at(parent->last_hp); - } - // compute child path flow states, predicted signal,negative and positive penalties - advanceState4(parent, num_flows); - - float penalty[4] = { 0, 0, 0, 0 }; - int called_nuc = -1; - for(int nuc = 0; nuc < 4; ++nuc) { - PathRec RESTRICT_PTR child = children[nuc]; - if (nuc_int_to_char[nuc] == flow_order_[solution_flow]) - called_nuc = nuc; - child->flow = min(ad_Idx.A[nuc], flow_order_.num_flows()); - child->window_end = min(ad_End.A[nuc], flow_order_.num_flows()); - child->window_start = min(ad_Beg.A[nuc], child->window_end); - - // Apply easy termination rules - if (child->flow >= num_flows || parent->last_hp >= MAX_HPXLEN ) { - penalty[nuc] = 25; // Mark for deletion - continue; - } - - // pointer in the ad_Buf buffer pointing at the running sum of positive residuals at start of parent window -// char RESTRICT_PTR pn = ad_Buf+nuc*4+(AD_NRES_OFS-16)-parent->window_start*16; - - // sum of squared residuals for positive residuals for flows < child->flow - float penPar = pres_Buf[child->flow-parent->window_start].A[nuc];// *((float RESTRICT_PTR)(ad_Buf+nuc*4+(AD_PRES_OFS)+(child->flow-parent->window_start-1)*16)); - - // sum of squared residuals for negative residuals for flows < child->window_end - float penNeg = nres_Buf[child->window_end-parent->window_start].A[nuc];// *((float RESTRICT_PTR)(ad_Buf+nuc*4+AD_NRES_OFS+(child->window_end-parent->window_start-1)*16)); - - penalty[nuc] = penPar + penNeg; - } - - // find current incorporating base - assert(called_nuc > -1); - assert(children[called_nuc]->flow == solution_flow); - - PathRec RESTRICT_PTR childToKeep = children[called_nuc]; - //copy -// char RESTRICT_PTR p = ad_Buf+ called_nuc*4 + AD_STATE_OFS; - - recent_state_total = 0; - for(int i = parent->window_start, j = 1, e = childToKeep->window_end; i < e; ++i, j ++) { - childToKeep->state[i] = state_Buf[j].A[called_nuc];// *((float*)(p+j*16)); - childToKeep->pred[i] = pred_Buf[j].A[called_nuc];// *((float*)(p+j*16+(AD_PRED_OFS-AD_STATE_OFS))); - recent_state_total += childToKeep->state[i]; - } - //sse implementation with aligned memory; no gain as the number of elements to be summed up is small -// recent_state_total = vecSumSSE(state_Buf, countStates); - - copySSE(childToKeep->pred, parent->pred, parent->window_start << 2); - - if (childToKeep->flow == parent->flow) - childToKeep->last_hp = parent->last_hp + 1; - else - childToKeep->last_hp = 1; - - recent_state_inphase = childToKeep->state[solution_flow]; - - // Get delta penalty to next best solution - read.penalty_mismatch[base] = -1; // min delta penalty to earlier base hypothesis - read.penalty_residual[base] = 0; - - if (solution_flow - parent->window_start > 0) - read.penalty_residual[base] = penalty[called_nuc] / (solution_flow - parent->window_start); - - for (int nuc = 0; nuc < 4; ++nuc) { - if (nuc == called_nuc) - continue; - float penalty_mismatch = penalty[called_nuc] - penalty[nuc]; - read.penalty_mismatch[base] = max(read.penalty_mismatch[base], penalty_mismatch); - } - - // Called state is the starting point for next base - PathRec RESTRICT_PTR swap = parent; - parent = children[called_nuc]; - children[called_nuc] = swap; - } - read.state_inphase[solution_flow] = max(recent_state_inphase, 0.01f); - read.state_total[solution_flow] = max(recent_state_total, 0.01f); - } - if (flow_predictors_ || flow_quality) { //if (flow_predictors_) //vector flows_to_proc; for (int solution_flow = 0; solution_flow < num_flows; ++solution_flow) { @@ -1556,30 +1144,15 @@ void TreephaserSSE::ComputeQVmetrics_flow(BasecallerRead& read, vector& fl // copy from what's stored in read.penalty_mismatch[base] read.penalty_mismatch_flow[solution_flow] = read.penalty_mismatch[curr_base]; read.penalty_residual_flow[solution_flow] = read.penalty_residual[curr_base]; - /* - int nFlows = flows_to_proc.size(); - if (nFlows>0) { - for (int i=0; ipred, parent->window_end*sizeof(float)); + memset_F(&read.prediction[parent->window_end], 0, num_flows_-parent->window_end); + memcpy_F(&read.prediction[0], &parent->pred[0], parent->window_end); } diff --git a/Analysis/BaseCaller/TreephaserVEC.h b/Analysis/BaseCaller/TreephaserVEC.h index 8e64119f..ddf83e72 100644 --- a/Analysis/BaseCaller/TreephaserVEC.h +++ b/Analysis/BaseCaller/TreephaserVEC.h @@ -1,7 +1,7 @@ /* Copyright (C) 2012 Ion Torrent Systems, Inc. All Rights Reserved */ -#ifndef TREEPHASERSSE_H -#define TREEPHASERSSE_H +#ifndef TREEPHASERVEC_H +#define TREEPHASERVEC_H #include "DPTreephaser.h" @@ -46,47 +46,72 @@ // MAX_STEPS set large enough to handle minimum window size #define MAX_STEPS (1+(MAX_VALS/DPTreephaser::kMinWindowSize_)) #define MAX_PATHS 8 +#define NUM_SAVED_PATHS 4 +#define NUM_BEST_PATH 1 +#define MAX_ACT_PATHS (MAX_PATHS+NUM_BEST_PATH+NUM_SAVED_PATHS) +#define BEST_PATH MAX_PATHS +#define SAVED_PATHS (MAX_PATHS+NUM_BEST_PATH) #define MAX_PATH_DELAY 40 //#pragma pack(push, 1) -struct __attribute__((packed)) ALIGN(64) PathRec { +struct __attribute__((packed)) ALIGN(64) PathRecV { int flow; int window_start; int window_end; float res; float metr; float flowMetr; - int dotCnt; + float newSignal; float penalty; - float state[MAX_VALS] ALIGN(64); - float pred[MAX_VALS] ALIGN(64); - char sequence[2*MAX_VALS + 12]; // +12 makes the enitre struct align well - int sequence_length; int last_hp; int nuc; + float dist; + + // cache entries + int saved; + int cached_flow; + int cached_flow_ws; + int cached_flow_seq; + + // per-flow metrics + v4f state[MAX_VALS] ALIGN(64); + float pred[MAX_VALS] ALIGN(64); + v4f pred_Buf[MAX_VALS] ALIGN(64); float calib_A[MAX_VALS] ALIGN(64); float calib_B[MAX_VALS] ALIGN(64); float state_inphase[MAX_VALS] ALIGN(64); + + // per-basse metrics + int sequence_length; + char sequence[2*MAX_VALS + 12]; // +12 makes the entire struct align well }; //#pragma pack(pop) -class TreephaserSSE { +class TreephaserVEC { public: //! @brief Default constructor - TreephaserSSE(); + TreephaserVEC(); //! @brief Constructor //! @param[in] flow_order Flow order object //! @param[in] windowSize Size of the normalization window to use. - TreephaserSSE(const ion::FlowOrder& flow_order, const int windowSize); + TreephaserVEC(const ion::FlowOrder& flow_order, const int windowSize); //! @brief Set flow order and initialize internal variables //! @param[in] flow_order Flow order object void SetFlowOrder(const ion::FlowOrder& flow_order); + void SetBadPathLimit(int bad_path_limit){bad_path_limit_=bad_path_limit;} + + void SetManyPathLimit(int many_path_limit){many_path_limit_=many_path_limit;} + + void SetInitalPaths(int initial_paths){initial_paths_=initial_paths;} + + void SetMaxMetrDiff(float max_metr_diff){max_metr_diff_=max_metr_diff;} + //! @brief Set the normalization window size //! @param[in] windowSize Size of the normalization window to use. inline void SetNormalizationWindowSize(const int windowSize) { windowSize_ = max(DPTreephaser::kMinWindowSize_, min(windowSize, DPTreephaser::kMaxWindowSize_));} @@ -102,8 +127,8 @@ class TreephaserSSE { //! @brief Iterative solving and normalization routine void NormalizeAndSolve(BasecallerRead& read); - PathRec* parent; - int best; +// PathRecV* parent; +// int best; //! @brief Set pointers to recalibration model bool SetAsBs(const vector > > *As, const vector > > *Bs){ @@ -132,55 +157,76 @@ class TreephaserSSE { //! @brief Perform a more advanced simulation to generate QV predictors void ComputeQVmetrics(BasecallerRead& read); - void ComputeQVmetrics_flow(BasecallerRead& read, vector& flow_to_base, const bool flow_predictors_=false); + void ComputeQVmetrics_flow(BasecallerRead& read, vector& flow_to_base, const bool flow_predictors_=false, const bool flow_quality = false); int nuc_char_to_int(char nuc) {if (nuc=='A') return 0; if (nuc=='C') return 1; if (nuc=='G') return 2; if (nuc=='T') return 3; return -1;} protected: - inline void CalcResidualI(PathRec RESTRICT_PTR parent, + inline void CalcResidualI(PathRecV RESTRICT_PTR parent, int flow, int j, v4f &rS, v4f rTemp1s_, v4f &rPenNeg, v4f &rPenPos); + inline v4i CheckWindowStartBase(v4i rBeg, v4i rParNuc, int flow, v4f rS); + inline void CheckWindowStart1(v4i & rBeg, v4i rParNuc, int flow, v4f rS); + inline void CheckWindowStart2(v4i & rBeg, v4i rParNuc, int flow, v4f rS, v4i rEnd); + inline void CheckWindowEnd(v4i rBeg, v4i rParNuc, int flow, v4f & rS, v4i & rEnd, v4f rAlive, v4i rFlowEnd); + inline void advanceI( float parentState, int j, v4i rParNuc, v4f ts_tr, v4f & rAlive, v4f & rS); + inline void advanceE(int j, v4i rParNuc, v4f ts_tr, v4f & rAlive, v4f & rS); + void catchup (PathRecV RESTRICT_PTR parent,PathRecV RESTRICT_PTR best, int begin_flow, int end_flow); + //! @brief Solving a read - bool Solve(int begin_flow, int end_flow); + bool Solve(int begin_flow, int end_flow, int save_flow, int numActivePaths, float maxMetrDiff); //! @brief Normalizing a read + PathRecV *sortPaths(int & pathCnt, int &parentPathIdx, int & badPaths, int numAcitvePaths); + float computeParentDist(PathRecV RESTRICT_PTR parent, int end_flow); + void CopyPath(PathRecV RESTRICT_PTR dest, PathRecV RESTRICT_PTR parent, + PathRecV RESTRICT_PTR child, int saveFlow, int &numSaved, + int cached_flow, int cached_flow_ws, int cached_flow_seq); + void CopyPathNew(PathRecV RESTRICT_PTR dest, PathRecV RESTRICT_PTR parent, + PathRecV RESTRICT_PTR child, int saveFlow, int &numSaved, + int cached_flow, int cached_flow_ws, int cached_flow_seq); + void CopyPathDeep(PathRecV RESTRICT_PTR dest, PathRecV RESTRICT_PTR src); void WindowedNormalize(BasecallerRead& read, int step); //! @brief Make recalibration changes to predictions explicitly visible - void RecalibratePredictions(PathRec *maxPathPtr); + void RecalibratePredictions(PathRecV *maxPathPtr); //! @brief Resetting recalibration data structure void ResetRecalibrationStructures(int num_flows); //! @brief Initialize floating point array variables with a value - void InitializeVariables(float init_val); + void InitializeVariables(); void sumNormMeasures(); - void advanceState4(PathRec RESTRICT_PTR parent, int end); - void advanceStateInPlace(PathRec RESTRICT_PTR path, int nuc, int end); + void advanceState4(PathRecV RESTRICT_PTR parent, int end); + void advanceStateInPlace(PathRecV RESTRICT_PTR path, int nuc, int end, int end_flow); + inline float CalcNewSignal(int nuc, PathRecV RESTRICT_PTR parent); // There was a small penalty in making these arrays class members, as opposed to static variables - ALIGN(64) short ts_NextNuc[4][MAX_VALS]; - ALIGN(64) float ts_Transition[4][MAX_VALS]; - ALIGN(64) v4i_u ts_NextNuc4[MAX_VALS]; - ALIGN(64) v4f_u ts_Transition4[MAX_VALS]; + ALIGN(64) v4i ts_NextNuc[MAX_VALS]; + ALIGN(64) v4f ts_Transition[MAX_VALS]; ALIGN(64) float rd_NormMeasure[MAX_VALS]; + ALIGN(64) float rd_NormMeasureAdj[MAX_VALS]; + ALIGN(64) float rd_SqNormMeasureSum[MAX_VALS]; - ALIGN(64) PathRec sv_pathBuf[MAX_PATHS+1]; + ALIGN(64) PathRecV sv_pathBuf[MAX_ACT_PATHS]; ALIGN(64) float ft_stepNorms[MAX_STEPS]; - ALIGN(64) v4f_u ad_MinFrac; - ALIGN(16) v4i_u ad_FlowEnd; - ALIGN(16) v4i_u ad_Idx; - ALIGN(16) v4i_u ad_End; - ALIGN(16) v4i_u ad_Beg; - ALIGN(64)v4f_u state_Buf[MAX_VALS+1]; - ALIGN(64)v4f_u pred_Buf[MAX_VALS+1]; - ALIGN(64)v4f_u nres_Buf[MAX_VALS+1]; - ALIGN(64)v4f_u pres_Buf[MAX_VALS+1]; + ALIGN(16) v4i ad_FlowEnd; + ALIGN(16) v4i flow_Buf; + ALIGN(16) v4i winEnd_Buf; + ALIGN(16) v4i winStart_Buf; + ALIGN(64)v4f nres_WE; + ALIGN(64)v4f pres_WE; + ALIGN(64)v4f metrV={0,0,0,0}; + ALIGN(64)v4f penParV={0,0,0,0}; + ALIGN(64)v4f penNegV={0,0,0,0}; + ALIGN(64)v4f resV={0,0,0,0}; + ALIGN(64)v4f distV={0,0,0,0}; + ion::FlowOrder flow_order_; //!< Sequence of nucleotide flows - PathRec *sv_PathPtr[MAX_PATHS+1]; + PathRecV *sv_PathPtr[MAX_ACT_PATHS]; int ad_Adv; int num_flows_; int ts_StepCnt; @@ -197,7 +243,11 @@ class TreephaserSSE { bool recalibrate_predictions_; //!< Switch to use recalibration model during metric generation bool skip_recal_during_normalization_; //!< Switch to skip recalibration during the normalization phase bool state_inphase_enabled_; //!< Switch to save inphase population of molecules + int bad_path_limit_; //!< number of dead end paths before aborting + int many_path_limit_; //!< number of >3 path decisions before aborting + int initial_paths_; //!< number of initial max paths to use in solve + float max_metr_diff_; //!< maximum metric difference to create a branch }; -#endif // TREEPHASERSSE_H +#endif // TREEPHASERVEC_H diff --git a/Analysis/BkgModel/Fitters/Complex/MultiLevMar.cpp b/Analysis/BkgModel/Fitters/Complex/MultiLevMar.cpp index c4419b1f..a3ed717b 100644 --- a/Analysis/BkgModel/Fitters/Complex/MultiLevMar.cpp +++ b/Analysis/BkgModel/Fitters/Complex/MultiLevMar.cpp @@ -196,9 +196,9 @@ int MultiFlowLevMar::MultiFlowSpecializedLevMarFitParametersOnlyRegion ( total_iter++; } } - if (lm_state.region_success_step<1){ - printf("No successes: MultiFlowSpecializedLevMarFitParametersOnlyRegion in region(col=%d,row=%d)\n", bkg.region_data->region->col, bkg.region_data->region->row); - } +// if (lm_state.region_success_step<1){ +// printf("No successes: MultiFlowSpecializedLevMarFitParametersOnlyRegion in region(col=%d,row=%d)\n", bkg.region_data->region->col, bkg.region_data->region->row); +// } CleanTerminateOptimization(); return ( total_iter ); } @@ -510,8 +510,8 @@ void MultiFlowLevMar::LevMarFitRegion ( else { cont_proc = lm_state.IncreaseRegionStep(); - if (cont_proc) - printf ( "LevMarFitRegion: Reached max lambda %f in region(col=%d,row=%d):\n", lm_state.reg_lambda,bkg.region_data->region->col, bkg.region_data->region->row); +//if (cont_proc) +// printf ( "LevMarFitRegion: Reached max lambda %f in region(col=%d,row=%d):\n", lm_state.reg_lambda,bkg.region_data->region->col, bkg.region_data->region->row); } } else diff --git a/Analysis/BkgModel/Fitters/FitExpDecay.h b/Analysis/BkgModel/Fitters/FitExpDecay.h index 0d0ab8b5..7ebee399 100755 --- a/Analysis/BkgModel/Fitters/FitExpDecay.h +++ b/Analysis/BkgModel/Fitters/FitExpDecay.h @@ -70,10 +70,22 @@ class FitExpDecay : public LevMarFitterV2 protected: virtual void Evaluate(float *y, float *params) { - memset(y,0,sizeof(float[npts])); - - for (int i=i_start;i < i_end;i++) - y[i] = params[0]*ExpApprox(-(xvals[i]-xvals[i_start])/params[1]) + params[2]; + float param0=params[0]; + float param1=params[1] * 256.0f; + float param2=params[2]; + float startVal=1.0f + xvals[i_start]/param1; + int i=0; + for(;i #include "MathUtil.h" +#include "Vecs.h" // shielding layer to insulate from choice @@ -119,19 +120,19 @@ void MathModel::UnsignedParallelSimpleComputeCumulativeIncorporationHydrogens ( int i; int common_start; - float totocc[FLOW_STEP], totgen[FLOW_STEP]; - float pact[FLOW_STEP],pact_new[FLOW_STEP]; - float c_dntp_top[FLOW_STEP], c_dntp_bot[FLOW_STEP]; - float hplus_events_sum[FLOW_STEP], hplus_events_current[FLOW_STEP]; // mean events per molecule, cumulative and current - float enzyme_dt[FLOW_STEP]; - float Aint[FLOW_STEP]; + v4f totocc, totgen; + v4f pact,pact_new=LD_VEC4F(0); + v4f c_dntp_top, c_dntp_bot; + v4f hplus_events_sum, hplus_events_current; // mean events per molecule, cumulative and current + v4f enzyme_dt; + v4f Aint; // A a pointer, so isolate by copying for (int q=0;q 0.0f) - { - // cannot accelerate here because half_kr is distinct per - for (int q=0; q 0.0f);st++) // someone needs computation - { - // update top of well concentration in the bulk for FLOW_STEP flows - for (int q=0; q 0.0f) + { + // cannot accelerate here because half_kr is distinct per + enzyme_dt = deltaFrameSeconds[i]*half_kr; + +// for (int st=1; (st <= SUB_STEPS) && (sum_totgen > 0.0f);st++) // someone needs computation + { + // update top of well concentration in the bulk for 4 flows + for (int q=0; q<4; q++) + c_dntp_top[q] = nuc_rise_ptr[q][c_dntp_top_ndx]; + c_dntp_top_ndx += 1; + + // assume instantaneous equilibrium within the well + c_dntp_bot = c_dntp_top/ (1.0f+ scaled_kr*pact*c_dntp_bot_plus_kmax); // the level at which new nucs are used up as fast as they diffuse in + c_dntp_bot_plus_kmax = 1.0f/ (c_dntp_bot + kmaxV); // scale for michaelis-menten kinetics, assuming nucs are limiting factor + + // Now compute effect of concentration on enzyme rate + c_dntp_old_effect = c_dntp_new_effect; + c_dntp_new_effect = c_dntp_bot*c_dntp_bot_plus_kmax; // current effect of concentration on enzyme rate + + // update events per molecule + hplus_events_current = enzyme_dt* (c_dntp_new_effect+c_dntp_old_effect); // events per molecule is average rate * time of rate + hplus_events_sum += hplus_events_current; + + // how many active molecules left at end of time period given poisson process with total intensity of events + for (int q=0; q<4; q++) + pact_new[q] = mix_memo[q].GetStep ((float)hplus_events_sum[q]); + + + // how many hplus were generated + totgen -= ( (pact+pact_new) * 0.5f) * hplus_events_current; // active molecules * events per molecule + pact = pact_new; + totgen = __builtin_ia32_maxps (totgen,(v4f){0,0,0,0}); + // or is there a "max" within command? + sum_totgen = 0.0f; + for (int q=0; q<4; q++) + sum_totgen += totgen[q]; + } + + } + v4f tmptot=totocc-totgen; + for (int q=0; q<4; q++) + ival_offset[q][i] = tmptot[q]; } } - // try to simplify void MathModel::SimplifyComputeCumulativeIncorporationHydrogens ( float *ival_offset, int npts, const float *deltaFrameSeconds, diff --git a/Analysis/BkgModel/MathModel/MathOptim.h b/Analysis/BkgModel/MathModel/MathOptim.h index 35d5986d..378f7668 100644 --- a/Analysis/BkgModel/MathModel/MathOptim.h +++ b/Analysis/BkgModel/MathModel/MathOptim.h @@ -138,7 +138,7 @@ float ErfApprox ( float x ); float Expm2Approx ( float x ); inline float ExpApprox ( float x ) { - x = 1.0 + x / 256.0; + x = 1.0f + x / 256.0f; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; return x; diff --git a/Analysis/BkgModel/RegionalizedData.cpp b/Analysis/BkgModel/RegionalizedData.cpp index dd2497fa..d81a1fd3 100644 --- a/Analysis/BkgModel/RegionalizedData.cpp +++ b/Analysis/BkgModel/RegionalizedData.cpp @@ -372,9 +372,9 @@ void RegionalizedData::PickRepresentativeHighQualityWells (float copy_stringency my_beads.LowCopyBeadsAreLowQuality (final_filter, top_filter); int test_sampled = my_beads.NumberSampled(); - printf("DEBUGFILTER: %d %d %d %d %f %f %f %f %f %f %f %f\n", region->index, test_sampled, num_sampled, my_beads.numLBeads, - min_percentage, max_percentage, robust_filter, stringent_filter, final_filter, top_filter, - low_filter, high_filter); +// printf("DEBUGFILTER: %d %d %d %d %f %f %f %f %f %f %f %f\n", region->index, test_sampled, num_sampled, my_beads.numLBeads, +// min_percentage, max_percentage, robust_filter, stringent_filter, final_filter, top_filter, +// low_filter, high_filter); // should check if not enough beads and rebuild filter if we fail diff --git a/Analysis/BkgModel/Sampling/FitDensity.cpp b/Analysis/BkgModel/Sampling/FitDensity.cpp index 57bebc7e..bcb932b3 100644 --- a/Analysis/BkgModel/Sampling/FitDensity.cpp +++ b/Analysis/BkgModel/Sampling/FitDensity.cpp @@ -96,13 +96,9 @@ void FitDensity::kdensity(vector const& dat, vector &density, ve k++; } } - vector rowIndex(n,0); - for (int i=0; iRefinePerFlowTimeEstimate ( region_data->my_regions.rp.nuc_shape.t_mid_nuc_shift_per_flow, flow_block_size, flow_block_start ); // adjust buffering for every bead using specialized fitter - refine_buffering->AdjustBufferingEveryBead(flow_block_size, flow_block_start); +//MARK + if (inception_state->bkg_control.gpuControl.gpuWorkLoad == 0) + refine_buffering->AdjustBufferingEveryBead(flow_block_size, flow_block_start); // Set things up for double exponential smoothing. region_data->my_regions.tmidnuc_smoother.Initialize( & region_data->my_regions.rp ); @@ -1005,7 +1007,7 @@ void SignalProcessingMasterFitter::RegionalFittingForLaterFlowBlock( int flow_ke region_data->my_regions.tmidnuc_smoother.Smooth( & region_data->my_regions.rp ); region_data->my_regions.copy_drift_smoother.Smooth( & region_data->my_regions.rp ); region_data->my_regions.ratio_drift_smoother.Smooth( & region_data->my_regions.rp ); - +// MARK refine_time_fit->RefinePerFlowTimeEstimate ( region_data->my_regions.rp.nuc_shape.t_mid_nuc_shift_per_flow, flow_block_size, flow_block_start ); } @@ -1014,7 +1016,12 @@ void SignalProcessingMasterFitter::RefineAmplitudeEstimates ( double &elapsed_ti // in either case, finish by fitting amplitude to finalized regional parameters region_data->SetFineEmphasisVectors(); fit_timer.restart(); - refine_fit->FitAmplitudePerFlow ( flow_block_size, flow_block_start ); + + //MARK + //my_search.ParasitePointers ( math_poiss, ®ion_data->my_trace,region_data->emptytrace,®ion_data->my_scratch,region_data_extras.cur_bead_block, region_data_extras.cur_buffer_block, & ( region_data->my_regions ),®ion_data->time_c, + // region_data_extras.my_flow,®ion_data->emphasis_data ); + + refine_fit->FitAmplitudePerFlow ( flow_block_size, flow_block_start/*(, my_search*/); double fit_ampl_time = fit_timer.elapsed(); elapsed_time += fit_ampl_time; if ( ( my_debug.region_trace_file != NULL ) && ( my_debug.region_only_trace_file != NULL ) ) diff --git a/Analysis/CMakeLists.txt b/Analysis/CMakeLists.txt index ccca6e6f..fb1c86a7 100644 --- a/Analysis/CMakeLists.txt +++ b/Analysis/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2010 Ion Torrent Systems, Inc. All Rights Reserved -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) file(STRINGS "project_name.txt" PROJECT_NAME_TXT) list(GET PROJECT_NAME_TXT 0 PROJECT_NAME) project (${PROJECT_NAME}) @@ -338,6 +338,11 @@ add_dependencies(Crop IONVERSION) target_link_libraries(Crop ion-analysis pthread dl) install(TARGETS Crop DESTINATION bin) +#add_executable(lbTest crop/lbTest.cpp ${PROJECT_BINARY_DIR}/IonVersion.cpp) +#add_dependencies(lbTest IONVERSION) +#target_link_libraries(lbTest ion-analysis pthread dl) +#install(TARGETS lbTest DESTINATION bin) + add_executable(ChkDat crop/ChkDat.cpp ${PROJECT_BINARY_DIR}/IonVersion.cpp) add_dependencies(ChkDat IONVERSION) target_link_libraries(ChkDat ion-analysis pthread dl) @@ -482,6 +487,8 @@ set(BaseCallerSRCS if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") list(APPEND BaseCallerSRCS BaseCaller/TreephaserSSE.cpp) + list(APPEND BaseCallerSRCS + BaseCaller/TreephaserVEC.cpp) endif() add_executable(BaseCaller ${BaseCallerSRCS}) @@ -1110,6 +1117,8 @@ install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX5v2.h5" DESTINATION ${I install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX5v2.Recal.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX7v1.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX7v1.Recal.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) +install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX9v1.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) +install(FILES "${PROJECT_SOURCE_DIR}/config/phredTable.GX9v1.Recal.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/nnmodel.530.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/nnmodel.540.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/nnmodel.550.h5" DESTINATION ${ION_INSTALL_PREFIX}/config) @@ -1148,6 +1157,8 @@ install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX5v2_analysis.json" DESTINATIO install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX5v2_beadfind.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX7v1_analysis.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX7v1_beadfind.json" DESTINATION ${ION_INSTALL_PREFIX}/config) +install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX9v1_analysis.json" DESTINATION ${ION_INSTALL_PREFIX}/config) +install(FILES "${PROJECT_SOURCE_DIR}/config/args_GX9v1_beadfind.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/args_900_analysis.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/args_900_beadfind.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/args_P1.0.19_analysis.json" DESTINATION ${ION_INSTALL_PREFIX}/config) @@ -1209,6 +1220,7 @@ install(FILES "${PROJECT_SOURCE_DIR}/config/gopt_560.param.json" DESTINATION ${I install(FILES "${PROJECT_SOURCE_DIR}/config/gopt_541v2.param.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/gopt_GX5v2.param.json" DESTINATION ${ION_INSTALL_PREFIX}/config) install(FILES "${PROJECT_SOURCE_DIR}/config/gopt_GX7v1.param.json" DESTINATION ${ION_INSTALL_PREFIX}/config) +install(FILES "${PROJECT_SOURCE_DIR}/config/gopt_GX9v1.param.json" DESTINATION ${ION_INSTALL_PREFIX}/config) # # # @@ -1242,13 +1254,13 @@ install(FILES "${PROJECT_SOURCE_DIR}/config/datasets_calibration.json" DESTINATI install(FILES "${PROJECT_SOURCE_DIR}/config/StructureMetaInfo.json" DESTINATION ${ION_INSTALL_PREFIX}/config) #if(NOT ION_USE_SYSTEM_ARMADILLO) -# install(FILES "${PROJECT_BINARY_DIR}/../armadillo-6.100.0+ion0-install/lib/libarmadillo.so.6" DESTINATION lib) -# install(FILES "${PROJECT_BINARY_DIR}/../armadillo-6.100.0+ion0-install/lib/libarmadillo.so.6.100.0" DESTINATION lib) +# install(FILES "${PROJECT_BINARY_DIR}/../armadillo-6.100.0+ion1-install/lib/libarmadillo.so.6" DESTINATION lib) +# install(FILES "${PROJECT_BINARY_DIR}/../armadillo-6.100.0+ion1-install/lib/libarmadillo.so.6.100.0" DESTINATION lib) #endif() -install(PROGRAMS "${PROJECT_BINARY_DIR}/../htslib-1.2.1+ion0/tabix" DESTINATION bin) -install(PROGRAMS "${PROJECT_BINARY_DIR}/../htslib-1.2.1+ion0/bgzip" DESTINATION bin) -install(PROGRAMS "${PROJECT_BINARY_DIR}/../samtools-1.2+ion2/samtools" DESTINATION bin) +install(PROGRAMS "${PROJECT_BINARY_DIR}/../htslib-1.2.1+ion2/tabix" DESTINATION bin) +install(PROGRAMS "${PROJECT_BINARY_DIR}/../htslib-1.2.1+ion2/bgzip" DESTINATION bin) +install(PROGRAMS "${PROJECT_BINARY_DIR}/../samtools-1.2+ion4/samtools" DESTINATION bin) add_test("trimfastq.pl" "perl" "-cw" "${PROJECT_SOURCE_DIR}/trimfastq.pl") install(PROGRAMS "${PROJECT_SOURCE_DIR}/trimfastq.pl" DESTINATION bin) diff --git a/Analysis/DataViewer/AlignmentSpatial.cpp b/Analysis/DataViewer/AlignmentSpatial.cpp index 2f2ee35a..3474e305 100644 --- a/Analysis/DataViewer/AlignmentSpatial.cpp +++ b/Analysis/DataViewer/AlignmentSpatial.cpp @@ -257,6 +257,7 @@ float AlignmentSpatial::Get_Data(int frame, int y, int x) void AlignmentSpatial::CustomTracePlotAdder(double &xmin, double &xmax, double &ymin, double &ymax) { static QCPItemText *seqText[MAX_NUM_TRACES]={NULL}; + static QCPItemText *seqText2[MAX_NUM_TRACES]={NULL}; if(ymin > -0.5) ymin=-0.5; if(ymax < 5) @@ -267,7 +268,7 @@ void AlignmentSpatial::CustomTracePlotAdder(double &xmin, double &xmax, double & for(int trc=0;trcsetFont(myfont); seqText[trc]->setPositionAlignment(Qt::AlignLeft|Qt::AlignVCenter); } + if(seqText2[trc] == NULL){ + //QPen qp; + + uint xcolorIdx= trc*ColormapSize/MAX_NUM_TRACES; + uint xcolor=colormap[xcolorIdx % ColormapSize]; + + //qp.setColor(QColor(qRed(xcolor),qGreen(xcolor),qBlue(xcolor))); + QFont myfont("QFont::Courier", 7); + myfont.setStyleHint(QFont::TypeWriter); + + seqText2[trc] = new QCPItemText(_mTracePlot); + _mTracePlot->addItem(seqText2[trc]); + seqText2[trc]->setColor(QColor(qRed(xcolor),qGreen(xcolor),qBlue(xcolor))); + seqText2[trc]->setFont(myfont); + seqText2[trc]->setPositionAlignment(Qt::AlignLeft|Qt::AlignVCenter); + } seqText[trc]->position->setCoords(x_coord, y_coord); + seqText2[trc]->position->setCoords(x_coord, y_coord+30); + //printf("%s: setting text to %s",__FUNCTION__,SequenceAlignedBasesOut[idx]); char localStr[250]; - sprintf(localStr,"%s%s:%.200s",(showQueryBases?"QB":"AB"),(SequenceAlignedBasesOut[idx]?"(A)":""),seq); - + sprintf(localStr,"QB:%d:%.200s",strlen(SequenceQueryBasesOut[idx]),SequenceQueryBasesOut[idx]); seqText[trc]->setText(localStr); + sprintf(localStr,"AB:%d:%.200s",strlen(SequenceAlignedBasesOut[idx]),SequenceAlignedBasesOut[idx]); + seqText2[trc]->setText(localStr); + }else{ if(seqText[trc]) seqText[trc]->setText(""); + if(seqText2[trc]) + seqText2[trc]->setText(""); } } } diff --git a/Analysis/DataViewer/DataViewer.pro b/Analysis/DataViewer/DataViewer.pro index d5af7504..ef78a749 100644 --- a/Analysis/DataViewer/DataViewer.pro +++ b/Analysis/DataViewer/DataViewer.pro @@ -1,7 +1,7 @@ QT += widgets core gui printsupport CONFIG += c++11 -INCLUDEPATH += /usr/include/hdf5/serial/ ../ ../file-io/ ../Util/ ../Mask/ ../AnalysisOrg ../TsInputUtil/ ../Wells/ ../Image/ ../../build/bamtools-2.4.0.20150702+git15eadb925f-install/include/bamtools/ ../VariantCaller/Bookkeeping/ ../../external/jsoncpp-src-amalgated0.6.0-rc1/ ../../build/armadillo-6.100.0+ion0/include/ +INCLUDEPATH += /usr/include/hdf5/serial/ ../ ../file-io/ ../Util/ ../Mask/ ../AnalysisOrg ../TsInputUtil/ ../Wells/ ../Image/ ../BaseCaller/ ../../build/bamtools-2.4.0.20150702+git15eadb925f-install/include/bamtools/ ../VariantCaller/Bookkeeping/ ../../external/jsoncpp-src-amalgated0.6.0-rc1/ ../../build/armadillo-6.100.0+ion1/include/ # for 18.04 INCLUDEPATH += /usr/include/bamtools/ @@ -66,9 +66,10 @@ SOURCES = main.cpp \ GainTab.cpp \ AlignmentSpatial.cpp \ modeltab.cpp \ - ../BaseCaller/WellsNormalization.cpp \ + ../Wells/WellsNormalization.cpp \ ../Mask/Mask.cpp \ ../BaseCaller/BaseCallerParameters.cpp \ + ../BaseCaller/ReadClassMap.cpp \ # ../BaseCaller/OrderedDatasetWriter.cpp \ # ../Calibration/FlowAlignment.cpp \ # ../BaseCaller/PhaseEstimator.cpp \ diff --git a/Analysis/DataViewer/RawSpatial.cpp b/Analysis/DataViewer/RawSpatial.cpp index a20b3a4e..85fb009c 100644 --- a/Analysis/DataViewer/RawSpatial.cpp +++ b/Analysis/DataViewer/RawSpatial.cpp @@ -46,6 +46,10 @@ void RawSpatial::SetOption(QString txt, int state) display_blocks = state; else if(txt == "Histogram") display_histogram = state; + else if(txt == "AverageSub") + AverageSubState = state; + else if(txt == "BitsNeeded") + display_bitsNeeded = state; render(); } @@ -165,7 +169,8 @@ void RawSpatial::doConvert(int &loading) (AdvcApplied && !AdvcState) || (stdApplied && !stdState) || (noPCAApplied != noPCAState) || - (lastcurDisplayFlow != curDisplayFlow)){ + (lastcurDisplayFlow != curDisplayFlow) || + (AverageSubApplied != AverageSubState)){ // re-load the image.0...+1 last_fname.clear(); } @@ -242,6 +247,7 @@ void RawSpatial::doConvert(int &loading) ColFlApplied=0; AdvcApplied=0; stdApplied=0; + AverageSubApplied=0; if(endX==0){ startX=0; startY=0; @@ -319,12 +325,42 @@ void RawSpatial::doConvert(int &loading) TakeStdDev(); stdApplied=1; } + if(!AverageSubApplied && AverageSubState){ + // subtract the average signa + SubAverage(); + AverageSubApplied=1; + } + CalculateBitsNeededData(); fflush(stdout); UpdateTraceData(); } } +void RawSpatial::CalculateBitsNeededData() +{ + int frameStride=rows*cols; + + memset(bitsNeededData,0,sizeof(bitsNeededData)); + + for(int frm=1;frm=0;bit--){ + if((1< x(0); + QVector y(0); + for(int bin=0;bingraph(0)->setData(x, y); + } + for(int trc=1;trcgraph(trc)->setName(name); + _mTracePlotSet[trc]=0; + QVector x(0); + QVector y(0); + _mTracePlot->graph(trc)->setData(x, y); + } + } + float ymax=0; + float ymin=1000; + float xmax = maxVal; + float xmin = minVal; + + for(int bin=0;bin ymax) + ymax = hist[bin]; + if(hist[bin] < ymin) + ymin = hist[bin]; + } + + qDebug() << __PRETTY_FUNCTION__ << ": xmin=" << xmin << " xmax=" << xmax << " ymin=" << ymin << " ymax=" << ymax; + _mTraceRange=ymax-ymin; + _mTracePlot->xAxis->setRange(xmin, xmax); + _mTracePlot->yAxis->setRange(ymin, ymax); + _mTracePlot->yAxis->setScaleType(useLog?QCPAxis::stLogarithmic:QCPAxis::stLinear); + + _mTracePlot->replot(); +} void SpatialPlot::UpdateTracePlot() { // plot the data in traces qDebug() << __PRETTY_FUNCTION__ << ": hist=" << display_histogram; - if(display_histogram){ - // just use trace 0 for the histogram - { - QVector x(0); - QVector y(0); - for(int bin=0;bingraph(0)->setData(x, y); - } - for(int trc=1;trcgraph(trc)->setName(name); - _mTracePlotSet[trc]=0; - QVector x(0); - QVector y(0); - _mTracePlot->graph(trc)->setData(x, y); - } - } - float ymax=0; - float ymin=1000; - float xmax = maxPixVal; - float xmin = minPixVal; - - for(int bin=0;bin ymax) - ymax = histData[bin]; - if(histData[bin] < ymin) - ymin = histData[bin]; - } + if(display_bitsNeeded){ + DisplayHistogram(bitsNeededData,sizeof(bitsNeededData)/sizeof(bitsNeededData[0]),0,16,0); - qDebug() << __PRETTY_FUNCTION__ << ": xmin=" << xmin << " xmax=" << xmax << " ymin=" << ymin << " ymax=" << ymax; - _mTraceRange=ymax-ymin; - _mTracePlot->xAxis->setRange(xmin, xmax); - _mTracePlot->yAxis->setRange(ymin, ymax); - _mTracePlot->yAxis->setScaleType(QCPAxis::stLogarithmic); - _mTracePlot->replot(); + }else if(display_histogram){ + DisplayHistogram(histData,sizeof(histData)/sizeof(histData[0]),minPixVal,maxPixVal,1); }else if (traces_len) { diff --git a/Analysis/DataViewer/SpatialPlot.h b/Analysis/DataViewer/SpatialPlot.h index 9f735991..e3215134 100644 --- a/Analysis/DataViewer/SpatialPlot.h +++ b/Analysis/DataViewer/SpatialPlot.h @@ -177,8 +177,19 @@ class SpatialPlot : public QWidget int histMax=0; #define NUM_HIST_BINS 256 int histData[NUM_HIST_BINS]={}; + + int bitsNeededData[16]={}; + int bitsNeededMax=0; + int bitsNeededMin=0; + int display_histogram=0; + int AverageSubState=0; + int lastAverageSub=0; + int AverageSubApplied=0; + + int display_bitsNeeded=0; + protected slots: virtual void updatePixmap(const QImage &image); void zoom(double zoomFactor, double XWeight=0.5, double YWeight=0.5); @@ -189,7 +200,7 @@ protected slots: void axisDoubleClick_traces(QCPAxis *axis, QCPAxis::SelectablePart part, QMouseEvent *event); private: - + void DisplayHistogram(int *hist, int len, int minVal, int maxVal, int useLog); void mousePressEvent(QMouseEvent *); void mouseReleaseEvent(QMouseEvent *); void scroll(int deltaX, int deltaY); diff --git a/Analysis/DataViewer/WellsSpatial.cpp b/Analysis/DataViewer/WellsSpatial.cpp index e4d508e2..93ccc714 100644 --- a/Analysis/DataViewer/WellsSpatial.cpp +++ b/Analysis/DataViewer/WellsSpatial.cpp @@ -1,8 +1,8 @@ /* Copyright (C) 2016 Ion Torrent Systems, Inc. All Rights Reserved */ #include "WellsSpatial.h" #include "RawWells.h" -#include "../BaseCaller/WellsNormalization.h" -#include "../BaseCaller/BaseCallerParameters.h" +#include "WellsNormalization.h" +#include "BaseCallerParameters.h" #include #include @@ -222,7 +222,13 @@ void WellsRdrThread::run() WellsNormalization wells_norm(&bc.flow_order, "default"); - wells_norm.SetWells(&wells, &mMask); + ReadClassMap read_class_map; + std::vector maskNames; + maskNames.push_back(mask_fn); + read_class_map.LoadMaskFiles(maskNames, true); + + + wells_norm.SetWells(&wells, &read_class_map,0); wells.ReadWells(); wells_norm.CorrectSignalBias(bc.keys); wells_norm.DoKeyNormalization(bc.keys); diff --git a/Analysis/Image/Image.cpp b/Analysis/Image/Image.cpp index bf04badc..56dc8cf6 100644 --- a/Analysis/Image/Image.cpp +++ b/Analysis/Image/Image.cpp @@ -320,28 +320,35 @@ double TinyTimer() return ( curT ); } +char FileCacherDummy=0; // to keep the access from being optimized away void Image::JustCacheOneImage(const char *name) { - int totalLen = 0; double startT = TinyTimer(); - char buf[1024 * 1024]; - int len; - - // just read the file in... It will be stored in cache - int fd = open(name, O_RDONLY); - if (fd >= 0) - { - while ((len = read(fd, &buf[0], sizeof(buf))) > 0) - totalLen += len; - close(fd); - } - else - { - printf("failed to open %s\n", name); - } - - CacheAccessTime = TinyTimer()-startT; -// fprintf ( stdout, "File %s cache access = %0.2lf sec. with %d bytes\n", name,stopT - startT,totalLen ); + struct stat statbuf; + stat(name,&statbuf); + int fd = open(name,O_RDONLY,0); + char cntr=0; + if(fd >= 0){ + char *dst; + if ((dst = (char *)mmap (0, statbuf.st_size, PROT_READ, + MAP_SHARED, fd, 0)) == (caddr_t) -1) + assert ("mmap error for output"); + + __off_t addr=0; + while(addr < statbuf.st_size){ + cntr+=dst[addr]; + addr += 4096; + } + FileCacherDummy=cntr; + munmap((void *)dst,statbuf.st_size); + //printf("Done caching %s\n",fname); + close(fd); + }else{ + printf("failed to open %s\n", name); + } + + CacheAccessTime = TinyTimer()-startT; +// fprintf ( stdout, "File %s cache access = %0.2lf sec. with %d bytes\n", name,stopT - startT,statbuf.st_size ); // fflush ( stdout ); } diff --git a/Analysis/Image/Vecs.h b/Analysis/Image/Vecs.h index f9198c4e..675765f7 100644 --- a/Analysis/Image/Vecs.h +++ b/Analysis/Image/Vecs.h @@ -83,6 +83,7 @@ typedef union{ typedef union{ v8i V; + v4i v4[2]; int A[VEC8_SIZE]; }v8i_u; typedef union{ @@ -94,6 +95,7 @@ typedef union{ v8f V; v8f V8[1]; float A[VEC8_SIZE]; + v4f v4[2]; }v8f_u; typedef union{ v8su V; diff --git a/Analysis/MapLab/CMakeLists.txt b/Analysis/MapLab/CMakeLists.txt index 2813662d..68724da5 100644 --- a/Analysis/MapLab/CMakeLists.txt +++ b/Analysis/MapLab/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (MapLab) @@ -17,6 +17,7 @@ add_subdirectory (context_align) add_subdirectory (tmap_samtools_lib) add_subdirectory (tmap_lib) add_subdirectory (tmap_lib_test) +add_subdirectory (tmap_lib_unit_tests) add_subdirectory (cigar_man_lib) add_subdirectory (cigar_man_lib_test) diff --git a/Analysis/MapLab/cigar_man_lib/CMakeLists.txt b/Analysis/MapLab/cigar_man_lib/CMakeLists.txt index ce03d180..bd538c32 100644 --- a/Analysis/MapLab/cigar_man_lib/CMakeLists.txt +++ b/Analysis/MapLab/cigar_man_lib/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (cigar_man_lib) diff --git a/Analysis/MapLab/cigar_man_lib_test/CMakeLists.txt b/Analysis/MapLab/cigar_man_lib_test/CMakeLists.txt index 57b5befc..83879739 100644 --- a/Analysis/MapLab/cigar_man_lib_test/CMakeLists.txt +++ b/Analysis/MapLab/cigar_man_lib_test/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2020 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (cigar_man_lib_test) diff --git a/Analysis/MapLab/cigar_man_lib_test/test_align_util.h b/Analysis/MapLab/cigar_man_lib_test/test_align_util.h index 5186235e..a3e34188 100644 --- a/Analysis/MapLab/cigar_man_lib_test/test_align_util.h +++ b/Analysis/MapLab/cigar_man_lib_test/test_align_util.h @@ -4,12 +4,6 @@ #include #include "test_alignment_generator.h" -// Below is a template for a derivative from Test -// To add a case, -// - copy class below and substitute name/constructor name/ heading with proper values -// - instantiate an instance of this class wiin CommonLibTest object -// - register the instance in the init method of the CommonLibTest class -// - fill in "process" and add "init", "report" and "cleanup" if needed class TestValidateAlignment : public Test { diff --git a/Analysis/MapLab/context_align/CMakeLists.txt b/Analysis/MapLab/context_align/CMakeLists.txt index 97140290..055cea49 100644 --- a/Analysis/MapLab/context_align/CMakeLists.txt +++ b/Analysis/MapLab/context_align/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (context_align) diff --git a/Analysis/MapLab/min_common_lib/CMakeLists.txt b/Analysis/MapLab/min_common_lib/CMakeLists.txt index 4fb8dba3..267384d3 100644 --- a/Analysis/MapLab/min_common_lib/CMakeLists.txt +++ b/Analysis/MapLab/min_common_lib/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (min_common_lib) diff --git a/Analysis/MapLab/min_common_lib_test/CMakeLists.txt b/Analysis/MapLab/min_common_lib_test/CMakeLists.txt index 390dec28..bf4b08a2 100644 --- a/Analysis/MapLab/min_common_lib_test/CMakeLists.txt +++ b/Analysis/MapLab/min_common_lib_test/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (min_common_lib_test) diff --git a/Analysis/MapLab/seqdata_lib/CMakeLists.txt b/Analysis/MapLab/seqdata_lib/CMakeLists.txt index 7bc68e88..3606b081 100644 --- a/Analysis/MapLab/seqdata_lib/CMakeLists.txt +++ b/Analysis/MapLab/seqdata_lib/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (seqdata_lib) diff --git a/Analysis/MapLab/seqdata_lib_test/CMakeLists.txt b/Analysis/MapLab/seqdata_lib_test/CMakeLists.txt index db7aa5a4..f6a2c61c 100644 --- a/Analysis/MapLab/seqdata_lib_test/CMakeLists.txt +++ b/Analysis/MapLab/seqdata_lib_test/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (seqdata_lib_test) @@ -33,4 +33,4 @@ include_directories (../min_common_lib ../seqdata_lib ${ION_STATGEN_INCLUDES} ) find_package(Threads REQUIRED) -target_link_libraries ( seqdata_lib_test min_common seqdata ${ION_STATGEN_LIBS} ${CMAKE_THREAD_LIBS_INIT} rt ) \ No newline at end of file +target_link_libraries ( seqdata_lib_test min_common seqdata ${ION_STATGEN_LIBS} ${CMAKE_THREAD_LIBS_INIT} rt ) diff --git a/Analysis/MapLab/tmap_lib/CMakeLists.txt b/Analysis/MapLab/tmap_lib/CMakeLists.txt index 7fe85dbc..9c3739e2 100644 --- a/Analysis/MapLab/tmap_lib/CMakeLists.txt +++ b/Analysis/MapLab/tmap_lib/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (C) 2015 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (tmap_lib) diff --git a/Analysis/MapLab/tmap_lib_test/CMakeLists.txt b/Analysis/MapLab/tmap_lib_test/CMakeLists.txt index f51aa78e..72e1f030 100644 --- a/Analysis/MapLab/tmap_lib_test/CMakeLists.txt +++ b/Analysis/MapLab/tmap_lib_test/CMakeLists.txt @@ -1,11 +1,12 @@ # Copyright (C) 2020 Thermo Fisher Scientific. All Rights Reserved. -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (tmap_lib_test) include (../tmap_lib/tmapCommonBuild.txt) -set (PROJECT_DESCRIPTION "Test suite for tmap_lib") +set (PROJECT_DESCRIPTION "Tmap executable built using tmap_lib") + set (SOURCES ${TMAP_SRC_DIR}/tmap_main.c @@ -21,9 +22,10 @@ configure_file ( add_executable (tmap_lib_test ${SOURCES}) set_target_properties(tmap_lib_test PROPERTIES COMPILE_FLAGS ${TMAP_COMPILE_FLAGS}) +set_target_properties(tmap_lib_test PROPERTIES LINKER_LANGUAGE CXX) find_package(Threads REQUIRED) # TODO: need to check if CMAKE_USE_PTHREADS_INIT is true - pthreads is the only threading mechanism supported -target_link_libraries (tmap_lib_test tmapl tmap_samtools m z pthread bz2 rt) +target_link_libraries (tmap_lib_test tmapl tmap_samtools m z pthread bz2) diff --git a/Analysis/MapLab/tmap_lib_unit_tests/CMakeLists.txt b/Analysis/MapLab/tmap_lib_unit_tests/CMakeLists.txt new file mode 100644 index 00000000..78e2decb --- /dev/null +++ b/Analysis/MapLab/tmap_lib_unit_tests/CMakeLists.txt @@ -0,0 +1,27 @@ +# Copyright (C) 2020 Thermo Fisher Scientific. All Rights Reserved. +cmake_minimum_required (VERSION 2.8.12) + +project (tmap_lib_test) + +include (../tmap_lib/tmapCommonBuild.txt) + +set (PROJECT_DESCRIPTION "Test suite for tmap_lib") + +include_directories ( ../min_common_lib ) +include_directories ( BEFORE ${PROJECT_BINARY_DIR} ) + +set (SOURCES + tmap_lib_unit_tests_main.cpp + test_tmap_binary_search.cpp + ) + +add_executable (tmap_lib_unit_tests ${SOURCES}) +set_target_properties(tmap_lib_unit_tests PROPERTIES COMPILE_FLAGS ${TMAP_COMPILE_FLAGS}) +set_target_properties(tmap_lib_unit_tests PROPERTIES LINKER_LANGUAGE CXX) + +find_package(Threads REQUIRED) + +# TODO: need to check if CMAKE_USE_PTHREADS_INIT is true - pthreads is the only threading mechanism supported + +target_link_libraries (tmap_lib_unit_tests min_common tmapl tmap_samtools m z pthread bz2) + diff --git a/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.cpp b/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.cpp new file mode 100644 index 00000000..4563c87b --- /dev/null +++ b/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.cpp @@ -0,0 +1,59 @@ +#include "test_tmap_binary_search.h" +#include +#include +#include + + +TestTmapBinarySearch::TestTmapBinarySearch () +: +Test ("TmapBinarySearch") +{ +} + +int lt_char (const void* k, const void* e) +{ + return (*(char *) k) < (*(char *) e); +} + + +bool TestTmapBinarySearch::process () +{ + unsigned char test_data [] = "ACEFGIKLMPSTXZ"; + unsigned char buf [sizeof test_data]; + size_t test_data_size = sizeof (test_data)/sizeof (*test_data) - 1; // for char array only, exclude terminating zero + + TEST_ASSERT (test_data [test_data_size - 1] == 'Z'); + TEST_ASSERT (test_data [0] > 2); + TEST_ASSERT (test_data [test_data_size - 1] < (unsigned char) 252); + + size_t tot_tests = 0; + for (size_t upper_bound = 0; upper_bound <= test_data_size; ++upper_bound) + { + for (unsigned char key = test_data [0] - 2; key != test_data [test_data_size -1] + 2; ++key) + { + const unsigned char* expected_location = test_data; + while ( + expected_location != test_data + upper_bound + && lt_char (expected_location, &key) + ) + ++expected_location; + + unsigned const char* computed_location = (const unsigned char*) tmap_binary_search (&key, test_data, upper_bound, sizeof (*test_data), lt_char); + + int expected_off = expected_location - test_data; + int computed_off = computed_location - test_data; + + memcpy (buf, test_data, upper_bound * sizeof (*test_data)); + buf [upper_bound] = 0; + TEST_ASSERTX (computed_location == expected_location, "Data is %s (%d el), key is '%c' (%d), expected: '%c' (%d) at position %d, found '%c' (%d) at position %d", + buf, upper_bound, + isprint (key)?key:'*', int (key), + isprint (*expected_location)?*expected_location:'*', int (*expected_location), expected_off, + isprint (*computed_location)?*computed_location:'*', int (*computed_location), computed_off); + ++ tot_tests; + } + } + o_ << name () << ":" << tot_tests << " invocations checked" << std::endl; + + return 1; +} diff --git a/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.h b/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.h new file mode 100644 index 00000000..edf1120a --- /dev/null +++ b/Analysis/MapLab/tmap_lib_unit_tests/test_tmap_binary_search.h @@ -0,0 +1,13 @@ +#ifndef __TEST_TMAP_BINARY_SEARCH_H__ +#define __TEST_TMAP_BINARY_SEARCH_H__ + +#include + +class TestTmapBinarySearch : public Test +{ +public: + TestTmapBinarySearch (); + bool process (); +}; + +#endif // __TEST_TMAP_BINARY_SEARCH_H__ diff --git a/Analysis/MapLab/tmap_lib_unit_tests/tmap_lib_unit_tests_main.cpp b/Analysis/MapLab/tmap_lib_unit_tests/tmap_lib_unit_tests_main.cpp new file mode 100644 index 00000000..fce61b73 --- /dev/null +++ b/Analysis/MapLab/tmap_lib_unit_tests/tmap_lib_unit_tests_main.cpp @@ -0,0 +1,39 @@ +/* Copyright (C) 2015 Ion Torrent Systems, Inc. All Rights Reserved. */ + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include + +#include "test_tmap_binary_search.h" + +class TmapLibUnitTests : public TestSuite +{ + TestTmapBinarySearch testTmapBinarySearch; +public: + TmapLibUnitTests (int argc, char* argv [], char* envp [] = NULL) + : + TestSuite (argc, argv, envp) + { + } + void init () + { + reg (testTmapBinarySearch); + } +}; + +int main (int argc, char** argv) +{ + std::cerr.imbue (deccomma_locale); + std::cout.imbue (deccomma_locale); + ers.imbue (deccomma_locale); + + TmapLibUnitTests test (argc, argv); + bool retcode = !test.run (); + return retcode; +} + + + diff --git a/Analysis/MapLab/tmap_samtools_lib/CMakeLists.txt b/Analysis/MapLab/tmap_samtools_lib/CMakeLists.txt index d6430f49..eea0a7b1 100644 --- a/Analysis/MapLab/tmap_samtools_lib/CMakeLists.txt +++ b/Analysis/MapLab/tmap_samtools_lib/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 2.6) +cmake_minimum_required (VERSION 2.8.12) project (tmap_samtools) diff --git a/Analysis/SamUtils/tempa.fa b/Analysis/SamUtils/tempa.fa new file mode 100644 index 00000000..3b8c86af --- /dev/null +++ b/Analysis/SamUtils/tempa.fa @@ -0,0 +1,2 @@ +>chr3:41266064-41266115 +GCTGTTAGTCACTGGCAGCAACAGTCTTACCTGGACTCTGGAATCCATTCTG diff --git a/Analysis/Separator/DifferentialSeparator.cpp b/Analysis/Separator/DifferentialSeparator.cpp index 77aec87a..b48120e6 100644 --- a/Analysis/Separator/DifferentialSeparator.cpp +++ b/Analysis/Separator/DifferentialSeparator.cpp @@ -1541,26 +1541,88 @@ void DifferentialSeparator::PrintWell(TraceStore &store, int well, int flow) { PrintVec(vec); } +typedef struct{ + int thread_id; + int bin_start; + int bin_end; + + TraceStoreCol *store; + int rowStep; + int colStep; + char *filter; + int filter_len; + float *mad; + GridMesh *mesh; + + DifferentialSeparator *obj; +}WellDeviationContext_t; + + +void DifferentialSeparator::WellDeviationThread(TraceStoreCol *store, + GridMesh *mesh, int rowStep, int colStep, char *filter, + int filter_len, float *mad, int bin_start, int bin_end) +{ + vector mean(filter_len); + vector m2(filter_len); + vector summary(filter_len); + vector normalize(filter_len * store->GetNumFrames()); + int rowStart = -1, rowEnd = -1, colStart = -1, colEnd = -1; + for (int binIx = bin_start; binIx < bin_end; binIx++) { + mesh->GetBinCoords (binIx, rowStart, rowEnd, colStart, colEnd); + WellDeviationRegion(*store, rowStart, rowEnd, colStart, colEnd, + 0, store->GetNumFrames(), 0, store->GetNumFlows(), + &mean[0], &m2[0], + &normalize[0], + &summary[0], filter, mad); + } + +} + +void *WellDeviationThreadEntry(void *arg) +{ + WellDeviationContext_t *args=(WellDeviationContext_t *)arg; + args->obj->WellDeviationThread(args->store,args->mesh, + args->rowStep,args->colStep,args->filter, + args->filter_len,args->mad, + args->bin_start,args->bin_end); + return NULL; +} + void DifferentialSeparator::WellDeviation(TraceStoreCol &store, int rowStep, int colStep, vector &filter, - vector &mad) { + vector &mad, + int ncores ) { GridMesh mesh; mesh.Init(mMask.H(), mMask.W(), rowStep, colStep); - vector mean(filter.size()); - vector m2(filter.size()); - vector summary(filter.size()); - vector normalize(filter.size() * store.GetNumFrames()); - int rowStart = -1, rowEnd = -1, colStart = -1, colEnd = -1; - for (size_t binIx = 0; binIx < mesh.GetNumBin(); binIx++) { - mesh.GetBinCoords (binIx, rowStart, rowEnd, colStart, colEnd); - WellDeviationRegion(store, rowStart, rowEnd, colStart, colEnd, - 0, store.GetNumFrames(), 0, store.GetNumFlows(), - &mean[0], &m2[0], - &normalize[0], - &summary[0], filter, mad); - } + int numBin=mesh.GetNumBin(); + + WellDeviationContext_t pac[ncores]; + + pthread_t worker_id[ncores]; + int lastEnd=0; + for (int worker = 0; worker < ncores; worker++) { + WellDeviationContext_t *pacp=&pac[worker]; + pacp->thread_id=worker; + pacp->bin_start=lastEnd; + pacp->bin_end=lastEnd=numBin*(worker+1)/ncores; + pacp->colStep=colStep; + pacp->rowStep=rowStep; + pacp->filter=&filter[0]; + pacp->filter_len=filter.size(); + pacp->mad=&mad[0]; + pacp->mesh=&mesh; + pacp->obj=this; + pacp->store=&store; + if (pthread_create(&worker_id[worker], NULL, WellDeviationThreadEntry, pacp)) { + cerr << "ERROR: problem starting thread" << endl; + exit (EXIT_FAILURE); + } + } + + for (int worker = 0; worker < ncores; worker++) + pthread_join(worker_id[worker], NULL); } @@ -1572,8 +1634,8 @@ void DifferentialSeparator::WellDeviationRegion(TraceStoreCol &store, float *mean, float *m2, float *normalize, float *summary, - vector &filters, - vector &mad) { + char *filters, + float *mad) { int loc_num_frames = frame_end - frame_start; // calculate the average trace float region_sum[loc_num_frames]; @@ -1589,20 +1651,18 @@ void DifferentialSeparator::WellDeviationRegion(TraceStoreCol &store, for (int flow_ix = flow_start; flow_ix < flow_end; flow_ix++) { for (int frame_ix = frame_start; frame_ix < frame_end; frame_ix++) { size_t offset = row_ix * store_num_cols + col_start; - char *__restrict filter_start = &filters[0] + offset; - int16_t *__restrict store_start = &store.mData[0] + (frame_ix * store.mFlowFrameStride) + (flow_ix * store_num_wells) + offset; - int16_t *__restrict store_end = store_start + loc_num_cols; + char *__restrict filterp = &filters[0] + offset; + int16_t *__restrict storep = &store.mData[0] + (frame_ix * store.mFlowFrameStride) + (flow_ix * store_num_wells) + offset; // assert(store_end - &store.mData[0] <= store.mData.size()); - // assert(filter_start - &filters[0] <= filters.size()); - float &frame_sum = region_sum[frame_ix-frame_start]; - while (store_start != store_end) { - if ((*filter_start) == 0) { - frame_sum += *store_start; + // assert(filterp - &filters[0] <= filters.size()); + float frame_sum = region_sum[frame_ix-frame_start]; + for(size_t trc=0;trc &filter, - vector &refWells) { + vector &refWells, + int ncores) { int count = 0; if (useKeySignal == 1) { @@ -2070,7 +2123,7 @@ void DifferentialSeparator::RankReference(TraceStoreCol &store, std::fill(mEmptyMetrics[0].begin(), mEmptyMetrics[0].end(), 0.0f); std::fill(mEmptyMetrics[1].begin(), mEmptyMetrics[1].end(), 0.0f); store.WellProj(store, mKeys, filter, mEmptyMetrics[0]); - WellDeviation(store, rowStep, colStep, filter, mEmptyMetrics[1]); + WellDeviation(store, rowStep, colStep, filter, mEmptyMetrics[1],ncores); for (size_t well_ix = 0; well_ix < mWells.size(); well_ix++) { mWells[well_ix].bfMetric2 = mEmptyMetrics[0][well_ix]; mWells[well_ix].bfMetric3 = mEmptyMetrics[1][well_ix]; @@ -2654,6 +2707,8 @@ void DifferentialSeparator::FitKeys(PJobQueue &jQueue, DifSepOpt &opts, GridMesh std::min (128,mask.W()), std::min (128,mask.H()), keys); AvgKeyReporter avgReport(keys, opts.outData, opts.flowOrder, opts.analysisDir, usable_flows, traceStore.GetNumFrames()); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: FitKeys before JobQ."); + std::vector evalJobs(emptyEstimates.GetNumBin()); for (size_t binIx = 0; binIx < emptyEstimates.GetNumBin(); binIx++) { int rowStart = -1, rowEnd = -1, colStart = -1, colEnd = -1; @@ -2665,29 +2720,112 @@ void DifferentialSeparator::FitKeys(PJobQueue &jQueue, DifSepOpt &opts, GridMesh jQueue.AddJob(evalJobs[binIx]); } jQueue.WaitUntilDone(); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: FitKeys after JobQ."); avgReport.Finish(); keySumReport.Finish(); } +typedef struct { + int thread_id; + int bin_start; + int bin_end; + + DifSepOpt *opts; + TraceStoreCol *traceStore; + GridMesh *emptyEstimates; + char *filteredWells; + float *ftime; + int *allZeroFlows; + int allZeroFlows_size; + float *taub_est; + int *converged; + int *no_wells; + + DifferentialSeparator *obj; +}FitTauEContext_t; + +void *FitTauEThreadEntry(void *arg) +{ + FitTauEContext_t *args=(FitTauEContext_t *)arg; + + args->obj->FitTauEThread( + args->bin_start, args->bin_end, + *args->opts, *args->traceStore, + *args->emptyEstimates, + args->filteredWells, args->ftime, args->allZeroFlows, + args->allZeroFlows_size, args->taub_est, + *args->converged, *args->no_wells); + + return NULL; +} + void DifferentialSeparator::FitTauE(DifSepOpt &opts, TraceStoreCol &traceStore, GridMesh &emptyEstimates, std::vector &filteredWells, std::vector &ftime, std::vector &allZeroFlows, float *taub_est) { - mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: Before Zeromers."); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: Before FitTauE."); emptyEstimates.Init (mMask.H(), mMask.W(), opts.tauEEstimateStepY, opts.tauEEstimateStepX); - ZeromerMatDiff z_diff; - ZeromerMatDiff z_diff_big; int converged = 0; int no_wells = 0; - int zero_flows[1] = {0}; + int ncores=opts.nCores; + if (taub_est != NULL) { memset(taub_est, 0, sizeof(float) * filteredWells.size()); } - for (size_t binIx = 0; binIx < emptyEstimates.GetNumBin(); binIx++) { + + int numBin=emptyEstimates.GetNumBin(); + + FitTauEContext_t pac[ncores]; + + pthread_t worker_id[ncores]; + int lastEnd=0; + for (int worker = 0; worker < ncores; worker++) { + FitTauEContext_t *pacp=&pac[worker]; + pacp->thread_id=worker; + pacp->bin_start=lastEnd; + pacp->bin_end=lastEnd=numBin*(worker+1)/ncores; + pacp->allZeroFlows=&allZeroFlows[0]; + pacp->allZeroFlows_size=allZeroFlows.size(); + pacp->emptyEstimates=&emptyEstimates; + pacp->filteredWells=&filteredWells[0]; + pacp->opts=&opts; + pacp->taub_est=taub_est; + pacp->traceStore=&traceStore; + pacp->converged=&converged; + pacp->no_wells=&no_wells; + pacp->ftime=&ftime[0]; + pacp->obj=this; + if (pthread_create(&worker_id[worker], NULL, FitTauEThreadEntry, pacp)) { + cerr << "ERROR: problem starting thread" << endl; + exit (EXIT_FAILURE); + } + } + + for (int worker = 0; worker < ncores; worker++) + pthread_join(worker_id[worker], NULL); + + fprintf(stdout, "FitTauE() - %d %d %d\n", converged, no_wells, (int)emptyEstimates.GetNumBin()); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After well Zeromers."); + +} + +void DifferentialSeparator::FitTauEThread( + int bin_start, int bin_end, + DifSepOpt &opts, TraceStoreCol &traceStore, + GridMesh &emptyEstimates, + char *filteredWells, float *ftime, int *allZeroFlows, + int allZeroFlows_size, float *taub_est, + int &converged, int &no_wells) +{ + ZeromerMatDiff z_diff; + ZeromerMatDiff z_diff_big; + int zero_flows[1] = {0}; + + for (int binIx = bin_start; binIx < bin_end; binIx++) { int rowStart = -1, rowEnd = -1, colStart = -1, colEnd = -1; emptyEstimates.GetBinCoords (binIx, rowStart, rowEnd, colStart, colEnd); z_diff.SetUpMatricesClean(traceStore, &filteredWells[0], &ftime[0], 2, 3, mMask.W(), mMask.W() * mMask.H(), rowStart, rowEnd, colStart, colEnd, - &allZeroFlows[0], allZeroFlows.size(), + &allZeroFlows[0], allZeroFlows_size, 0, traceStore.GetNumFrames()); struct FitTauEParams ¶m = emptyEstimates.GetItem(binIx); if (z_diff.m_num_wells < MIN_SAMPLE_TAUE_STATS) { @@ -2726,6 +2864,7 @@ void DifferentialSeparator::FitTauE(DifSepOpt &opts, TraceStoreCol &traceStore, converged++; } } + if (taub_est != NULL) { z_diff_big.SetUpMatrices(traceStore, &filteredWells[0], &ftime[0], 1, 1, mMask.W(), mMask.W() * mMask.H(), @@ -2753,13 +2892,37 @@ void DifferentialSeparator::FitTauE(DifSepOpt &opts, TraceStoreCol &traceStore, } } } - fprintf(stdout, "FitTauE() - %d %d %d\n", converged, no_wells, (int)emptyEstimates.GetNumBin()); - mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After well Zeromers."); } +typedef struct{ + int thread_id; + int bin_start; + int bin_end; + + DifSepOpt *opts; + Mask *mask; + vector *bfMetric; + float madThreshold; + std::vector *wells; + GridMesh *modelMesh; + std::stringstream *modelOutput; + + DifferentialSeparator *obj; +}RegionalClusteringContext_t; + + +void *RegionalClusteringThreadEntry(void *arg) +{ + RegionalClusteringContext_t *args=(RegionalClusteringContext_t *)arg; + args->obj->RegionalClusteringThread(args->bin_start,args->bin_end, + *args->opts,*args->mask,*args->bfMetric,args->madThreshold, + *args->wells,*args->modelMesh,args->modelOutput); + return NULL; +} void DifferentialSeparator::DoRegionClustering(DifSepOpt &opts, Mask &mask, vector &bfMetric, float madThreshold, std::vector &wells, GridMesh &modelMesh) { int numWells = mask.H() * mask.W(); + int ncores=opts.nCores; ofstream modelOut; if (opts.outputDebug > 1) { string modelFile = opts.outData + ".mix-model.txt"; @@ -2768,10 +2931,10 @@ void DifferentialSeparator::DoRegionClustering(DifSepOpt &opts, Mask &mask, vect } modelMesh.Init (mask.H(), mask.W(), opts.clusterMeshStepY, opts.clusterMeshStepX); - SampleStats bfSnr; +// SampleStats bfSnr; - // double bfMinThreshold = bfQuantiles.GetQuantile (.02); - // cout << "Bf min threshold is: " << bfMinThreshold << " for: " << bfQuantiles.GetMedian() << " +/- " << ( (bfQuantiles.GetQuantile (.75) - bfQuantiles.GetQuantile (.25)) /2) << endl; +// double bfMinThreshold = bfQuantiles.GetQuantile (.02); +// cout << "Bf min threshold is: " << bfMinThreshold << " for: " << bfQuantiles.GetMedian() << " +/- " << ( (bfQuantiles.GetQuantile (.75) - bfQuantiles.GetQuantile (.25)) /2) << endl; // Should we use standard deviation of signal as the beadfind metric // (eg cluster signal vs no signal instead of buffering vs no @@ -2785,7 +2948,49 @@ void DifferentialSeparator::DoRegionClustering(DifSepOpt &opts, Mask &mask, vect } } - for (size_t binIx = 0; binIx < modelMesh.GetNumBin(); binIx++) + int numBin=modelMesh.GetNumBin(); + + RegionalClusteringContext_t pac[ncores]; + std::stringstream modelOutStrStr[numBin]; + pthread_t worker_id[ncores]; + int lastEnd=0; + for (int worker = 0; worker < ncores; worker++) { + RegionalClusteringContext_t *pacp=&pac[worker]; + pacp->thread_id=worker; + pacp->bin_start=lastEnd; + pacp->bin_end=lastEnd=numBin*(worker+1)/ncores; + pacp->bfMetric=&bfMetric; + pacp->madThreshold=madThreshold; + pacp->mask=&mask; + pacp->modelMesh=&modelMesh; + pacp->opts=&opts; + pacp->wells=&wells; + pacp->obj=this; + pacp->modelOutput=&modelOutStrStr[0]; + if (pthread_create(&worker_id[worker], NULL, RegionalClusteringThreadEntry, pacp)) { + cerr << "ERROR: problem starting thread" << endl; + exit (EXIT_FAILURE); + } + } + + for (int worker = 0; worker < ncores; worker++) + pthread_join(worker_id[worker], NULL); + +// cout << "BF SNR: " << bfSnr.GetMean() << " +/- " << (bfSnr.GetSD()) << endl; + if (modelOut.is_open()) { + for (int binIx = 0; binIx < numBin; binIx++){ + modelOut << modelOutStrStr[binIx].str(); + } + + modelOut.close(); + } +} +void DifferentialSeparator::RegionalClusteringThread(int start_bin, int end_bin, + DifSepOpt &opts, Mask &mask, vector &bfMetric, float madThreshold, + std::vector &wells, GridMesh &modelMesh, stringstream *modelOut) +{ + + for (int binIx = start_bin; binIx < end_bin; binIx++) { int rowStart = -1, rowEnd = -1, colStart = -1, colEnd = -1; modelMesh.GetBinCoords (binIx, rowStart, rowEnd, colStart, colEnd); @@ -2818,30 +3023,26 @@ void DifferentialSeparator::DoRegionClustering(DifSepOpt &opts, Mask &mask, vect int minBfGoodWells = max (200, (int) (goodCount * .5)); ClusterRegion (rowStart, rowEnd, colStart, colEnd, madThreshold, opts.minTauESnr, minBfGoodWells, bfMetric, wells, opts.clusterTrim, false, model); - if ( model.count > minBfGoodWells) { - double bf = ( (model.mu2 - model.mu1) / ( (sqrt (model.var2) + sqrt (model.var1)) /2)); - if (isfinite (bf) && bf > 0) { - bfSnr.AddValue (bf); - } - else { - cout << "Region: " << binIx << " has snr of: " << bf << " " << model.mu1 << " " << model.var1 << " " << model.mu2 << " " << model. var2 << endl; - } - } +// if ( model.count > minBfGoodWells) { +// double bf = ( (model.mu2 - model.mu1) / ( (sqrt (model.var2) + sqrt (model.var1)) /2)); +// if (isfinite (bf) && bf > 0) { +// bfSnr.AddValue (bf); +// } +// else { +// cout << "Region: " << binIx << " has snr of: " << bf << " " << model.mu1 << " " << model.var1 << " " << model.mu2 << " " << model. var2 << endl; +// } +// } int binRow, binCol; modelMesh.IndexToXY (binIx, binRow, binCol); if (opts.outputDebug > 1) { - modelOut << binIx << "\t" << binRow << "\t" << binCol << "\t" - << rowStart << "\t" << rowEnd << "\t" << colStart << "\t" << colEnd << "\t" - << model.count << "\t" << model.mix << "\t" - << model.mu1 << "\t" << model.var1 << "\t" - << model.mu2 << "\t" << model.var2 << "\t" - << model.threshold << "\t" << model.refMean << endl; + modelOut[binIx] << binIx << "\t" << binRow << "\t" << binCol << "\t" + << rowStart << "\t" << rowEnd << "\t" << colStart << "\t" << colEnd << "\t" + << model.count << "\t" << model.mix << "\t" + << model.mu1 << "\t" << model.var1 << "\t" + << model.mu2 << "\t" << model.var2 << "\t" + << model.threshold << "\t" << model.refMean << endl; } } - cout << "BF SNR: " << bfSnr.GetMean() << " +/- " << (bfSnr.GetSD()) << endl; - if (modelOut.is_open()) { - modelOut.close(); - } } @@ -3294,6 +3495,7 @@ void DifferentialSeparator::HandleDebug(std::vector &wells, OutputOutliers (opts, traceStore, bg, wells, sdHigh, sdLow, madHigh, bfHigh, bfLow, peakLow); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After OutputOutliers."); // Write out debugging matrix int n_cols = 25; @@ -3342,6 +3544,7 @@ void DifferentialSeparator::HandleDebug(std::vector &wells, wellMatrix.at (i, currentCol++) = mEmptyMetrics.back().at(i); // 24 } } + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After wellMatrix pop."); string h5Summary = "/separator/summary"; vector flows(2); @@ -3351,9 +3554,15 @@ void DifferentialSeparator::HandleDebug(std::vector &wells, h5file.Open(false); if (opts.outputDebug > 3) saver.WriteResults(h5file); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After writeResults."); H5Arma::WriteMatrix (h5file, h5Summary, wellMatrix); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After writeMatrix."); + CalcRegionEmptyStat(h5file, modelMesh, traceStore, h5SummaryRoot, flows, mask); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After CalcRegionEmptyStat."); + h5file.Close(); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After close."); } } @@ -3678,7 +3887,7 @@ void DifferentialSeparator::SetUp(DifSepOpt &opts, std::string &bfFile, arma::Co for (size_t kIx = 0; kIx < mKeys.size(); kIx++) { opts.maxKeyFlowLength = max ( (unsigned int) opts.maxKeyFlowLength, mKeys[kIx].usableKeyFlows); } // Setup our job queue int qSize = (mMask.W() / opts.t0MeshStepX + 1) * (mMask.H() / opts.t0MeshStepY + 1); - if (opts.nCores <= 0) { opts.nCores = numCores(); } + if (opts.nCores <= 0) { opts.nCores = min(28,max(numCores(),6)); } mQueue.Init (opts.nCores, qSize); // Figure out which flows can be used for fitting taue @@ -3757,6 +3966,8 @@ void DifferentialSeparator::ClusterToSelectReference(DifSepOpt &opts, const std: if (mBfMask[i] & MaskReference) {maskRefStats.AddWell(mWells[i]);} if (mBfMask[i] & MaskEmpty) {maskEmptyStats.AddWell(mWells[i]);} } + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After AddWell."); + // CountReference("Filtered wells", mFilteredWells); if (libStats.NumSeen() > 10) { libStats.ReportStats(stdout);} if (tfStats.NumSeen() > 50) { tfStats.ReportStats(stdout);} @@ -3765,6 +3976,8 @@ void DifferentialSeparator::ClusterToSelectReference(DifSepOpt &opts, const std: refStats.ReportStats(stdout); filtStats.ReportStats(stdout); OutputStats(opts, mBfMask); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After OutputStats."); + HandleDebug(mWells, opts, h5SummaryRoot, saver, mMask, traceStore, modelMesh, maskRefStats.m_quantiles[KEY_SD_STAT].GetQuantile(.9), maskRefStats.m_quantiles[KEY_SD_STAT].GetQuantile(.9), @@ -3816,14 +4029,18 @@ int DifferentialSeparator::Run(DifSepOpt opts) { if (opts.isThumbnail) { row_step = col_step = BF_THUMBNAIL_SIZE; } if (opts.filterNoisyCols != "none") { + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: Before FilterNoisyColumns."); FilterNoisyColumns(row_step, col_step, mMask, opts, mFilteredWells); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After FilterNoisyColumns."); } // Pick which wells to use for initial reference for backgound int minWells = ceil(opts.referenceStep*opts.referenceStep * opts.percentReference); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: Before RankReference. " + std::to_string(opts.useSignalReference)); RankReference(traceStore, mBfMetric, opts.referenceStep, opts.referenceStep, opts.useSignalReference, opts.iqrMult, 7, opts.percentReference, mMask, minWells, - mFilteredWells, mRefWells); + mFilteredWells, mRefWells,opts.nCores); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After RankReference."); if (!opts.skipBuffer) { mEmptyMetrics.push_back(mBfMetric); } @@ -3863,7 +4080,9 @@ int DifferentialSeparator::Run(DifSepOpt opts) { ftime, flowsAllZero, NULL); // See which keys are the best match for wells. + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: Before FitKeys."); FitKeys(mQueue, opts, emptyEstimates, traceStore, mKeys, ftime, saver, mMask, mWells); + mTotalTimer.PrintMicroSecondsUpdate(stdout, "Total Timer: After FitKeys."); // Use our dual gaussian mixture clustering to split wells into empty/live ClusterToSelectReference(opts, h5SummaryRoot, saver, traceStore, modelMesh, emptyEstimates); diff --git a/Analysis/Separator/DifferentialSeparator.h b/Analysis/Separator/DifferentialSeparator.h index 272b3988..301ad80c 100644 --- a/Analysis/Separator/DifferentialSeparator.h +++ b/Analysis/Separator/DifferentialSeparator.h @@ -307,6 +307,12 @@ class DifferentialSeparator : public AvgKeyIncorporation /** Do a beadfind/bead classification based on options passed in. */ void FitTauE(DifSepOpt &opts, TraceStoreCol &traceStore, GridMesh &emptyEstimates, std::vector &filteredWells, std::vector &ftime, std::vector &allZeroFlows, float *taub_est); + void FitTauEThread(int bin_start, int bin_end, + DifSepOpt &opts, TraceStoreCol &traceStore, + GridMesh &emptyEstimates, + char *filteredWells, float *ftime, int *allZeroFlows, + int allZeroFlows_size, float *taub_est, + int &converged, int &no_wells); void FitKeys(DifSepOpt &opts, GridMesh &emptyEstimates, TraceStoreCol &traceStore, std::vector &keys, std::vector &ftime, TraceSaver &saver, @@ -319,6 +325,10 @@ class DifferentialSeparator : public AvgKeyIncorporation vector &bfMetric, DifSepOpt &opts, std::vector &traceSd); void DoRegionClustering(DifSepOpt &opts, Mask &mask, vector &bfMetric, float madThreshold, std::vector &wells, GridMesh &modelMesh); + void RegionalClusteringThread(int start_bin, int end_bin, + DifSepOpt &opts, Mask &mask, vector &bfMetric, float madThreshold, + std::vector &wells, GridMesh &modelMesh, stringstream *modelOutput); + void ClusterIndividualWells(DifSepOpt &opts, Mask &bfMask, Mask &mask, TraceStoreCol &traceStore, GridMesh &modelMesh, std::vector &wells, std::vector &confidence, std::vector &clusters); @@ -370,7 +380,17 @@ class DifferentialSeparator : public AvgKeyIncorporation void WellDeviation(TraceStoreCol &store, int rowStep, int colStep, vector &filter, - vector &mad); + vector &mad, + int ncores); + void WellDeviationThread(TraceStoreCol *store, + GridMesh *mesh, + int rowStep, + int colStep, + char *filter, + int filter_len, + float *mad, + int bin_start, + int bin_end); void WellDeviationRegion(TraceStoreCol &store, int row_start, int row_end, @@ -380,8 +400,8 @@ class DifferentialSeparator : public AvgKeyIncorporation float *mean, float *m2, float *normalize, float *summary, - vector &filters, - vector &mad); + char *filters, + float *mad); void RankWellsBySignal(int flow0, int flow1, TraceStore &store, float iqrMult, @@ -446,7 +466,8 @@ class DifferentialSeparator : public AvgKeyIncorporation Mask &mask, int minWells, vector &filter, - vector &refWells); + vector &refWells, + int ncores); static float IQR (SampleQuantiles &s); diff --git a/Analysis/Separator/ZeromerMatDiff.cpp b/Analysis/Separator/ZeromerMatDiff.cpp index c7519446..51e3bc65 100644 --- a/Analysis/Separator/ZeromerMatDiff.cpp +++ b/Analysis/Separator/ZeromerMatDiff.cpp @@ -21,8 +21,8 @@ void ZeromerMatDiff::ShiftReference(int n_frames, size_t n_flow_wells, float shi if (start_frame >= 0 && end_frame < n_frames) { //interpolate... float mult = shift - floor(shift); - shifted.col(frame_ix).array() = (orig.col(end_frame).array() - orig.col(start_frame).array()) * mult; - shifted.col(frame_ix).array() += orig.col(start_frame).array(); + shifted.col(frame_ix).array() = (orig.col(end_frame).array() - orig.col(start_frame).array()) * mult + + orig.col(start_frame).array(); } else { // extrapolate backwards @@ -110,30 +110,29 @@ void ZeromerMatDiff::ZeromerSumSqErrorTrim(const int *zero_flows, size_t n_zero_ double ssq_sum = 0; size_t bad_count = 0; float max_value = 1000.0f; + float max_value_sq = max_value*max_value; for (size_t z_ix = 0; z_ix < n_zero_flows; z_ix++) { size_t flow_ix = zero_flows[z_ix]; for (size_t col_ix = 0; col_ix < n_frames; col_ix++) { float *__restrict signal_start = signal_data + n_wells * flow_ix + n_flow_wells * col_ix; - float *__restrict signal_end = signal_start + n_wells; float *__restrict predict_start = predict_data + n_wells * flow_ix + n_flow_wells * col_ix; const char *__restrict bad_start = bad_wells; - while (signal_start != signal_end) { - double value = *signal_start - *predict_start; //*signal_start * *signal_start; - if (*bad_start == 0 && isfinite(value) && fabs(value) <= max_value) { - ssq_sum += value * value; - } - else if (*bad_start == 0) { - *predict_start = *signal_start + max_value; - ssq_sum += max_value; - bad_count++; + for(size_t trc=0;trc max_value) { - *predict_start = *signal_start + max_value; + else{ + predict_start[trc] = signal_start[trc] + max_value; + if(bad_start[trc] == 0){ + ssq_sum += max_value_sq; + bad_count++; + } } - bad_start++; - signal_start++; - predict_start++; } } } @@ -144,57 +143,42 @@ void ZeromerMatDiff::FitTauB(const int *zero_flows, size_t n_zero_flows, const float *trace_data, const float *ref_data, size_t n_wells, size_t n_flows, size_t n_flow_wells, size_t n_frames, float taue_est, float *__restrict taub) { - Eigen::Map taub_v(taub, n_flow_wells); - Eigen::VectorXf vec_sum_x2(n_wells), vec_sum_xy(n_wells), - vec_previous(n_wells), taub_sum(n_wells); - taub_sum.setZero(); - taub_v.setZero(); + float vec_sum_xx [n_wells] __attribute__ ((aligned (64))); + float vec_sum_xy [n_wells] __attribute__ ((aligned (64))); + float vec_previous [n_wells] __attribute__ ((aligned (64))); + float taub_sum [n_wells] __attribute__ ((aligned (64))); + + memset(taub_sum,0,sizeof(taub_sum)); for (size_t flow_ix = 0; flow_ix < n_zero_flows; flow_ix++) { int z_ix = zero_flows[flow_ix]; - vec_sum_x2.setZero(); - vec_sum_xy.setZero(); - vec_previous.setZero(); + memset(vec_sum_xx,0,sizeof(vec_sum_xx)); + memset(vec_sum_xy,0,sizeof(vec_sum_xy)); + memset(vec_previous,0,sizeof(vec_previous)); for (size_t frame_ix = 0; frame_ix < n_frames; frame_ix++) { size_t offset = frame_ix * n_flow_wells + n_wells * z_ix; - const float * __restrict trace_ptr_start = trace_data + offset; - const float * __restrict trace_ptr_end = trace_ptr_start + n_wells; + const float * __restrict trace_ptr = trace_data + offset; const float * __restrict ref_ptr = ref_data + offset; - float * __restrict previous_ptr = vec_previous.data(); - float * __restrict xx_ptr = vec_sum_x2.data(); - float * __restrict xy_ptr = vec_sum_xy.data(); - while (trace_ptr_start != trace_ptr_end) { - float diff = *ref_ptr - *trace_ptr_start; - float taues = *ref_ptr * taue_est; - float y = *previous_ptr + diff + taues; - *previous_ptr += diff; - float x = *trace_ptr_start; - *xx_ptr += x * x; - *xy_ptr += x * y; - - trace_ptr_start++; - ref_ptr++; - previous_ptr++; - xx_ptr++; - xy_ptr++; + for(size_t trc=0;trc taub_v(taub, n_flow_wells); - Eigen::VectorXf vec_sum_x2(n_wells), vec_sum_xy(n_wells), - vec_previous(n_wells), taub_sum(n_wells); - Eigen::MatrixXf taub_nuc(n_wells, 4); + float vec_sum_xx[n_wells] __attribute__ ((aligned (64))); + float vec_sum_xy[n_wells] __attribute__ ((aligned (64))); + float vec_previous[n_wells] __attribute__ ((aligned (64))); + float taub_sum[n_wells] __attribute__ ((aligned (64))); + float taub_nuc[4][n_wells] __attribute__ ((aligned (64))); int nuc_counts[4] = {0,0,0,0}; - taub_nuc.setZero(); - taub_v.setZero(); - taub_sum.setZero(); + + memset(taub_nuc,0,sizeof(taub_nuc)); + memset(taub_sum,0,sizeof(taub_sum)); for (size_t flow_ix = 0; flow_ix < n_zero_flows; flow_ix++) { int z_ix = zero_flows[flow_ix]; - vec_sum_x2.setZero(); - vec_sum_xy.setZero(); - vec_previous.setZero(); + memset(vec_sum_xx,0,sizeof(vec_sum_xx)); + memset(vec_sum_xy,0,sizeof(vec_sum_xy)); + memset(vec_previous,0,sizeof(vec_previous)); for (size_t frame_ix = 0; frame_ix < n_frames; frame_ix++) { size_t offset = frame_ix * n_flow_wells + n_wells * z_ix; - const float * __restrict trace_ptr_start = trace_data + offset; - const float * __restrict trace_ptr_end = trace_ptr_start + n_wells; - const float * __restrict ref_ptr = ref_data + offset; - float * __restrict previous_ptr = vec_previous.data(); - float * __restrict xx_ptr = vec_sum_x2.data(); - float * __restrict xy_ptr = vec_sum_xy.data(); - while (trace_ptr_start != trace_ptr_end) { - float diff = *ref_ptr - *trace_ptr_start; - float taues = *ref_ptr * taue_est; - float y = *previous_ptr + diff + taues; - *previous_ptr += diff; - float x = *trace_ptr_start; - *xx_ptr += x * x; - *xy_ptr += x * y; - - trace_ptr_start++; - ref_ptr++; - previous_ptr++; - xx_ptr++; - xy_ptr++; + const float * trace_ptr = trace_data + offset; + const float * ref_ptr = ref_data + offset; + for(size_t trc=0;trc 0.0f ? nuc_weight / nuc_div : 0.0f; float total_weight = nuc_weight + combo_weight_mult; float combo_mult = combo_weight_mult/n_zero_flows; - while (tau_b_start != tau_b_end) { + for(size_t trc=0;trc" + "|".join ("(" + var_name + ")" for var_name in var_names) + ")\s*(?P.*)$" + var_names_matcher = re.compile (var_names_re) + var_end_re = r"((?P.*)\s*\))|$" + var_end_matcher = re.compile (var_end_re) + + # read the needed variable definition sections + value_lists = {} # var_name->[value lines] + cur_section = None + with file (source_fname) as source: + for line in source: + line = line.strip () + if cur_section is None: + m = var_names_matcher.match (line) + if m is None: + continue + cur_section = m.group ("varname") + var_values = m.group ("tail") + if len (var_values): + value_lists.setdefault (cur_section, []).append (var_values) + else: + m = var_end_matcher.match (line) + if m is not None: + var_values = m.group ("head") + if len (var_values): + value_lists.setdefault (cur_section, []).append (var_values) + cur_section = None + else: + if len (line) and not line.startswith ("#"): + value_lists.setdefault (cur_section, []).append (line) + + if cur_section is not None: + raise Exception ("Source CMakeLlists file ({}) parsing error: unterminated assignment section for '{}'".format (source_fname, cur_section)) + seen_vars = set (value_lists) + expected_vars = set (var_names) + if seen_vars != expected_vars: + dd = expected_vars - seen_vars + raise Exception ("Source CMakeLlists file ({}) parsing error: missing assignment{} for: {}".format (source_fname, ("" if len (dd) == 1 else "s"), ", ".join (dd))) + + # now read the template and output to destination + cur_section = None + written_sections = set () + with file (template_fname) as template: + with file (dest_fname, "w") as dest: + for line in template: + sline = line.strip () + if cur_section is None: + m = var_names_matcher.match (sline) + if m is None: + dest.write (line) + else: + cur_section = m.group ("varname") + if cur_section in written_sections: + error_logger.error ("Warning: duplicate section '{}' found in template '{}'".format (cur_section, template_fname)) + written_sections.add (cur_section) + dest.write ("set ( {}\n".format (cur_section)) + for content_line in value_lists [cur_section]: + dest.write (" {}\n".format (content_line)) + dest.write (")\n") + else: + m = var_end_matcher.match (sline) + if m is not None: + cur_section = None + + if cur_section is not None: + raise Exception ("Template CMakeLlists file ({}) parsing error: unterminated assignment section for '{}'".format (template_fname, cur_section)) + if written_sections != expected_vars: + dd = expected_vars - written_sections + raise Exception ("Template CMakeLlists file ({}) parsing error: missing assignment section{} for '{}'".format (template_fname, ("" if len (dd) == 1 else "s"), ", ".join (dd))) + return 1 + +def parse_cmdline (args): + epilog = "Destination directory should be pre-populated with the following directories/files:\n {}".format ("\n ".join (fsobj for fsobj in checklist)) + parser = argparse.ArgumentParser (description = __doc__, epilog = epilog, formatter_class = argparse.RawTextHelpFormatter) + parser.add_argument ( + "--verbose", + dest = "verbose", + action = "store_true", + default = False, + help="Print out the actions performed" + ) + parser.add_argument ( + "-D", + dest = "debug", + action = "store_true", + default = False, + help="Enable debug output" + ) + parser.add_argument ( + "--dest", + dest = "dest", + default = "./", + help="Destination directory, defaults to current" + ) + parser.add_argument ( + "source", + help="TorrentSuite source code directory" + ) + params = parser.parse_args (args [1:]) + return params + +def check_ts_dir (dirname): + if not os.path.isdir (dirname): + raise Exception ("TorrentSuite source directory ({}) not found".format (dirname)) + +def check_presence (path, fname): + tt = os.path.join (path, fname) + if not os.path.exists (tt): + raise Exception ("File or directory {} not found".format (tt)) + +def process (par): + + status_logger.info ("Checking pre-requisites for TMAP standalone preparation from TorrentSuite in {} ".format (par.source)) + + check_ts_dir (par.source) + for fname in checklist: + check_presence (par.dest, fname) + check_presence (os.path.join (par.source, CMAKELISTS_RPATH), CMAKELISTS_FNAME) + + status_logger.info ("Preparing TMAP standalone from torrent-suite in %s".format (par.source)) + + cp = Copier (par.source, par.dest) + for spec in copylist: + cp (spec) + + status_logger.info ("Preparing TMAP standalone CMakeLists.txt in %s".format (par.dest)) + + cmake_templ_fname = os.path.join (par.dest, CMAKELISTS_TEMPLATE_FNAME) + cmake_src_fname = os.path.join (par.source, CMAKELISTS_RPATH, CMAKELISTS_FNAME) + cmake_dest_fname = os.path.join (par.dest, CMAKELISTS_FNAME) + prepare_cmakelists (cmake_templ_fname, cmake_src_fname, cmake_dest_fname) + + status_logger.info ("Done: all files are successfully prepared in %s\n" % par.dest) + + return 0 + +def main (args): + par = parse_cmdline (args) + if not par.verbose: + status_logger.setLevel (logging.ERROR) + if not par.debug: + debug_logger.setLevel (logging.ERROR) + return process (par) + #except Exception as e: + # error_logger.error ("Error: {}".format (e)) + # return 1 + +if __name__ == "__main__": + sys.exit (main (sys.argv)) diff --git a/Analysis/TMAP/src/index/tmap_refseq.c b/Analysis/TMAP/src/index/tmap_refseq.c index 5b06c546..25006b57 100644 --- a/Analysis/TMAP/src/index/tmap_refseq.c +++ b/Analysis/TMAP/src/index/tmap_refseq.c @@ -1252,6 +1252,8 @@ enum ovr_opt_code // --c-bw OO_c_bw, + // --score-thr + OO_score_thr, // --end-repair OO_end_repair, // --max-one-large-indel-rescue @@ -1396,10 +1398,12 @@ static const sysopt_t overridable_opts [] = { "c-gep", required_argument, NULL, OO_c_gep }, // --c-bw { "c-bw", required_argument, NULL, OO_c_bw }, + // --score-thr + { "score_thr", required_argument, NULL, OO_score_thr }, // Following options are recognised per se as well as with -le and -he suffixes: // --end-repair - { "end-repair", required_argument, NULL, OO_end_repair }, + { "end-repair", required_argument, NULL, OO_end_repair }, // --max-one-large-indel-rescue { "max-one-large-indel-rescue", required_argument, NULL, OO_max_one_large_indel_rescue }, // --min-anchor-large-indel-rescue @@ -1528,8 +1532,8 @@ int string_to_args (char* argstring, char*** argv_p) // this would return 0 or 2 static uint8_t str2int (const char* str, int* value) { char* endptr; - int errono_save = errno; - errno = 0; + // int errno_save = errno; + // errno = 0; long val = strtol (str, &endptr, 10); if (*endptr) // there was some garbage down a string return 0; @@ -1554,8 +1558,8 @@ static uint8_t str2int (const char* str, int* value) static uint8_t str2double (const char* str, double* value) { char* endptr; - int errono_save = errno; - errno = 0; + // int errno_save = errno; + // errno = 0; double val = strtod (str, &endptr); if (*endptr) // there was some garbage down a string return 0; @@ -1891,6 +1895,14 @@ uint32_t parse_overrides (tmap_map_locopt_t* local_params, char* param_spec_str, else tmap_user_fileproc_msg (bed_fname, lineno, "Error parsing parameters override: --c-bw"); break; + case OO_score_thr: + if (str2int (optarg, &value)) + local_params->score_thr.value = value, + local_params->score_thr.over = 1, + ++ovr_count; + else + tmap_user_fileproc_msg (bed_fname, lineno, "Error parsing parameters override: --end-repair"); + break; case OO_end_repair: if (str2int (optarg, &value)) local_params->end_repair.value = value, @@ -2669,6 +2681,24 @@ tmap_refseq_read_bed_core (tmap_refseq_t *refseq, char *bedfile, int flag, int32 } else { + if (b [num-1] > beg) + { + tmap_error ("Bed file is not sorted by begin", Warn, OutOfRange); + fclose (fp); + return 0; + } + else if (e [num-1] >= end) + { + // ZZ:current ampl is contained in the previous one + continue; + // DK: overrides for containing one preceed + } + else if (b [num-1] == beg) + { + // ZZ:current one has same beg, but larger end, replace previous one + num--; + // DK: overrides for longer one preceed + } if (num >= memsize) { uint32_t prevsize = memsize; @@ -2689,24 +2719,6 @@ tmap_refseq_read_bed_core (tmap_refseq_t *refseq, char *bedfile, int flag, int32 last_parovr_mem_size = memsize; } } - if (b [num-1] > beg) - { - tmap_error ("Bed file is not sorted by begin", Warn, OutOfRange); - fclose (fp); - return 0; - } - else if (e [num-1] >= end) - { - // ZZ:current ampl is contained in the previous one - continue; - // DK: overrides for containing one preceed - } - else if (b [num-1] == beg) - { - // ZZ:current one has same beg, but larger end, replace previous one - num--; - // DK: overrides for longer one preceed - } } b [num] = beg; e [num] = end; diff --git a/Analysis/TMAP/src/io/tmap_file.c b/Analysis/TMAP/src/io/tmap_file.c index 183198f9..dd7bbcb5 100644 --- a/Analysis/TMAP/src/io/tmap_file.c +++ b/Analysis/TMAP/src/io/tmap_file.c @@ -408,6 +408,7 @@ tmap_file_vfprintf(tmap_file_t *fp, const char *format, va_list ap) if(n < 0) { tmap_error("vfprintf failed", Exit, WriteFileError); } + fflush (fp->fp); return n; } @@ -423,6 +424,7 @@ tmap_file_fprintf(tmap_file_t *fp, const char *format, ...) va_start(ap, format); n = vfprintf(fp->fp, format, ap); va_end(ap); + fflush (fp->fp); return n; } @@ -438,6 +440,7 @@ tmap_file_printf(const char *format, ...) va_start(ap, format); n = vfprintf(tmap_file_stdout->fp, format, ap); va_end(ap); + fflush (tmap_file_stdout->fp); return n; } diff --git a/Analysis/TMAP/src/map/pairing/tmap_map_pairing.c b/Analysis/TMAP/src/map/pairing/tmap_map_pairing.c index d5119788..43ea892a 100644 --- a/Analysis/TMAP/src/map/pairing/tmap_map_pairing.c +++ b/Analysis/TMAP/src/map/pairing/tmap_map_pairing.c @@ -335,7 +335,7 @@ tmap_map_pairing_read_rescue_helper(tmap_refseq_t *refseq, double ins_size_mean, double ins_size_std, int32_t strandedness, int32_t positioning, // positioning should be relateive to one/two int32_t read_rescue_std_num, - tmap_rand_t *rand, tmap_map_opt_t *opt) + tmap_rand_t *rand, tmap_map_opt_t *opt, tmap_map_stats_t* stats) { int32_t i, j; int32_t best, n_best, best_mapq=-1; @@ -452,7 +452,7 @@ tmap_map_pairing_read_rescue_helper(tmap_refseq_t *refseq, opt_local.max_seed_band = 0; opt_local.stage_seed_freqc = 0.0; opt_local.bw += ins_size_std * read_rescue_std_num; - sams = tmap_map_util_sw_gen_score(refseq, two_orig, sams, two_seq, rand, &opt_local, NULL); + sams = tmap_map_util_sw_gen_score(refseq, two_orig, sams, two_seq, rand, &opt_local, NULL, stats); return sams; } @@ -462,7 +462,7 @@ tmap_map_pairing_read_rescue(tmap_refseq_t *refseq, tmap_seq_t *one_seq_orig, tmap_seq_t *two_seq_orig, tmap_map_sams_t *one, tmap_map_sams_t *two, tmap_seq_t *one_seq[2], tmap_seq_t *two_seq[2], - tmap_rand_t *rand, tmap_map_opt_t *opt) + tmap_rand_t *rand, tmap_map_opt_t *opt, tmap_map_stats_t* stat) { tmap_map_sams_t *one_rr = NULL, *two_rr = NULL; int32_t i, flag = 0; @@ -472,7 +472,7 @@ tmap_map_pairing_read_rescue(tmap_refseq_t *refseq, opt->ins_size_mean, opt->ins_size_std, opt->strandedness, 1-opt->positioning, // NB: update positioning opt->read_rescue_std_num, - rand, opt); + rand, opt, stat); //fprintf(stderr, "RR #1: %d\n", one_rr->n); if(0 < one_rr->n) { /* @@ -494,7 +494,7 @@ tmap_map_pairing_read_rescue(tmap_refseq_t *refseq, opt->ins_size_mean, opt->ins_size_std, opt->strandedness, opt->positioning, opt->read_rescue_std_num, - rand, opt); + rand, opt, stat); //fprintf(stderr, "RR #2: %d\n", one_rr->n); if(0 < two_rr->n) { /* diff --git a/Analysis/TMAP/src/map/pairing/tmap_map_pairing.h b/Analysis/TMAP/src/map/pairing/tmap_map_pairing.h index 89a7160c..7f7664d2 100644 --- a/Analysis/TMAP/src/map/pairing/tmap_map_pairing.h +++ b/Analysis/TMAP/src/map/pairing/tmap_map_pairing.h @@ -60,7 +60,7 @@ tmap_map_pairing_read_rescue(tmap_refseq_t *refseq, tmap_seq_t *one_orig, tmap_seq_t *two_orig, tmap_map_sams_t *one, tmap_map_sams_t *two, tmap_seq_t *one_seq[2], tmap_seq_t *two_seq[2], - tmap_rand_t *rand, tmap_map_opt_t *opt); + tmap_rand_t *rand, tmap_map_opt_t *opt, tmap_map_stats_t* stat); /*! given sets of seeds for two ends of pair, scores all possible pairs of seeds and diff --git a/Analysis/TMAP/src/map/tmap_map_driver.c b/Analysis/TMAP/src/map/tmap_map_driver.c index 2f2c8d78..c4bb862c 100644 --- a/Analysis/TMAP/src/map/tmap_map_driver.c +++ b/Analysis/TMAP/src/map/tmap_map_driver.c @@ -5,6 +5,7 @@ #include #include #include +#include #ifdef HAVE_LIBPTHREAD #include #endif @@ -38,6 +39,56 @@ #define PARANOID_TESTS 0 +// DK: declare fileno here to avoid using __USE_POSIX (which may have unknown effect on build) + +extern int fileno (FILE *__stream); + +/*! + Driver data to be passed to a thread + */ +typedef struct { + sam_header_t *sam_header; /*!< the SAM Header */ + tmap_seqs_t **seqs_buffer; /*!< the buffers of sequences */ + int32_t seqs_buffer_length; /*!< the buffers length */ + tmap_map_record_t **records; /*!< the alignments for each sequence */ + tmap_map_bams_t **bams; /*!< the BAM alignments for each sequence */ + tmap_index_t *index; /*!< pointer to the reference index */ + tmap_map_driver_t *driver; /*!< the main driver object */ + tmap_map_stats_t *stat; /*!< the driver statistics */ + tmap_rand_t *rand; /*!< the random number generator */ + // DVK - realigner + struct RealignProxy *realigner; /*!< post-processing realigner engine */ + struct RealignProxy *context; /*!< post-processing context-dependent realignment engine */ + int32_t do_pairing; /*!< 1 if we are performing pairing paramter calculation, 0 otherwise */ + int32_t tid; /*!< the zero-based thread id */ + int32_t *seqCntr; + sem_t processor_trigger_sem; + sem_t processor_done_sem; + int32_t dismantle; +} tmap_map_driver_thread_data_t; + +typedef struct { + tmap_seqs_io_t *io_in; + tmap_sam_io_t *io_out; + tmap_seqs_t **seqs_buffer; + int32_t seqs_buffer_length; + int32_t reads_queue_size; + sem_t reader_trigger_sem; + sem_t reader_done_sem; + int32_t dismantle; +} tmap_map_driver_thread_io_data_t; + +typedef struct{ + //struct to hold data for writer thread + int32_t seqs_buffer_length; + tmap_map_bams_t **bams; + tmap_map_record_t **records; + tmap_sam_io_t *io_out; + sem_t writer_trigger_sem; + sem_t writer_done_sem; + int32_t dismantle; +} tmap_map_driver_thread_writer_data_t; + // NB: do not turn these on, as they do not currently improve run time. They // could be useful if many duplicate lookups are performed and the hash @@ -943,7 +994,7 @@ void tail_repeats_clip_read tmap_seq_t* qryseq, tmap_refseq_t* refseq, tmap_map_sams_t* sams, - struct RealignProxy* realigner, + // struct RealignProxy* realigner, tmap_map_stats_t *stat, int32_t repclip_continuation, int32_t repclip_flag, @@ -1010,7 +1061,8 @@ void tail_repeats_clip_read filtered ++; continue; } - uint8_t* ref = (uint8_t*) ref_mem (realigner, ref_tail_len); + // uint8_t* ref = (uint8_t*) ref_mem (realigner, ref_tail_len); + uint8_t* ref = alloca ( sizeof (uint8_t) * ref_tail_len); int32_t converted_cnt; tmap_refseq_subseq2 (refseq, ref_id+1, ref_tail_beg+1, ref_tail_end, ref, 0, &converted_cnt); // convert reference to ascii format @@ -1129,21 +1181,7 @@ void tail_repeat_clip_reads (tmap_seqs_t *seqs_buffer, tmap_refseq_t* refseq, tm #endif void -tmap_map_driver_core_worker(sam_header_t *sam_header, - tmap_seqs_t **seqs_buffer, - tmap_map_record_t **records, - tmap_map_bams_t **bams, - int32_t seqs_buffer_length, - int32_t *buffer_idx, - tmap_index_t *index, - tmap_map_driver_t *driver, - tmap_map_stats_t *stat, - tmap_rand_t *rand, - // DVK - realigner - struct RealignProxy* realigner, - struct RealignProxy* context, - int32_t do_pairing, - int32_t tid) +tmap_map_driver_core_worker(tmap_map_driver_thread_data_t *params) { int32_t i, j, k, low = 0; int32_t found; @@ -1155,6 +1193,16 @@ tmap_map_driver_core_worker(sam_header_t *sam_header, // common memory resource for WS traceback paths tmap_sw_path_t *path_buf = NULL; // buffer for traceback path int32_t path_buf_sz = 0; // used portion and allocated size of traceback path. + sam_header_t *sam_header=params->sam_header; + tmap_index_t *index=params->index; + tmap_map_driver_t *driver=params->driver; + tmap_map_stats_t *stat=params->stat; + tmap_rand_t *rand=params->rand; + // DVK - realigner + struct RealignProxy* realigner=params->realigner; + struct RealignProxy* context=params->context; + int32_t tid=params->tid; + int32_t *seqCntr=params->seqCntr; #ifdef TMAP_DRIVER_USE_HASH // init the occurence hash @@ -1175,450 +1223,472 @@ tmap_map_driver_core_worker(sam_header_t *sam_header, tmap_map_driver_do_threads_init (driver, tid); // Go through the buffer - while (low < seqs_buffer_length) + while(1) { - if (tid == (low % driver->opt->num_threads)) + sem_wait (¶ms->processor_trigger_sem); + if (params->dismantle) + break; + while (1) { - tmap_map_stats_t *stage_stat = NULL; - tmap_map_record_t *record_prev = NULL; - int32_t num_ends; - - #ifdef TMAP_DRIVER_USE_HASH - #ifdef TMAP_DRIVER_CLEAR_HASH_PER_READ - // TODO: should we hash each read, or across the thread? - tmap_bwt_match_hash_clear (hash); - #endif - #endif - - num_ends = seqs_buffer [low]->n; - if(max_num_ends < num_ends) + int32_t lowStart = __atomic_fetch_add(seqCntr,10,__ATOMIC_SEQ_CST); + int32_t lowEnd = lowStart+10; + if(lowEnd >params->seqs_buffer_length) + lowEnd=params->seqs_buffer_length; + if(lowStart >= params->seqs_buffer_length) + break; + for(low=lowStart;lowseqs_buffer_length;low++) { - seqs = tmap_realloc (seqs, sizeof (tmap_seq_t**) * num_ends, "seqs"); - while(max_num_ends < num_ends) + // if (!(tid == (low % driver->opt->num_threads))) + // continue; + tmap_map_stats_t *stage_stat = NULL; + tmap_map_record_t *record_prev = NULL; + int32_t num_ends; + + #ifdef TMAP_DRIVER_USE_HASH + #ifdef TMAP_DRIVER_CLEAR_HASH_PER_READ + // TODO: should we hash each read, or across the thread? + tmap_bwt_match_hash_clear (hash); + #endif + #endif + + num_ends = params->seqs_buffer [low]->n; + if(max_num_ends < num_ends) { - seqs [max_num_ends] = tmap_calloc(4, sizeof(tmap_seq_t*), "seqs[max_num_ends]"); - max_num_ends++; + seqs = tmap_realloc (seqs, sizeof (tmap_seq_t**) * num_ends, "seqs"); + while(max_num_ends < num_ends) + { + seqs [max_num_ends] = tmap_calloc(4, sizeof(tmap_seq_t*), "seqs[max_num_ends]"); + max_num_ends++; + } + max_num_ends = num_ends; } - max_num_ends = num_ends; - } - // re-initialize the random seed - if(driver->opt->rand_read_name) - tmap_rand_reinit(rand, tmap_hash_str_hash_func_exc(tmap_seq_get_name(seqs_buffer[low]->seqs[0])->s, driver->opt->prefix_exclude, driver->opt->suffix_exclude)); + // re-initialize the random seed + if(driver->opt->rand_read_name) + tmap_rand_reinit(rand, tmap_hash_str_hash_func_exc(tmap_seq_get_name(params->seqs_buffer[low]->seqs[0])->s, driver->opt->prefix_exclude, driver->opt->suffix_exclude)); - // init - for(i = 0; i < num_ends; i++) - { - tmap_map_driver_init_seqs (seqs [i], seqs_buffer [low]->seqs [i], -1); - if (NULL != stat) stat->num_reads++; - } + // init + for(i = 0; i < num_ends; i++) + { + tmap_map_driver_init_seqs (seqs [i], params->seqs_buffer [low]->seqs [i], -1); + if (NULL != stat) stat->num_reads++; + } - // init records - records [low] = tmap_map_record_init (num_ends); - - // go through each stage - int32_t stage_ord; - for (stage_ord = 0; stage_ord < driver->num_stages; ++stage_ord) - { // for each stage - - tmap_map_driver_stage_t *stage = driver->stages [stage_ord]; - //// tmap_sw_param_t sw_par; - // stage may have special sw parameters - // DK here handling of global arrays matrix and iupac_matrix is completely messed up. - // The threads would randomly and concurrently override the matix as each of them go through stages. - // Safe fix would be to allocate matrix locally here and populate it. - // That would be unnecessary extra work per each read (which is performed here anyway) - // Better option is to allocate per-stage parameters storage and compute them once per stage. - // Implementing the latter - // To avoid race when filling in the stage params, init them when thread data gets initialized. - - // tmap_map_util_populate_sw_par_iupac (&(stage->sw_param), stage->opt); - - // stage stats - stage_stat = tmap_map_stats_init (); - - // seed - for (j = 0; j < num_ends; j++) - { // for each end - tmap_seq_t** stage_seqs = NULL; - // should we seed using the whole read? - if(0 < stage->opt->stage_seed_max_length && stage->opt->stage_seed_max_length < tmap_seq_get_bases_length (seqs [j][0])) - { - stage_seqs = tmap_calloc (4, sizeof (tmap_seq_t*), "seqs[]"); - tmap_map_driver_init_seqs (stage_seqs, seqs_buffer [low]->seqs [stage_ord], stage->opt->stage_seed_max_length); - } - else - stage_seqs = seqs [j]; - for (k = 0; k < stage->num_algorithms; k++) - { // for each algorithm - tmap_map_driver_algorithm_t *algorithm = stage->algorithms [k]; - tmap_map_sams_t *sams = NULL; - if (stage_ord + 1 != algorithm->opt->algo_stage) - tmap_bug(); - // map - sams = algorithm->func_thread_map (&algorithm->thread_data [tid], stage_seqs, index, hash, rand, algorithm->opt); - if (NULL == sams) - tmap_error ("the thread function did not return a mapping", Exit, OutOfRange); - // append - tmap_map_sams_merge (records [low]->sams [j], sams); - // destroy - tmap_map_sams_destroy (sams); - } - stage_stat->num_after_seeding += records [low]->sams [j]->n; - if (0 < stage->opt->stage_seed_max_length && stage->opt->stage_seed_max_length < tmap_seq_get_bases_length (seqs [j][0])) - { - // free - for (j = 0; j < 4; j++) + // init records + params->records [low] = tmap_map_record_init (num_ends); + + // go through each stage + int32_t stage_ord; + for (stage_ord = 0; stage_ord < driver->num_stages; ++stage_ord) + { // for each stage + + tmap_map_driver_stage_t *stage = driver->stages [stage_ord]; + //// tmap_sw_param_t sw_par; + // stage may have special sw parameters + // DK here handling of global arrays matrix and iupac_matrix is completely messed up. + // The threads would randomly and concurrently override the matix as each of them go through stages. + // Safe fix would be to allocate matrix locally here and populate it. + // That would be unnecessary extra work per each read (which is performed here anyway) + // Better option is to allocate per-stage parameters storage and compute them once per stage. + // Implementing the latter + // To avoid race when filling in the stage params, init them when thread data gets initialized. + + // tmap_map_util_populate_sw_par_iupac (&(stage->sw_param), stage->opt); + + // stage stats + stage_stat = tmap_map_stats_init (); + + // seed + for (j = 0; j < num_ends; j++) + { // for each end + tmap_seq_t** stage_seqs = NULL; + // should we seed using the whole read? + if(0 < stage->opt->stage_seed_max_length && stage->opt->stage_seed_max_length < tmap_seq_get_bases_length (seqs [j][0])) + { + stage_seqs = tmap_calloc (4, sizeof (tmap_seq_t*), "seqs[]"); + tmap_map_driver_init_seqs (stage_seqs, params->seqs_buffer [low]->seqs [stage_ord], stage->opt->stage_seed_max_length); + } + else + stage_seqs = seqs [j]; + for (k = 0; k < stage->num_algorithms; k++) + { // for each algorithm + tmap_map_driver_algorithm_t *algorithm = stage->algorithms [k]; + tmap_map_sams_t *sams = NULL; + if (stage_ord + 1 != algorithm->opt->algo_stage) + tmap_bug(); + // map + sams = algorithm->func_thread_map (&algorithm->thread_data [tid], stage_seqs, index, hash, rand, algorithm->opt); + if (NULL == sams) + tmap_error ("the thread function did not return a mapping", Exit, OutOfRange); + // append + tmap_map_sams_merge (params->records [low]->sams [j], sams); + // destroy + tmap_map_sams_destroy (sams); + } + stage_stat->num_after_seeding += params->records [low]->sams [j]->n; + if (0 < stage->opt->stage_seed_max_length && stage->opt->stage_seed_max_length < tmap_seq_get_bases_length (seqs [j][0])) { - tmap_seq_destroy (stage_seqs [j]); - stage_seqs [j] = NULL; + // free + for (j = 0; j < 4; j++) + { + tmap_seq_destroy (stage_seqs [j]); + stage_seqs [j] = NULL; + } } + stage_seqs = NULL; // do not use } - stage_seqs = NULL; // do not use - } - // keep mappings for subsequent stages or restore mappings from - // previous stages - if (1 == stage->opt->stage_keep_all) - { - // merge from the previous stage - if (0 < i) + // keep mappings for subsequent stages or restore mappings from + // previous stages + if (1 == stage->opt->stage_keep_all) { - tmap_map_record_merge (records [low], record_prev); - // destroy the record - tmap_map_record_destroy (record_prev); - record_prev = NULL; - } + // merge from the previous stage + if (0 < i) + { + tmap_map_record_merge (params->records [low], record_prev); + // destroy the record + tmap_map_record_destroy (record_prev); + record_prev = NULL; + } - // keep for the next stage - if (i < driver->num_stages - 1) // more stages left - record_prev = tmap_map_record_clone (records [low]); - } + // keep for the next stage + if (i < driver->num_stages - 1) // more stages left + record_prev = tmap_map_record_clone (params->records [low]); + } - // generate scores with smith waterman - for (j = 0; j < num_ends; j++) - { // for each end - records [low]->sams [j] = tmap_map_util_sw_gen_score (index->refseq, seqs_buffer [low]->seqs [j], records [low]->sams [j], seqs [j], rand, stage->opt, &k); - stage_stat->num_after_scoring += records [low]->sams [j]->n; - stage_stat->num_after_grouping += k; - } + // generate scores with smith waterman + for (j = 0; j < num_ends; j++) + { // for each end + params->records [low]->sams [j] = tmap_map_util_sw_gen_score (index->refseq, params->seqs_buffer [low]->seqs [j], params->records [low]->sams [j], seqs [j], rand, stage->opt, &k, stat); + stage_stat->num_after_scoring += params->records [low]->sams [j]->n; + stage_stat->num_after_grouping += k; + } - // remove duplicates - for (j = 0; j < num_ends; j++) - { // for each end - tmap_map_util_remove_duplicates (records [low]->sams [j], stage->opt->dup_window, rand); - stage_stat->num_after_rmdup += records [low]->sams [j]->n; - } + // remove duplicates + for (j = 0; j < num_ends; j++) + { // for each end + tmap_map_util_remove_duplicates (params->records [low]->sams [j], stage->opt->dup_window, rand); + stage_stat->num_after_rmdup += params->records [low]->sams [j]->n; + } - // (single-end) mapping quality - for (j = 0;j < num_ends; j++) // for each end - driver->func_mapq (records [low]->sams [j], tmap_seq_get_bases_length (seqs [j][0]), stage->opt, index->refseq); + // (single-end) mapping quality + for (j = 0;j < num_ends; j++) // for each end + driver->func_mapq (params->records [low]->sams [j], tmap_seq_get_bases_length (seqs [j][0]), stage->opt, index->refseq); - // filter if we have more stages - if (stage_ord < driver->num_stages-1) - { - for (j = 0; j < num_ends; j++) // for each end - tmap_map_sams_filter2 (records [low]->sams [j], stage->opt->stage_score_thr, stage->opt->stage_mapq_thr); - } - - if (0 == do_pairing && 0 <= driver->opt->strandedness && 0 <= driver->opt->positioning - && 2 == num_ends && 0 < records [low]->sams [0]->n && 0 < records [low]->sams [1]->n) - { // pairs of reads! - // read rescue - if (1 == stage->opt->read_rescue) + // filter if we have more stages + if (stage_ord < driver->num_stages-1) { - int32_t flag = tmap_map_pairing_read_rescue (index->refseq, - seqs_buffer [low]->seqs[0], seqs_buffer [low]->seqs [1], - records [low]->sams [0], records [low]->sams [1], - seqs [0], seqs [1], - rand, stage->opt); - // recalculate mapping qualities if necessary - if (0 < (flag & 0x1)) // first end was rescued - driver->func_mapq (records [low]->sams [0], tmap_seq_get_bases_length (seqs [0][0]), stage->opt, index->refseq); - if(0 < (flag & 0x2)) // second end was rescued - driver->func_mapq (records [low]->sams [1], tmap_seq_get_bases_length (seqs [1][0]), stage->opt, index->refseq); + for (j = 0; j < num_ends; j++) // for each end + tmap_map_sams_filter2 (params->records [low]->sams [j], stage->opt->stage_score_thr, stage->opt->stage_mapq_thr); } - // pick pairs - tmap_map_pairing_pick_pairs (records [low]->sams [0], records [low]->sams [1], - seqs [0][0], seqs [1][0], - rand, stage->opt); - } - else - { - // choose alignments - for (j = 0; j < num_ends; ++j) - { // for each end - tmap_map_sams_filter1 (records [low]->sams [j], stage->opt->aln_output_mode, TMAP_MAP_ALGO_NONE, rand); - stage_stat->num_after_filter += records [low]->sams [j]->n; + + if (0 == params->do_pairing && 0 <= driver->opt->strandedness && 0 <= driver->opt->positioning + && 2 == num_ends && 0 < params->records [low]->sams [0]->n && 0 < params->records [low]->sams [1]->n) + { // pairs of reads! + // read rescue + if (1 == stage->opt->read_rescue) + { + int32_t flag = tmap_map_pairing_read_rescue (index->refseq, + params->seqs_buffer [low]->seqs[0], params->seqs_buffer [low]->seqs [1], + params->records [low]->sams [0], params->records [low]->sams [1], + seqs [0], seqs [1], + rand, stage->opt, stat); + // recalculate mapping qualities if necessary + if (0 < (flag & 0x1)) // first end was rescued + driver->func_mapq (params->records [low]->sams [0], tmap_seq_get_bases_length (seqs [0][0]), stage->opt, index->refseq); + if(0 < (flag & 0x2)) // second end was rescued + driver->func_mapq (params->records [low]->sams [1], tmap_seq_get_bases_length (seqs [1][0]), stage->opt, index->refseq); + } + // pick pairs + tmap_map_pairing_pick_pairs (params->records [low]->sams [0], params->records [low]->sams [1], + seqs [0][0], seqs [1][0], + rand, stage->opt); } - } - - // generate and post-process alignments - found = 0; - for (j = 0; j < num_ends; ++j) // for each end - { - tmap_map_sams_t* sams = records [low]->sams [j]; - tmap_seq_t* seq = seqs_buffer [low]->seqs [j]; - tmap_seq_t** seq_variants = seqs [j]; - // if there are no mappings, continue - if (!sams->n) - continue; - // find alignment starts - sams = records [low]->sams [j] = tmap_map_util_find_align_starts - ( - index->refseq, // reference server - sams, // initial rough mapping - seq, // read - seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - stage->opt, // stage parameters - &target, // target cache control structure - stat // statistics accumulator - ); - if (!sams->n) - continue; - - // map to amplicons (if BED is given and parameters override enabled) - if (index->refseq->bed_exist && (stage->opt->use_param_ovr || stage->opt->use_bed_in_end_repair || stage->opt->use_bed_read_ends_stat)) - tmap_map_find_amplicons ( - stage_ord, // stage index - stage->opt, // stage options - &(stage->sw_param), // stage sw parameters - index->refseq, // reference server - sams // mappings - ); - - // reference alignment - tmap_map_util_align - ( - index->refseq, // reference server - sams, // mappings to compute alignments for - seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - &target, // target cache control structure - stage_ord, // processing stage index - &(stage->sw_param), // Smith-Waterman scoring parameters - &path_buf, // buffer for traceback path - &path_buf_sz, // used portion and allocated size of traceback path. - stat // statistics accumulator - ); - // realign in flowspace or with context, if requested - if (stage->opt->aln_flowspace || stage->opt->use_param_ovr) - // NB: seqs_buffer should have its key sequence if 0 < key_seq_len - tmap_map_util_fsw - ( - seq, - sams, - index->refseq, - stage->opt->bw, - stage->opt->softclip_type, - stage->opt->score_thr, - stage->opt->score_match, - stage->opt->pen_mm, - stage->opt->pen_gapo, - stage->opt->pen_gape, - stage->opt->fscore, - 1 - stage->opt->ignore_flowgram, - stage->opt->aln_flowspace, - stage->opt->use_param_ovr, - stat - ); - // context-sensitive (hp-indel-liberal) realignment - if (stage->opt->do_hp_weight || stage->opt->use_param_ovr) - context_align_read - ( - seq, - index->refseq, - sams, - context, - stat, - stage->opt - ); - // perform anti-dyslexic realignment if enabled - if (stage->opt->do_realign || stage->opt->use_param_ovr) + else { - realign_read - ( - seq, - index->refseq, - sams, - realigner, - stat, - stage->opt - ); + // choose alignments + for (j = 0; j < num_ends; ++j) + { // for each end + tmap_map_sams_filter1 (params->records [low]->sams [j], stage->opt->aln_output_mode, TMAP_MAP_ALGO_NONE, rand); + stage_stat->num_after_filter += params->records [low]->sams [j]->n; + } } - // salvage ends - if (stage->opt->pen_gapl >= 0 || stage->opt->use_param_ovr) - tmap_map_util_salvage_edge_indels + + // generate and post-process alignments + found = 0; + for (j = 0; j < num_ends; ++j) // for each end + { + tmap_map_sams_t* sams = params->records [low]->sams [j]; + tmap_seq_t* seq = params->seqs_buffer [low]->seqs [j]; + tmap_seq_t** seq_variants = seqs [j]; + // if there are no mappings, continue + if (!sams->n) + continue; + // find alignment starts + sams = params->records [low]->sams [j] = tmap_map_util_find_align_starts ( index->refseq, // reference server - sams, // mappings to compute alignments for - seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - &target, // target cache control structure - stage->opt, // tmap parameters - stage_ord, // processing stage index - &stage->sw_param, // Smith-Waterman scoring parameters - &path_buf, // buffer for traceback path - &path_buf_sz, // used portion and allocated size of traceback path. - stat - ); - // trim key (no local overriding for this option) - if (1 == stage->opt->softclip_key) - tmap_map_util_trim_key - ( - sams, // mappings to compute alignments for + sams, // initial rough mapping seq, // read seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - index->refseq, // reference server + stage->opt, // stage parameters &target, // target cache control structure - stat + stat // statistics accumulator ); - // end repair - if (stage->opt->end_repair != 0 || stage->opt->use_param_ovr) - tmap_map_util_end_repair_bulk + if (!sams->n) + continue; + + // map to amplicons (if BED is given and parameters override enabled) + if (index->refseq->bed_exist && (stage->opt->use_param_ovr || stage->opt->use_bed_in_end_repair || stage->opt->use_bed_read_ends_stat)) + tmap_map_find_amplicons ( + stage_ord, // stage index + stage->opt, // stage options + &(stage->sw_param), // stage sw parameters + index->refseq, // reference server + sams // mappings + ); + + // reference alignment + tmap_map_util_align ( index->refseq, // reference server sams, // mappings to compute alignments for - seq, // read seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - stage->opt, // tmap parameters &target, // target cache control structure - &path_buf, // buffer for traceback path - &path_buf_sz, // used portion and allocated size of traceback path. - stat - ); - // REPAiR - if (stage->opt->use_bed_read_ends_stat != 0 || stage->opt->use_param_ovr) - tmap_map_util_REPAiR_bulk - ( - index->refseq, // reference server - sams, // mappings to compute alignments for - seq, // read - seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations - stage->opt, // tmap parameters stage_ord, // processing stage index - &stage->sw_param, // swage SW parameters - &target, // target cache control structure + &(stage->sw_param), // Smith-Waterman scoring parameters &path_buf, // buffer for traceback path &path_buf_sz, // used portion and allocated size of traceback path. - stat + stat // statistics accumulator ); - // explicitly fix 5' softclip is required - if ((!stage->opt->end_repair_5_prime_softclip && (stage->opt->softclip_type == 2 || stage->opt->softclip_type == 3)) - || stage->opt->use_param_ovr) - { - int i; - for (i = 0; i != sams->n; ++i) - { - tmap_map_sam_t* s = sams->sams + i; - tmap_map_util_remove_5_prime_softclip + // realign in flowspace or with context, if requested + if (stage->opt->aln_flowspace || stage->opt->use_param_ovr) + // NB: seqs_buffer should have its key sequence if 0 < key_seq_len + tmap_map_util_fsw ( - index->refseq, - s, - seq, - seq_variants, - &target, - &path_buf, - &path_buf_sz, - stage_ord, - &(stage->sw_param), - stage->opt, + seq, + sams, + index->refseq, + stage->opt->bw, + stage->opt->softclip_type, + stage->opt->score_thr, + stage->opt->score_match, + stage->opt->pen_mm, + stage->opt->pen_gapo, + stage->opt->pen_gape, + stage->opt->fscore, + 1 - stage->opt->ignore_flowgram, + stage->opt->aln_flowspace, + stage->opt->use_param_ovr, stat ); - } - } - if (stage->opt->cigar_sanity_check || stage->opt->use_param_ovr) // do this before tail repeat clipping as the latter does not update alignment box. TODO: update box in tail clip and move this to the very end of alignment post processing - { - int i; - for (i = 0; i != sams->n; ++i) + // context-sensitive (hp-indel-liberal) realignment + // if (stage->opt->do_hp_weight || stage->opt->use_param_ovr) + if (context) // the logic that determines if context realignment is to be tried is used to define context ptr; it is NULL if context realignment is not required + context_align_read + ( + seq, + index->refseq, + sams, + context, + stat, + stage->opt + ); + // perform anti-dyslexic realignment if enabled + // if (stage->opt->do_realign || stage->opt->use_param_ovr) + if (realigner) // the logic that determines if context realignment is to be tried is used to define context ptr; it is NULL if context realignment is not required { - cigar_sanity_check + realign_read ( - index->refseq, - sams->sams + i, - seq, - seq_variants, - &target, + seq, + index->refseq, + sams, + realigner, + stat, stage->opt ); } - } - // clip repeats - if (driver->opt->do_repeat_clip || stage->opt->use_param_ovr) - tail_repeats_clip_read - ( - seq, - index->refseq, - sams, - realigner, - stat, - stage->opt->repclip_continuation, - stage->opt->do_repeat_clip, - stage->opt->use_param_ovr - ); + // salvage ends + if (stage->opt->pen_gapl >= 0 || stage->opt->use_param_ovr) + tmap_map_util_salvage_edge_indels + ( + index->refseq, // reference server + sams, // mappings to compute alignments for + seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations + &target, // target cache control structure + stage->opt, // tmap parameters + stage_ord, // processing stage index + &stage->sw_param, // Smith-Waterman scoring parameters + &path_buf, // buffer for traceback path + &path_buf_sz, // used portion and allocated size of traceback path. + stat + ); + // trim key (no local overriding for this option) + if (1 == stage->opt->softclip_key) + tmap_map_util_trim_key + ( + sams, // mappings to compute alignments for + seq, // read + seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations + index->refseq, // reference server + &target, // target cache control structure + stat + ); + // end repair + if (stage->opt->end_repair != 0 || stage->opt->use_param_ovr) + tmap_map_util_end_repair_bulk + ( + index->refseq, // reference server + sams, // mappings to compute alignments for + seq, // read + seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations + stage->opt, // tmap parameters + &target, // target cache control structure + &path_buf, // buffer for traceback path + &path_buf_sz, // used portion and allocated size of traceback path. + stat + ); + // REPAiR + if (stage->opt->use_bed_read_ends_stat != 0 || stage->opt->use_param_ovr) + tmap_map_util_REPAiR_bulk + ( + index->refseq, // reference server + sams, // mappings to compute alignments for + seq, // read + seq_variants, // array of size 4 that contains pre-computed inverse / complement combinations + stage->opt, // tmap parameters + stage_ord, // processing stage index + &stage->sw_param, // swage SW parameters + &target, // target cache control structure + &path_buf, // buffer for traceback path + &path_buf_sz, // used portion and allocated size of traceback path. + stat + ); + // explicitly fix 5' softclip is required + if ((!stage->opt->end_repair_5_prime_softclip && (stage->opt->softclip_type == 2 || stage->opt->softclip_type == 3)) + || stage->opt->use_param_ovr) + { + int i; + for (i = 0; i != sams->n; ++i) + { + tmap_map_sam_t* s = sams->sams + i; + tmap_map_util_remove_5_prime_softclip + ( + index->refseq, + s, + seq, + seq_variants, + &target, + &path_buf, + &path_buf_sz, + stage_ord, + &(stage->sw_param), + stage->opt, + stat + ); + } + } + if (stage->opt->cigar_sanity_check || stage->opt->use_param_ovr) // do this before tail repeat clipping as the latter does not update alignment box. TODO: update box in tail clip and move this to the very end of alignment post processing + { + int i; + for (i = 0; i != sams->n; ++i) + { + cigar_sanity_check + ( + index->refseq, + sams->sams + i, + seq, + seq_variants, + &target, + stage->opt + ); + } + } + // clip repeats + if (driver->opt->do_repeat_clip || stage->opt->use_param_ovr) + tail_repeats_clip_read + ( + seq, + index->refseq, + sams, + // realigner, // DK: dependency of repeat clipper on realignment is removed to allow easier conditional realigner memory management for massively parallel setups + stat, + stage->opt->repclip_continuation, + stage->opt->do_repeat_clip, + stage->opt->use_param_ovr + ); - stage_stat->num_with_mapping++; - found = 1; - } + stage_stat->num_with_mapping++; + found = 1; + } - // TODO - // if paired, update pairing score based on target start? + // TODO + // if paired, update pairing score based on target start? - // did we find any mappings? - if (found) - { // yes - if (stat) - tmap_map_stats_add (stat, stage_stat); + // did we find any mappings? + if (found) + { // yes + if (stat) + tmap_map_stats_add (stat, stage_stat); + tmap_map_stats_destroy (stage_stat); + break; + } + else + { // no + tmap_map_record_destroy (params->records [low]); + // re-init + params->records [low] = tmap_map_record_init (num_ends); + } tmap_map_stats_destroy (stage_stat); - break; - } - else - { // no - tmap_map_record_destroy (records [low]); - // re-init - records [low] = tmap_map_record_init (num_ends); } - tmap_map_stats_destroy (stage_stat); - } - // only convert to BAM and destroy the records if we are not trying to - // estimate the pairing parameters - if (0 == do_pairing) - { - // convert the record to bam - if (1 == seqs_buffer [low]->n) - { - bams [low] = tmap_map_bams_init (1); - bams [low]->bams [0] = tmap_map_sams_print (seqs_buffer [low]->seqs [0], index->refseq, records [low]->sams [0], - 0, NULL, driver->opt->sam_flowspace_tags, driver->opt->bidirectional, driver->opt->seq_eq, driver->opt->min_al_len, driver->opt->min_al_cov, driver->opt->min_identity, driver->opt->score_match, &(stat->num_filtered_als)); - } - else + // only convert to BAM and destroy the records if we are not trying to + // estimate the pairing parameters + if (0 == params->do_pairing) { - bams [low] = tmap_map_bams_init (seqs_buffer [low]->n); - for (j = 0; j < seqs_buffer [low]->n; j++) - bams [low]->bams [j] = tmap_map_sams_print (seqs_buffer [low]->seqs [j], index->refseq, records [low]->sams [j], - (0 == j) ? 1 : ((seqs_buffer [low]->n-1 == j) ? 2 : 0), - records [low]->sams[(j+1) % seqs_buffer [low]->n], - driver->opt->sam_flowspace_tags, driver->opt->bidirectional, driver->opt->seq_eq, driver->opt->min_al_len, driver->opt->min_al_cov, driver->opt->min_identity, driver->opt->score_match, &(stat->num_filtered_als)); + + if(params->bams[low]){ + tmap_map_bams_destroy(params->bams[low]); + params->bams[low] = NULL; + } + + // convert the record to bam + if (1 == params->seqs_buffer [low]->n) + { + params->bams [low] = tmap_map_bams_init (1); + params->bams [low]->bams [0] = tmap_map_sams_print (params->seqs_buffer [low]->seqs [0], index->refseq, params->records [low]->sams [0], + 0, NULL, driver->opt->sam_flowspace_tags, driver->opt->bidirectional, driver->opt->seq_eq, driver->opt->min_al_len, driver->opt->min_al_cov, driver->opt->min_identity, driver->opt->score_match, &(stat->num_filtered_als)); + } + else + { + params->bams [low] = tmap_map_bams_init (params->seqs_buffer [low]->n); + for (j = 0; j < params->seqs_buffer [low]->n; j++) + params->bams [low]->bams [j] = tmap_map_sams_print (params->seqs_buffer [low]->seqs [j], index->refseq, params->records [low]->sams [j], + (0 == j) ? 1 : ((params->seqs_buffer [low]->n-1 == j) ? 2 : 0), + params->records [low]->sams[(j+1) % params->seqs_buffer [low]->n], + driver->opt->sam_flowspace_tags, driver->opt->bidirectional, driver->opt->seq_eq, driver->opt->min_al_len, driver->opt->min_al_cov, driver->opt->min_identity, driver->opt->score_match, &(stat->num_filtered_als)); + } + // free alignments, for space + tmap_map_record_destroy (params->records [low]); + params->records [low] = NULL; } - // free alignments, for space - tmap_map_record_destroy (records [low]); - records [low] = NULL; - } - // free seqs - for (i = 0; i < num_ends; i++) - { - for (j = 0; j < 4; j++) + // free seqs + for (i = 0; i < num_ends; i++) { - tmap_seq_destroy (seqs [i][j]); - seqs [i][j] = NULL; + for (j = 0; j < 4; j++) + { + tmap_seq_destroy (seqs [i][j]); + seqs [i][j] = NULL; + } } + tmap_map_record_destroy (record_prev); } - tmap_map_record_destroy (record_prev); + // next + low++; } - // next - (*buffer_idx) = low; - low++; + sem_post(¶ms->processor_done_sem); } - (*buffer_idx) = seqs_buffer_length; // free thread variables for (i = 0; i < max_num_ends; i++) @@ -1640,136 +1710,18 @@ tmap_map_driver_core_thread_worker(void *arg) { tmap_map_driver_thread_data_t *thread_data = (tmap_map_driver_thread_data_t*)arg; - tmap_map_driver_core_worker(thread_data->sam_header, thread_data->seqs_buffer, thread_data->records, thread_data->bams, - thread_data->seqs_buffer_length, thread_data->buffer_idx, thread_data->index, thread_data->driver, - thread_data->stat, thread_data->rand, /* DVK - realigner */ thread_data->realigner, thread_data->context, thread_data->do_pairing, thread_data->tid); + tmap_map_driver_core_worker(thread_data); return arg; } -//static inline void -static int32_t -tmap_map_driver_create_threads(sam_header_t *header, - tmap_seqs_t **seqs_buffer, - tmap_map_record_t **records, - tmap_map_bams_t **bams, - int32_t seqs_buffer_length, - tmap_index_t *index, - tmap_map_driver_t *driver, - tmap_map_stats_t *stat, -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - tmap_rand_t *rand_core, -#endif -#ifdef HAVE_LIBPTHREAD - pthread_attr_t **attr, - pthread_t **threads, - tmap_map_driver_thread_data_t **thread_data, - tmap_rand_t **rand, - tmap_map_stats_t **stats, - struct RealignProxy** realigner, - struct RealignProxy** context, -#endif - int32_t do_pairing) -{ -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - int32_t j; -#endif - int32_t buffer_idx; // buffer index for processing data with a single thread - -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - // sample reads - { - int32_t i; - if(driver->opt->sample_reads < 1) { - for(i=j=0;iopt->sample_reads < tmap_rand_get(rand_core)) continue; // skip - if(j < i) { - tmap_seqs_t *seqs; - seqs = seqs_buffer[j]; - seqs_buffer[j] = seqs_buffer[i]; - seqs_buffer[i] = seqs; - } - j++; - } - tmap_progress_print2("sampling %d out of %d [%.2lf%%]", j, seqs_buffer_length, 100.0*j/(double)seqs_buffer_length); - seqs_buffer_length = j; - if(0 == seqs_buffer_length) return 0; - } - } -#endif - - // do alignment -#ifdef HAVE_LIBPTHREAD - if(1 == driver->opt->num_threads) { - buffer_idx = 0; - tmap_map_driver_core_worker(header, seqs_buffer, records, bams, - seqs_buffer_length, &buffer_idx, index, driver, stat, rand[0], realigner [0], context [0], do_pairing, 0); - } - else { - int32_t i; - (*attr) = tmap_calloc(1, sizeof(pthread_attr_t), "(*attr)"); - pthread_attr_init((*attr)); - pthread_attr_setdetachstate((*attr), PTHREAD_CREATE_JOINABLE); - - (*threads) = tmap_calloc(driver->opt->num_threads, sizeof(pthread_t), "(*threads)"); - (*thread_data) = tmap_calloc(driver->opt->num_threads, sizeof(tmap_map_driver_thread_data_t), "(*thread_data)"); - - // create threads - for(i=0;iopt->num_threads;i++) { - (*thread_data)[i].sam_header = header; - (*thread_data)[i].seqs_buffer = seqs_buffer; - (*thread_data)[i].seqs_buffer_length = seqs_buffer_length; - (*thread_data)[i].buffer_idx = tmap_calloc(1, sizeof(int32_t), "(*thread_data)[i].buffer_id"); - (*thread_data)[i].records = records; - (*thread_data)[i].bams = bams; - (*thread_data)[i].index = index; - (*thread_data)[i].driver = driver; - if(NULL != stats) (*thread_data)[i].stat = stats[i]; - else (*thread_data)[i].stat = NULL; - (*thread_data)[i].rand = rand[i]; - // DVK - realigner - (*thread_data)[i].realigner = realigner [i]; - (*thread_data)[i].context = context [i]; - (*thread_data)[i].do_pairing = do_pairing; - (*thread_data)[i].tid = i; - if(0 != pthread_create(&(*threads)[i], (*attr), tmap_map_driver_core_thread_worker, &(*thread_data)[i])) { - tmap_error("error creating threads", Exit, ThreadError); - } - } - } -#else - buffer_idx = 0; - tmap_map_driver_core_worker(header, seqs_buffer, records, bams, - seqs_buffer_length, &buffer_idx, index, driver, stat, rand, do_pairing, 0); -#endif - return 1; -} - static int32_t -tmap_map_driver_infer_pairing(tmap_seqs_io_t *io_in, - sam_header_t *header, - tmap_seqs_t **seqs_buffer, +tmap_map_driver_infer_pairing(tmap_seqs_t **seqs_buffer, tmap_map_record_t **records, - tmap_map_bams_t **bams, int32_t seqs_buffer_length, - int32_t reads_queue_size, - tmap_index_t *index, tmap_map_driver_t *driver, - tmap_map_stats_t *stat, -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - tmap_rand_t *rand_core, -#endif -#ifdef HAVE_LIBPTHREAD - pthread_attr_t **attr, - pthread_t **threads, - tmap_map_driver_thread_data_t **thread_data, - tmap_rand_t **rand, - tmap_map_stats_t **stats, - // DVK - realigner - struct RealignProxy** realigner, - struct RealignProxy** context -#endif - ) // NB: just so that the function definition is clean + tmap_map_driver_thread_data_t *thread_data + ) { int32_t i, isize_num = 0, tmp; int32_t *isize = NULL; @@ -1777,46 +1729,34 @@ tmap_map_driver_infer_pairing(tmap_seqs_io_t *io_in, int32_t max_len = 0; // check if we should do pairing - if(driver->opt->strandedness < 0 || driver->opt->positioning < 0 || !(driver->opt->ins_size_std < 0)) return 0; + if(driver->opt->strandedness < 0 || + driver->opt->positioning < 0 || + !(driver->opt->ins_size_std < 0) || + (0 == seqs_buffer_length)) return 0; // NB: infers from the first chunk of reads tmap_progress_print("inferring pairing parameters"); - tmap_progress_print("loading reads"); - seqs_buffer_length = tmap_seqs_io_read_buffer(io_in, seqs_buffer, reads_queue_size, header); - tmap_progress_print2("loaded %d reads", seqs_buffer_length); - if(0 == seqs_buffer_length) return 0; // holds the insert sizes isize = tmap_malloc(sizeof(int32_t) * seqs_buffer_length, "isize"); - // TODO: check that he data is paired... // TODO: check that we choose only the best scoring alignment - // create the threads - if(0 == tmap_map_driver_create_threads(header, seqs_buffer, records, - bams, seqs_buffer_length, index, driver, NULL, -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - rand_core, -#endif -#ifdef HAVE_LIBPTHREAD - attr, threads, thread_data, rand, NULL, realigner, context, -#endif - 1)) { - return 0; + + for(int32_t i=0;iopt->num_threads;i++) { + thread_data[i].seqs_buffer = seqs_buffer; + thread_data[i].seqs_buffer_length = seqs_buffer_length; + thread_data[i].do_pairing=1; + sem_post(&thread_data[i].processor_trigger_sem); + } + + // wait for the processing to be done + for(int32_t i=0;iopt->num_threads;i++) { + sem_wait(&thread_data[i].processor_done_sem); + thread_data[i].do_pairing=0; } // estimate pairing parameters for(i=0;iopt->num_threads) { - // NB: we will write data as threads process the data. This is to - // facilitate SAM/BAM writing, which may be slow, especially for - // BAM. - int32_t tid = (i % driver->opt->num_threads); - while((*(*thread_data)[tid].buffer_idx) <= i) { - usleep(1000*1000); // sleep - } - } -#endif // only for paired ends if(NULL != records[i] && 2 == records[i]->n @@ -1854,24 +1794,6 @@ tmap_map_driver_infer_pairing(tmap_seqs_io_t *io_in, records[i] = NULL; } -#ifdef HAVE_LIBPTHREAD - // join threads - if(1 < driver->opt->num_threads) { - // join threads - for(i=0;iopt->num_threads;i++) { - if(0 != pthread_join((*threads)[i], NULL)) { - tmap_error("error joining threads", Exit, ThreadError); - } - // free the buffer index - free((*thread_data)[i].buffer_idx); - (*thread_data)[i].buffer_idx = NULL; - } - free((*threads)); (*threads) = NULL; - free(*(thread_data)); (*thread_data) = NULL; - free((*attr)); (*attr) = NULL; - } -#endif - if(isize_num < 8) { tmap_error("failed to infer the insert size distribution (too few reads): turning pairing off", Warn, OutOfRange); driver->opt->pairing = -1; @@ -1944,20 +1866,51 @@ tmap_map_driver_infer_pairing(tmap_seqs_io_t *io_in, } #ifdef HAVE_LIBPTHREAD -typedef struct { - tmap_seqs_io_t *io_in; - tmap_sam_io_t *io_out; - tmap_seqs_t **seqs_buffer; - int32_t seqs_buffer_length; - int32_t reads_queue_size; -} tmap_map_driver_thread_io_data_t; static void * tmap_map_driver_thread_io_worker (void *arg) { - tmap_map_driver_thread_io_data_t *d = (tmap_map_driver_thread_io_data_t*) arg; - d->seqs_buffer_length = tmap_seqs_io_read_buffer (d->io_in, d->seqs_buffer, d->reads_queue_size, d->io_out->fp->header->header); - return d; + tmap_map_driver_thread_io_data_t *d = (tmap_map_driver_thread_io_data_t*) arg; + while (1) + { + sem_wait(&d->reader_trigger_sem); + if (d->dismantle) + break; + d->seqs_buffer_length = tmap_seqs_io_read_buffer (d->io_in, d->seqs_buffer, d->reads_queue_size, d->io_out->fp->header->header); + sem_post(&d->reader_done_sem); + } + // return d; + return NULL; +} + +static void * +tmap_map_driver_thread_writer_worker (void *arg) +{ + tmap_map_driver_thread_writer_data_t *data = (tmap_map_driver_thread_writer_data_t*) arg; + while(1) + { + sem_wait(&data->writer_trigger_sem); + if (data->dismantle) + break; + for(int i=0;iseqs_buffer_length;i++) { + // write + for(int j=0;jbams[i]->n;j++) { // for each end + for(int k=0;kbams[i]->bams[j]->n;k++) { // for each hit + bam1_t *b = NULL; + b = data->bams[i]->bams[j]->bams[k]; // that's a lot of BAMs + if(NULL == b) tmap_bug(); + if(samwrite(data->io_out->fp, b) <= 0) { + tmap_error("Error writing the SAM file", Exit, WriteFileError); + } + } + } + tmap_map_bams_destroy(data->bams[i]); + data->bams[i] = NULL; + } + sem_post(&data->writer_done_sem); + } + // return data; + return NULL; } #endif @@ -1988,6 +1941,35 @@ uint8_t fill_sw_overrides (tmap_refseq_t* refseq, tmap_map_driver_t *driver) } +static uint32_t find_if_realigner_or_context_is_needed +( + uint8_t driver_realign_flag, + uint8_t driver_context_flag, + tmap_map_locopt_t* local_options, + uint32_t local_options_cnt, + uint8_t* realignment_needed, + uint8_t* context_needed) +{ + if (!context_needed || !realignment_needed) + return 0; + if (context_needed) *context_needed = 0; + if (realignment_needed) *realignment_needed = 0; + if (realignment_needed && driver_realign_flag) + *realignment_needed = 1; + if (context_needed && driver_context_flag) + *context_needed = 1; + for (tmap_map_locopt_t* sent = local_options + local_options_cnt; local_options != sent; ++local_options) + { + if (realignment_needed && !*realignment_needed && local_options->do_realign.over && local_options->do_realign.value) + *realignment_needed = 1; + if (!context_needed && *context_needed && local_options->do_hp_weight.over && local_options->do_hp_weight.value) + *context_needed = 1; + if ((!context_needed || *context_needed) && (!realignment_needed || *realignment_needed)) + break; + } + return 1; +} + void tmap_map_driver_core (tmap_map_driver_t *driver) { @@ -2002,31 +1984,34 @@ tmap_map_driver_core (tmap_map_driver_t *driver) #endif tmap_map_record_t **records=NULL; // buffer for the mapped data tmap_map_bams_t **bams=NULL;// buffer for the mapped BAM data + tmap_map_bams_t **bams_to_write=NULL;// copy of buffer for the writer thread to access tmap_index_t *index = NULL; // reference indes - tmap_map_stats_t *stat = NULL; // alignment statistics local_ovrs = 0; // count of local (per-amplicon) logging overrides #ifdef HAVE_LIBPTHREAD - pthread_attr_t *attr = NULL; - pthread_attr_t attr_io; - pthread_t *threads = NULL; - pthread_t *thread_io = NULL; - tmap_map_driver_thread_data_t *thread_data=NULL; + pthread_attr_t attr; + pthread_t thread_reader; + pthread_t thread_writer; + pthread_t *threads = tmap_calloc(driver->opt->num_threads, sizeof(pthread_t), "threads"); + tmap_map_driver_thread_data_t *thread_data=tmap_calloc(driver->opt->num_threads, sizeof(tmap_map_driver_thread_data_t), "thread_data"); tmap_map_driver_thread_io_data_t thread_io_data; + tmap_map_driver_thread_writer_data_t thread_writer_data; tmap_rand_t **rand = NULL; // random # generator for each thread - tmap_map_stats_t **stats = NULL; // alignment statistics for each thread + tmap_map_stats_t **statss = NULL; // alignment statistics for each thread #else tmap_rand_t *rand = NULL; // random # generator + tmap_map_stats_t *stats = NULL; // alignment statistics #endif time_t start_time = time (NULL); + tmap_map_stats_t* stat = tmap_map_stats_init (); // if (driver->opt->report_stats) // tmap_file_stdout = tmap_file_fdopen (fileno (stdout), "wb", TMAP_FILE_NO_COMPRESSION); // DVK - realignment #ifdef HAVE_LIBPTHREAD - struct RealignProxy** realigner = NULL; - struct RealignProxy** context = NULL; + struct RealignProxy** realigners = NULL; + struct RealignProxy** contexts = NULL; #else struct RealignProxy* realigner = NULL; struct RealignProxy* context = NULL; @@ -2071,7 +2056,7 @@ tmap_map_driver_core (tmap_map_driver_t *driver) // initialize the driver->options and print any relevant information tmap_map_driver_do_init(driver, index->refseq); if (!tmap_refseq_read_bed(index->refseq, driver->opt->bed_file, driver->opt->use_param_ovr, driver->opt->use_bed_read_ends_stat, &local_ovrs)) - tmap_error ("Bed file read error", Exit, OutOfRange ); + tmap_error ("Bed file read error", Exit, OutOfRange); if (local_ovrs && !driver->opt->realign_log) tmap_warning ("Amplicon-specific logging will have no effect since log file is not specified on command line (%s option)", "--log"); @@ -2097,17 +2082,18 @@ tmap_map_driver_core (tmap_map_driver_t *driver) #endif } records = tmap_malloc(sizeof(tmap_map_record_t*)*reads_queue_size, "records"); - bams = tmap_malloc(sizeof(tmap_map_bams_t*)*reads_queue_size, "bams"); + bams = tmap_calloc(reads_queue_size,sizeof(tmap_map_bams_t*), "bams"); + bams_to_write = tmap_calloc(reads_queue_size, sizeof(tmap_map_bams_t*), "bams_to_write"); - stat = tmap_map_stats_init(); -#ifdef HAVE_LIBPTHREAD - stats = tmap_malloc(driver->opt->num_threads * sizeof(tmap_map_stats_t*), "stats"); + #ifdef HAVE_LIBPTHREAD + statss = tmap_malloc(driver->opt->num_threads * sizeof(tmap_map_stats_t*), "statss"); rand = tmap_malloc(driver->opt->num_threads * sizeof(tmap_rand_t*), "rand"); for(i=0;iopt->num_threads;i++) { - stats[i] = tmap_map_stats_init(); + statss[i] = tmap_map_stats_init(); rand[i] = tmap_rand_init(i); } #else + stats = tmap_map_stats_init(); rand = tmap_rand_init(13); #endif @@ -2129,37 +2115,54 @@ tmap_map_driver_core (tmap_map_driver_t *driver) // Note: this needs to be initialized only if --do-realign is specified, // !!! or if --do-repeat-clip is specified, as repeat clipping uses some of the structures in realigner for data holding { + // determine if we need realigner or context + uint8_t context_needed = 0, realignment_needed = 0; + find_if_realigner_or_context_is_needed (driver->opt->do_realign, driver->opt->do_hp_weight, index->refseq->parmem, index->refseq->parmem_used, &realignment_needed, &context_needed); #ifdef HAVE_LIBPTHREAD - realigner = tmap_malloc (driver->opt->num_threads * sizeof (struct RealignProxy*), "realigner"); - context = tmap_malloc (driver->opt->num_threads * sizeof (struct RealignProxy*), "context"); + realigners = tmap_malloc (driver->opt->num_threads * sizeof (struct RealignProxy*), "realigner"); + contexts = tmap_malloc (driver->opt->num_threads * sizeof (struct RealignProxy*), "context"); for (i = 0; i != driver->opt->num_threads; ++i) { - realigner [i] = realigner_create (); - realigner_set_scores (realigner [i], driver->opt->realign_mat_score, driver->opt->realign_mis_score, driver->opt->realign_gip_score, driver->opt->realign_gep_score); - realigner_set_bandwidth (realigner [i], driver->opt->realign_bandwidth); - realigner_set_clipping (realigner [i], (enum CLIPTYPE) driver->opt->realign_cliptype); - - context [i] = context_aligner_create (); - realigner_set_scores (context [i], driver->opt->context_mat_score, driver->opt->context_mis_score, -driver->opt->context_gip_score, -driver->opt->context_gep_score); - realigner_set_bandwidth (context [i], driver->opt->context_extra_bandwidth); - realigner_set_gap_scale_mode (context [i], driver->opt->gap_scale_mode); - realigner_set_debug (context [i], driver->opt->debug_log); - if (driver->opt->debug_log && logfile) // WARNING! not a thread-safve operation. Disabled through cmd line options check for multithreaded runs - realigner_set_log (context [i], fileno (logfile)); + realigners [i] = NULL; + if (realignment_needed) + { + realigners [i] = realigner_create_spec (driver->opt->realign_maxlen, driver->opt->realign_maxclip); + realigner_set_scores (realigners [i], driver->opt->realign_mat_score, driver->opt->realign_mis_score, driver->opt->realign_gip_score, driver->opt->realign_gep_score); + realigner_set_bandwidth (realigners [i], driver->opt->realign_bandwidth); + realigner_set_clipping (realigners [i], (enum CLIPTYPE) driver->opt->realign_cliptype); + } + contexts [i] = NULL; + if (context_needed) + { + contexts [i] = context_aligner_create (); + realigner_set_scores (contexts [i], driver->opt->context_mat_score, driver->opt->context_mis_score, -driver->opt->context_gip_score, -driver->opt->context_gep_score); + realigner_set_bandwidth (contexts [i], driver->opt->context_extra_bandwidth); + realigner_set_gap_scale_mode (contexts [i], driver->opt->gap_scale_mode); + realigner_set_debug (contexts [i], driver->opt->debug_log); + if (driver->opt->debug_log && logfile) // WARNING! not a thread-safve operation. Disabled through cmd line options check for multithreaded runs + realigner_set_log (contexts [i], fileno (logfile)); + } + } +#else + realigner = NULL; + if (realignment_needed) + { + realigner = realigner_create (); + realigner_set_scores (realigner, driver->opt->realign_mat_score, driver->opt->realign_mis_score, driver->opt->realign_gip_score, driver->opt->realign_gep_score); + realigner_set_bandwidth (realigner, driver->opt->realign_bandwidth); + realigner_set_clipping (realigner, (enum CLIPTYPE) driver->opt->realign_cliptype); + } + context = NULL; + if (context_needed) + { + context = context_aligner_create (); + realigner_set_scores (context, driver->opt->context_mat_score, driver->opt->context_mis_score, driver->opt->context_gip_score, driver->opt->context_gep_score); + realigner_set_bandwidth (context, driver->opt->context_extra_bandwidth); + realigner_set_gap_scale_mode (context, driver->opt->gap_scale_mode); + realigner_set_debug (context, driver->opt->context_debug_log); + if (driver->opt->debug_log && logfile) + realigner_set_log (context, fileno (logfile)); } - #else - realigner = realigner_create (); - realigner_set_scores (realigner, driver->opt->realign_mat_score, driver->opt->realign_mis_score, driver->opt->realign_gip_score, driver->opt->realign_gep_score); - realigner_set_bandwidth (realigner, driver->opt->realign_bandwidth); - realigner_set_clipping (realigner, (enum CLIPTYPE) driver->opt->realign_cliptype); - - context = context_aligner_create (); - realigner_set_scores (context, driver->opt->context_mat_score, driver->opt->context_mis_score, driver->opt->context_gip_score, driver->opt->context_gep_score); - realigner_set_bandwidth (context, driver->opt->context_extra_bandwidth); - realigner_set_gap_scale_mode (context, driver->opt->gap_scale_mode); - realigner_set_debug (context, driver->opt->context_debug_log); - if (driver->opt->debug_log && logfile) - realigner_set_log (context, fileno (logfile)); #endif } @@ -2189,36 +2192,90 @@ tmap_map_driver_core (tmap_map_driver_t *driver) header = NULL; // pairing - seqs_buffer_length = tmap_map_driver_infer_pairing(io_in, io_out->fp->header->header, seqs_buffer, records, - bams, seqs_buffer_length, reads_queue_size, - index, driver, stat, -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - rand_core, -#endif + seqs_loaded = 1; + int writer_spawned = 0; + // main processing loop + tmap_progress_print("processing reads"); + thread_writer_data.bams = bams_to_write; + #ifdef HAVE_LIBPTHREAD - &attr, &threads, &thread_data, rand, stats, realigner, context -#endif - ); - if(0 == seqs_buffer_length) { + if (0 != sem_init(&thread_io_data.reader_trigger_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + if (0 != sem_init(&thread_io_data.reader_done_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + // launch a new thread that loads in the reads + if (0 != pthread_attr_init(&attr)) + tmap_error ("error initializing thread attribute", Exit, ThreadError); + thread_io_data.io_in = io_in; + thread_io_data.io_out = io_out; + thread_io_data.seqs_buffer_length = 0; + thread_io_data.reads_queue_size = reads_queue_size; + thread_io_data.seqs_buffer = seqs_buffer_next; + thread_io_data.dismantle = 0; + if(0 != pthread_create(&thread_reader, &attr, tmap_map_driver_thread_io_worker, &thread_io_data)) + tmap_error ("error creating threads", Exit, ThreadError); + + int32_t seqCntr=0; + + // create threads + for(int32_t i=0;iopt->num_threads;i++) + { + thread_data[i].sam_header = io_out->fp->header->header; + thread_data[i].seqs_buffer = seqs_buffer; + thread_data[i].seqs_buffer_length = seqs_buffer_length; + thread_data[i].records = records; + thread_data[i].bams = bams; + thread_data[i].index = index; + thread_data[i].driver = driver; + thread_data[i].stat = statss ? statss [i] : NULL; + thread_data[i].rand = rand [i]; + // DVK - realigner + thread_data[i].realigner = realigners [i]; + thread_data[i].context = contexts [i]; + thread_data[i].do_pairing = 0; + thread_data[i].tid = i; + thread_data[i].seqCntr = &seqCntr; + if (0 != sem_init(&thread_data[i].processor_trigger_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + if (0 != sem_init(&thread_data[i].processor_done_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + thread_data[i].dismantle = 0; + if(0 != pthread_create(&threads[i], &attr, tmap_map_driver_core_thread_worker, &thread_data[i])) + tmap_error ("error creating threads", Exit, ThreadError); + } + + // pthread_attr_init(&attr); // DK: according to pthread specs, calling pthread_init_attr on already initialized attributes has undefined behavior + //populate buffer with what's needed + thread_writer_data.seqs_buffer_length = seqs_buffer_length; + thread_writer_data.io_out = io_out; + if (0 != sem_init(&thread_writer_data.writer_trigger_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + if (0 != sem_init(&thread_writer_data.writer_done_sem,0,0)) + tmap_error ("error creating semaphore", Exit, ThreadError); + bams_to_write = bams; + bams = thread_writer_data.bams; + thread_writer_data.bams = bams_to_write; + thread_writer_data.dismantle = 0; + //spawn new writer thread + if(0 != pthread_create(&thread_writer, &attr, tmap_map_driver_thread_writer_worker, &thread_writer_data)) + tmap_error ("error creating writer thread", Exit, ThreadError); + + { tmap_progress_print("loading reads"); - seqs_buffer_length = tmap_seqs_io_read_buffer(io_in, seqs_buffer, reads_queue_size, io_out->fp->header->header); + seqs_buffer_length = tmap_seqs_io_read_buffer (io_in, seqs_buffer, reads_queue_size, io_out->fp->header->header); tmap_progress_print2("loaded %d reads", seqs_buffer_length); } - seqs_loaded = 1; - // main processing loop - tmap_progress_print("processing reads"); + tmap_map_driver_infer_pairing(seqs_buffer, records, seqs_buffer_length, driver, thread_data); + + #endif + while(1) { // get the reads if(0 == seqs_loaded) { tmap_progress_print("loading reads"); #ifdef HAVE_LIBPTHREAD - // join the thread that loads in the reads - if(0 != pthread_join((*thread_io), NULL)) { - tmap_error("error joining IO thread", Exit, ThreadError); - } - free(thread_io); - thread_io = NULL; + sem_wait(&thread_io_data.reader_done_sem); // swap buffers seqs_buffer_length = thread_io_data.seqs_buffer_length; seqs_buffer_next = seqs_buffer; // temporarily store this here @@ -2228,92 +2285,54 @@ tmap_map_driver_core (tmap_map_driver_t *driver) seqs_buffer_length = tmap_seqs_io_read_buffer (io_in, seqs_buffer, reads_queue_size, io_out->fp->header->header); #endif seqs_loaded = 1; + tmap_progress_print2("loaded %d reads", seqs_buffer_length); } if(0 == seqs_buffer_length) { // are there any more? break; } - #ifdef HAVE_LIBPTHREAD - // launch a new thread that loads in the reads - pthread_attr_init(&attr_io); - pthread_attr_setdetachstate(&attr_io, PTHREAD_CREATE_JOINABLE); - thread_io = tmap_malloc(sizeof(pthread_t), "thread_io"); - thread_io_data.io_in = io_in; - thread_io_data.io_out = io_out; - thread_io_data.seqs_buffer_length = 0; - thread_io_data.reads_queue_size = reads_queue_size; - thread_io_data.seqs_buffer = seqs_buffer_next; - if(0 != pthread_create(thread_io, &attr_io, tmap_map_driver_thread_io_worker, &thread_io_data)) { - tmap_error("error creating threads", Exit, ThreadError); + // start reading the next chunk of data + sem_post(&thread_io_data.reader_trigger_sem); + + // start processing the next chunk of sequences + seqCntr=0; + for(int32_t i=0;iopt->num_threads;i++) { + thread_data[i].seqs_buffer = seqs_buffer; + thread_data[i].seqs_buffer_length = seqs_buffer_length; + thread_data[i].bams = bams; + sem_post(&thread_data[i].processor_trigger_sem); } -#endif - // create the threads - if(0 == tmap_map_driver_create_threads(io_out->fp->header->header, seqs_buffer, records, - bams, seqs_buffer_length, index, driver, stat, -#ifdef ENABLE_TMAP_DEBUG_FUNCTIONS - rand_core, -#endif -#ifdef HAVE_LIBPTHREAD - &attr, &threads, &thread_data, rand, stats, realigner, context, -#endif - 0)) { - break; + // wait for the processing to be done + for(int32_t i=0;iopt->num_threads;i++) { + sem_wait(&thread_data[i].processor_done_sem); } - /* - if(-1 != driver->opt->reads_queue_size) { - tmap_progress_print("writing alignments"); - } - */ +#endif + - // write data - for(i=0;iopt->num_threads) { - // NB: we will write data as threads process the data. This is to - // facilitate SAM/BAM writing, which may be slow, especially for - // BAM. - int32_t tid = (i % driver->opt->num_threads); - while((*thread_data[tid].buffer_idx) <= i) { - usleep(1000*1000); // sleep - } - } -#endif - // write - for(j=0;jn;j++) { // for each end - for(k=0;kbams[j]->n;k++) { // for each hit - bam1_t *b = NULL; - b = bams[i]->bams[j]->bams[k]; // that's a lot of BAMs - if(NULL == b) tmap_bug(); - if(samwrite(io_out->fp, b) <= 0) { - tmap_error("Error writing the SAM file", Exit, WriteFileError); - } - } - } - tmap_map_bams_destroy(bams[i]); - bams[i] = NULL; + //join previous writer thread + if(writer_spawned){ + sem_wait(&thread_writer_data.writer_done_sem); } + thread_writer_data.seqs_buffer_length = seqs_buffer_length; + bams_to_write = bams; + bams = thread_writer_data.bams; + thread_writer_data.bams = bams_to_write; + sem_post(&thread_writer_data.writer_trigger_sem); -#ifdef HAVE_LIBPTHREAD - // join threads - if(1 < driver->opt->num_threads) { - // join threads - for(i=0;iopt->num_threads;i++) { - if(0 != pthread_join(threads[i], NULL)) { - tmap_error("error joining threads", Exit, ThreadError); - } - // add the stats - tmap_map_stats_add (stat, stats[i]); - tmap_map_stats_zero (stats[i]); - // free the buffer index - free(thread_data[i].buffer_idx); - } - free(threads); threads = NULL; - free(thread_data); thread_data = NULL; - free(attr); attr = NULL; + writer_spawned=1; + + // merge thread statistics + for(i=0;iopt->num_threads;i++) + { + // add the stats + tmap_map_stats_add (stat, statss[i]); + tmap_map_stats_zero (statss[i]); } + #endif // TODO: should we flush when writing SAM and processing one read at a time? @@ -2342,6 +2361,64 @@ tmap_map_driver_core (tmap_map_driver_t *driver) seqs_loaded = 0; } + if(writer_spawned){ + sem_wait(&thread_writer_data.writer_done_sem); + } + + + if(1 < driver->opt->num_threads) + { + // merge last iteration statistics? seems like this is futile; statss [i] at this time should always be zeroed + for(i=0;iopt->num_threads;i++) + { + tmap_map_stats_add (stat, statss [i]); + tmap_map_stats_zero (statss[i]); + } + } + + tmap_progress_print2 ("dismantling threads"); + // dismantle reader thread + thread_io_data.dismantle = 1; + sem_post (&thread_io_data.reader_trigger_sem); + if (0 != pthread_join (thread_reader, NULL)) + tmap_error ("error joining reader thread", Exit, ThreadError); + tmap_progress_print2 (" reader joined"); + // dismantle writer thread + thread_writer_data.dismantle = 1; + sem_post(&thread_writer_data.writer_trigger_sem); + if (0 != pthread_join (thread_writer, NULL)) + tmap_error ("error joining writer thread", Exit, ThreadError); + tmap_progress_print2 (" writer joined"); + // dismantle worker threads + for (i = 0; i < driver->opt->num_threads; ++i) + { + thread_data [i].dismantle = 1; + sem_post (&thread_data [i].processor_trigger_sem); + if (0 != pthread_join (threads [i], NULL)) + tmap_error ("error joining worker thread", Exit, ThreadError); + } + tmap_progress_print2 (" all workers joined"); + // destroy semaphores + if (0 != sem_destroy (&thread_writer_data.writer_done_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + if (0 != sem_destroy (&thread_writer_data.writer_trigger_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + for (i = 0; i < driver->opt->num_threads; ++i) + { + if (0 != sem_destroy (&thread_data [i].processor_done_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + if (0 != sem_destroy (&thread_data [i].processor_trigger_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + } + if (0 != sem_destroy (&thread_io_data.reader_done_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + if (0 != sem_destroy (&thread_io_data.reader_trigger_sem)) + tmap_error ("error destroying semaphore", Exit, ThreadError); + tmap_progress_print2 (" semaphores dismantled"); + if (0 != pthread_attr_destroy (&attr)) + tmap_error ("error destroying thread attributes", Exit, ThreadError); + tmap_progress_print2 (" thread attributes dismantled"); + if(-1 == driver->opt->reads_queue_size) { tmap_progress_print2("processed %d reads", n_reads_processed); @@ -2504,7 +2581,7 @@ tmap_map_driver_core (tmap_map_driver_t *driver) tmap_file_fprintf (tmap_file_stderr, " Ends repaired: %8llu %8llu\n", stat->ends_REPAiRed [0], stat->ends_REPAiRed [1]); - tmap_file_fprintf (tmap_file_stderr, " Ends clipped: %8llu %8llu\n", + tmap_file_fprintf (tmap_file_stderr, " Ends clipped: %8llu %8llu\n", stat->ends_REPAiR_clipped [0], stat->ends_REPAiR_clipped [1]); tmap_file_fprintf (tmap_file_stderr, " Ends extended: %8llu %8llu\n", @@ -2530,24 +2607,24 @@ tmap_map_driver_core (tmap_map_driver_t *driver) tmap_file_fprintf (tmap_file_stderr, "No tail repeat clipping performed\n"); else { - tmap_file_fprintf (tmap_file_stderr, " Alignments tail-clipped: %llu", stat->num_tailclipped); + tmap_file_fprintf (tmap_file_stderr, "Alignments tail-clipped: %llu", stat->num_tailclipped); if (stat->num_seen_tailclipped) - tmap_file_fprintf (tmap_file_stderr, " (%.2f%% seen)", ((double) stat->num_tailclipped) * 100 / stat->num_seen_tailclipped); - tmap_file_fprintf (tmap_file_stderr, "\n"); - tmap_file_fprintf (tmap_file_stderr, " Tail-clipped bases: %llu", stat->bases_tailclipped); + tmap_file_fprintf (tmap_file_stderr, " (%.2f%% seen)", ((double) stat->num_tailclipped) * 100 / stat->num_seen_tailclipped); + tmap_file_fprintf (tmap_file_stderr, "\n"); + tmap_file_fprintf (tmap_file_stderr, " Tail-clipped bases: %llu", stat->bases_tailclipped); if (stat->bases_seen_tailclipped) - tmap_file_fprintf (tmap_file_stderr, " (%.2f%% seen)", ((double) stat->bases_tailclipped) * 100 / stat->bases_seen_tailclipped); - tmap_file_fprintf (tmap_file_stderr, "\n"); - tmap_file_fprintf (tmap_file_stderr, "Completely clipped reads: %llu", stat->num_fully_tailclipped); + tmap_file_fprintf (tmap_file_stderr, " (%.2f%% seen)", ((double) stat->bases_tailclipped) * 100 / stat->bases_seen_tailclipped); + tmap_file_fprintf (tmap_file_stderr, "\n"); + tmap_file_fprintf (tmap_file_stderr, " Fully clipped reads: %llu", stat->num_fully_tailclipped); if (stat->num_seen_tailclipped) - tmap_file_fprintf (tmap_file_stderr, " (%.2f%% clipped)", ((double) stat->num_fully_tailclipped) * 100 / stat->num_tailclipped); - tmap_file_fprintf (tmap_file_stderr, ", contain %llu bases", stat->bases_fully_tailclipped); + tmap_file_fprintf (tmap_file_stderr, " (%.2f%% clipped)", ((double) stat->num_fully_tailclipped) * 100 / stat->num_tailclipped); + tmap_file_fprintf (tmap_file_stderr, ", contain %llu bases", stat->bases_fully_tailclipped); if (stat->bases_tailclipped) - tmap_file_fprintf (tmap_file_stderr, " (%.2f%% clipped)", ((double) stat->bases_fully_tailclipped) * 100 / stat->bases_tailclipped); - tmap_file_fprintf (tmap_file_stderr, "\n"); + tmap_file_fprintf (tmap_file_stderr, " (%.2f%% clipped)", ((double) stat->bases_fully_tailclipped) * 100 / stat->bases_tailclipped); + tmap_file_fprintf (tmap_file_stderr, "\n"); if (stat->num_seen_tailclipped) { - tmap_file_fprintf (tmap_file_stderr, " Average bases clipped:\n"); + tmap_file_fprintf (tmap_file_stderr, " Average bases clipped:\n"); tmap_file_fprintf (tmap_file_stderr, " per read: %.1f\n", ((double) stat->bases_tailclipped) / stat->num_seen_tailclipped); if (stat->num_tailclipped) tmap_file_fprintf (tmap_file_stderr, " per clipped read: %.1f\n", ((double) stat->bases_tailclipped) / stat->num_tailclipped); @@ -2559,7 +2636,31 @@ tmap_map_driver_core (tmap_map_driver_t *driver) tmap_file_fprintf (tmap_file_stderr, "No alignment filtering performed\n"); else { - tmap_file_fprintf (tmap_file_stderr, " Filtered alignments: %llu\n", stat->num_filtered_als); + tmap_file_fprintf (tmap_file_stderr, "Filtered alignments: %llu\n", stat->num_filtered_als); + } + tmap_file_fprintf (tmap_file_stderr, "Candidate evaluation stats:\n"); + + tmap_file_fprintf (tmap_file_stderr, " Primary VSW (S#%d) calls: %llu\n", driver->opt->vsw_type, stat->vect_sw_calls); + tmap_file_fprintf (tmap_file_stderr, " Fallback VSW (S#%d) calls: %llu\n", driver->opt->vsw_fallback, stat->fallback_vsw_calls); + tmap_file_fprintf (tmap_file_stderr, " Fallback N-VSW (S#2) calls: %llu\n", stat->fallback_sw_calls); + tmap_file_fprintf (tmap_file_stderr, " DP matrix extensions: %llu\n", stat->read_clipping_extensions); + tmap_file_fprintf (tmap_file_stderr, " VSW overflows: %llu\n", stat->overflows); + tmap_file_fprintf (tmap_file_stderr, " VSW failures: %llu\n", stat->vswfails); + tmap_file_fprintf (tmap_file_stderr, " Total SW failures: %llu\n", stat->totswfails); + if (driver->opt->vsw_type == 4) + { + tmap_file_fprintf (tmap_file_stderr, " Non-standard base fallbacks in forward scoring: %llu\n", stat->nonstd_base_fallbacks_fwd); + tmap_file_fprintf (tmap_file_stderr, " Non-standard base fallbacks in reverse scoring: %llu\n", stat->nonstd_base_fallbacks_rev); + } + tmap_file_fprintf (tmap_file_stderr, " Symmetrically scored VSW: %llu\n", stat->symmetric_scores); + tmap_file_fprintf (tmap_file_stderr, " Corrected asymmetries: %llu\n", stat->asymmetric_scores_corrected); + tmap_file_fprintf (tmap_file_stderr, " Unrecoverable asymmetries %llu\n", stat->asymmetric_scores_failed); + if (index->refseq->bed_exist && driver->opt->use_param_ovr && driver->opt->ovr_candeval) + { + tmap_file_fprintf (tmap_file_stderr, " Amplicon searches: %llu, successful %llu, failed %llu\n", stat->amplicon_searches, stat->amplicon_search_successes, stat->amplicon_searches - stat->amplicon_search_successes); + tmap_file_fprintf (tmap_file_stderr, " Multi-amplicon overlaps: %llu\n", stat->amplicon_overlaps); + tmap_file_fprintf (tmap_file_stderr, " Overrides used: %llu\n", stat->candeval_overrides); + tmap_file_fprintf (tmap_file_stderr, " Multiple overrides %llu\n", stat->multiple_candeval_overrides); } } @@ -2590,11 +2691,13 @@ tmap_map_driver_core (tmap_map_driver_t *driver) #ifdef HAVE_LIBPTHREAD for (i = 0; i != driver->opt->num_threads; ++i) { - realigner_destroy (realigner [i]); - realigner_destroy (context [i]); + if(realigners [i]) + realigner_destroy (realigners [i]); + if (contexts [i]) + realigner_destroy (contexts [i]); } - free (realigner); - free (context); + free (realigners); + free (contexts); #else realigner_destroy (realigner); @@ -2607,17 +2710,20 @@ tmap_map_driver_core (tmap_map_driver_t *driver) free(records); free(bams); - tmap_map_stats_destroy(stat); + free(bams_to_write); + tmap_map_stats_destroy (stat); #ifdef HAVE_LIBPTHREAD for(i=0;iopt->num_threads;i++) { - tmap_map_stats_destroy(stats[i]); - tmap_rand_destroy(rand[i]); + tmap_map_stats_destroy (statss [i]); + tmap_rand_destroy (rand[i]); } - free(stats); - free(rand); - free(thread_io); + free (statss); + free (rand); + free (thread_data); + free (threads); #else - tmap_rand_destroy(rand); + tmap_rand_destroy (rand); + tmap_map_stats_destroy (stats); #endif #ifdef ENABLE_TMAP_DEBUG_FUNCTIONS tmap_rand_destroy(rand_core); diff --git a/Analysis/TMAP/src/map/tmap_map_driver.h b/Analysis/TMAP/src/map/tmap_map_driver.h index 794ec777..4daaab61 100644 --- a/Analysis/TMAP/src/map/tmap_map_driver.h +++ b/Analysis/TMAP/src/map/tmap_map_driver.h @@ -154,66 +154,6 @@ tmap_map_driver_run(tmap_map_driver_t *driver); void tmap_map_driver_destroy(tmap_map_driver_t *driver); -/*! - Driver data to be passed to a thread - */ -typedef struct { - sam_header_t *sam_header; /*!< the SAM Header */ - tmap_seqs_t **seqs_buffer; /*!< the buffers of sequences */ - int32_t seqs_buffer_length; /*!< the buffers length */ - int32_t *buffer_idx; /*!< the current zero-based index into the buffer */ - tmap_map_record_t **records; /*!< the alignments for each sequence */ - tmap_map_bams_t **bams; /*!< the BAM alignments for each sequence */ - tmap_index_t *index; /*!< pointer to the reference index */ - tmap_map_driver_t *driver; /*!< the main driver object */ - tmap_map_stats_t *stat; /*!< the driver statistics */ - tmap_rand_t *rand; /*!< the random number generator */ - // DVK - realigner - struct RealignProxy *realigner; /*!< post-processing realigner engine */ - struct RealignProxy *context; /*!< post-processing context-dependent realignment engine */ - int32_t do_pairing; /*!< 1 if we are performing pairing paramter calculation, 0 otherwise */ - int32_t tid; /*!< the zero-based thread id */ -} tmap_map_driver_thread_data_t; - -/*! - The core worker routine of mapall - @param sam_header the SAM Header - @param seqs_buffer the buffer of sequences - @param records the records to return - @param bams the bams to return - @param seqs_buffer_length the number of sequences in the buffer - @param buffer_idx the current zero-based index into the buffer - @param index the reference index - @param driver the driver - @param stat the driver statistics - @param rand the random number generator - @param do_pairing 1 if we are performing pairing paramter calculation, 0 otherwise - @param tid the thread ids - */ -void -tmap_map_driver_core_worker(sam_header_t *sam_header, - tmap_seqs_t **seqs_buffer, - tmap_map_record_t **records, - tmap_map_bams_t **bams, - int32_t seqs_buffer_length, - int32_t *buffer_idx, - tmap_index_t *index, - tmap_map_driver_t *driver, - tmap_map_stats_t* stat, - tmap_rand_t *rand, - // DVK - realign - struct RealignProxy *realigner, - struct RealignProxy *context, - int32_t do_pairing, - int32_t tid); - -/*! - A wrapper around the core function of mapall - @param arg the worker arguments in the type: tmap_map_driver_thread_data_t - @return the worker arguments - */ -void * -tmap_map_driver_core_thread_worker(void *arg); /*! the core routine for mapping data with or without threads diff --git a/Analysis/TMAP/src/map/util/tmap_map_locopt.c b/Analysis/TMAP/src/map/util/tmap_map_locopt.c index 896fab5e..b9ec303c 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_locopt.c +++ b/Analysis/TMAP/src/map/util/tmap_map_locopt.c @@ -13,6 +13,7 @@ void tmap_map_locopt_init (tmap_map_locopt_t* locopt) locopt->gapl_len.over = 0; locopt->bw.over = 0; locopt->softclip_type.over = 0; + locopt->score_thr.over = 0; locopt->end_repair.over = 0; locopt->end_repair_he.over = 0; locopt->end_repair_le.over = 0; diff --git a/Analysis/TMAP/src/map/util/tmap_map_locopt.h b/Analysis/TMAP/src/map/util/tmap_map_locopt.h index aaf6dd0e..2846bad9 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_locopt.h +++ b/Analysis/TMAP/src/map/util/tmap_map_locopt.h @@ -38,6 +38,7 @@ typedef struct __tmap_map_locopt_t tmap_map_opt_ovr_i_t gapl_len; /*!< the number of extra bases to add when searching for long indels (-K, --gap-long-length) */ tmap_map_opt_ovr_i_t bw; /*!< the extra bases to add before and after the target during Smith-Waterman (-w,--band-width) */ tmap_map_opt_ovr_i_t softclip_type; /*!< soft clip type (-g,--softclip-type) */ + tmap_map_opt_ovr_i_t score_thr; /*!< the score threshold (match-score-scaled) (-T,--score-thres) */ tmap_map_opt_ovr_i_t end_repair; // /*!< specifies if and how to perform end repair on higher coordinate end of the amplicon (0 - disabled, 1 - prefer mismatches, 2 - prefer indels) (--end-repair) */ tmap_map_opt_ovr_i_t end_repair_he; // /*!< specifies to perform 5' end repair on higher coordinate end of the amplicon (0 - disabled, 1 - prefer mismatches, 2 - prefer indels) (--end-repair) */ tmap_map_opt_ovr_i_t end_repair_le; /*!< specifies to perform 5' end repair on lower coordinate end of the amplicon (0 - disabled, 1 - prefer mismatches, 2 - prefer indels) (--end-repair) */ diff --git a/Analysis/TMAP/src/map/util/tmap_map_opt.c b/Analysis/TMAP/src/map/util/tmap_map_opt.c index bcad6d68..79f37e85 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_opt.c +++ b/Analysis/TMAP/src/map/util/tmap_map_opt.c @@ -110,10 +110,11 @@ static char *tmap_map_opt_input_types[] = {"INT", "FLOAT", "NUM", "FILE", "STRIN #define __tmap_map_opt_option_print_func_tf_init(_name) \ static void tmap_map_opt_option_print_func_##_name(void *arg) { \ tmap_map_opt_t *opt = (tmap_map_opt_t*)arg; \ - tmap_file_fprintf(tmap_file_stderr, "%s[%s%s%s]%s", KMAG, KYEL, (1 == opt->_name) ? "true" : "false", KMAG, KNRM); \ + /* tmap_file_fprintf(tmap_file_stderr, "%s[%s%s%s]%s", KMAG, KYEL, (1 == opt->_name) ? "true" : "false", KMAG, KNRM); */ \ } -// verbosity + + // verbosity #define __tmap_map_opt_option_print_func_verbosity_init() \ static void tmap_map_opt_option_print_func_verbosity(void *arg) { \ tmap_file_fprintf(tmap_file_stderr, "%s[%s%s%s]%s", KMAG, KYEL, (1 == tmap_progress_get_verbosity()) ? "true" : "false", KMAG, KNRM); \ @@ -188,9 +189,11 @@ __tmap_map_opt_option_print_func_chars_init(fn_sam, "stdout") __tmap_map_opt_option_print_func_int64_init(bam_start_vfo) __tmap_map_opt_option_print_func_int64_init(bam_end_vfo) __tmap_map_opt_option_print_func_tf_init(use_param_ovr) +__tmap_map_opt_option_print_func_tf_init(ovr_candeval) __tmap_map_opt_option_print_func_tf_init(use_bed_in_end_repair) __tmap_map_opt_option_print_func_tf_init(use_bed_in_mapq) __tmap_map_opt_option_print_func_tf_init(use_bed_read_ends_stat) +__tmap_map_opt_option_print_func_int_init(amplicon_scope) __tmap_map_opt_option_print_func_int_init(score_match) __tmap_map_opt_option_print_func_int_init(pen_mm) __tmap_map_opt_option_print_func_int_init(pen_gapo) @@ -232,11 +235,19 @@ __tmap_map_opt_option_print_func_double_init(repair_identity_drop_limit) __tmap_map_opt_option_print_func_int_init(repair_max_primer_zone_dist) __tmap_map_opt_option_print_func_int_init(repair_clip_ext) + + __tmap_map_opt_option_print_func_int_init(shm_key) #ifdef ENABLE_TMAP_DEBUG_FUNCTIONS __tmap_map_opt_option_print_func_double_init(sample_reads) #endif __tmap_map_opt_option_print_func_int_init(vsw_type) +__tmap_map_opt_option_print_func_int_init(vsw_fallback) +__tmap_map_opt_option_print_func_tf_init(confirm_vsw_corr) +__tmap_map_opt_option_print_func_tf_init(candidate_ext) +__tmap_map_opt_option_print_func_tf_init(correct_failed_vsw) +__tmap_map_opt_option_print_func_tf_init(use_nvsw_on_nonstd_bases) + __tmap_map_opt_option_print_func_verbosity_init() __tmap_map_opt_option_print_func_tf_init(do_realign) @@ -246,6 +257,8 @@ __tmap_map_opt_option_print_func_int_init(realign_gip_score) __tmap_map_opt_option_print_func_int_init(realign_gep_score) __tmap_map_opt_option_print_func_int_init(realign_bandwidth) __tmap_map_opt_option_print_func_int_init(realign_cliptype) +__tmap_map_opt_option_print_func_int_init(realign_maxlen) +__tmap_map_opt_option_print_func_int_init(realign_maxclip) __tmap_map_opt_option_print_func_tf_init(report_stats) __tmap_map_opt_option_print_func_chars_init(realign_log, "") @@ -513,7 +526,7 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) "3 - all alignments", NULL}; static char *vsw_type[] = { - "NB: currently only #1, #4, and #6 have been tested", + "NB: currently only #1, #2, #4, and #6 have been tested", "1 - lh3/ksw.c/nh13", "2 - simple VSW", "3 - SHRiMP2 VSW [not working]", @@ -605,6 +618,12 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) NULL, tmap_map_opt_option_print_func_use_param_ovr, TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "ovr-candeval", no_argument, 0, 0, + TMAP_MAP_OPT_TYPE_NONE, + "use location-specific parameters overriding at candidate evaluation stage", + NULL, + tmap_map_opt_option_print_func_ovr_candeval, + TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "no-bed-er", no_argument, 0, 0, TMAP_MAP_OPT_TYPE_NONE, "use of amplicon edge coordinates from BED file in end repair", @@ -623,6 +642,12 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) NULL, tmap_map_opt_option_print_func_use_bed_read_ends_stat, TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "ampl-scope", required_argument, 0, 0, + TMAP_MAP_OPT_TYPE_INT, + "read padding used for amplicon search", + NULL, + tmap_map_opt_option_print_func_amplicon_scope, + TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "score-match", required_argument, 0, 'A', TMAP_MAP_OPT_TYPE_INT, "score for a match", @@ -750,11 +775,11 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) tmap_map_opt_option_print_func_rand_read_name, TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "prefix-exclude", required_argument, 0, 0, - TMAP_MAP_OPT_TYPE_INT, - "specify how many letters of prefix of name to be excluded when do randomize by name", - NULL, - tmap_map_opt_option_print_func_prefix_exclude, - TMAP_MAP_ALGO_GLOBAL); + TMAP_MAP_OPT_TYPE_INT, + "specify how many letters of prefix of name to be excluded when do randomize by name", + NULL, + tmap_map_opt_option_print_func_prefix_exclude, + TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "suffix-exclude", required_argument, 0, 0, TMAP_MAP_OPT_TYPE_INT, "specify how many letters of suffix of name to be excluded when do randomize by name", @@ -887,6 +912,36 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) vsw_type, tmap_map_opt_option_print_func_vsw_type, TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "vsw-fallback", required_argument, 0, 'H', + TMAP_MAP_OPT_TYPE_INT, + "the fallback vectorized smith-waterman algorithm", + NULL, + tmap_map_opt_option_print_func_vsw_fallback, + TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "confirm-vsw-corr", no_argument, 0, 0, + TMAP_MAP_OPT_TYPE_NONE, + "confirm corrections of assymetric VSW scores with standard SW", + NULL, + tmap_map_opt_option_print_func_confirm_vsw_corr, + TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "no-candidate-ext", no_argument, 0, 0, + TMAP_MAP_OPT_TYPE_NONE, + "do not extend reference zone for partially aligned candidates", + NULL, + tmap_map_opt_option_print_func_candidate_ext, + TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "no-vsw-fallback", no_argument, 0, 0, + TMAP_MAP_OPT_TYPE_NONE, + "do not use fallback alignment method if primary method fails", + NULL, + tmap_map_opt_option_print_func_correct_failed_vsw, + TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "no-nonstd-bases", no_argument, 0, 0, + TMAP_MAP_OPT_TYPE_NONE, + "do not process candidate locations containing non-standard nucleotides", + NULL, + tmap_map_opt_option_print_func_use_nvsw_on_nonstd_bases, + TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "help", no_argument, 0, 'h', TMAP_MAP_OPT_TYPE_NONE, "print this message", @@ -943,6 +998,18 @@ tmap_map_opt_init_helper(tmap_map_opt_t *opt) realignment_clip_type, tmap_map_opt_option_print_func_realign_cliptype, TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "r-maxlen", required_argument, 0, 0, + TMAP_MAP_OPT_TYPE_INT, + "realignment maximal supported sequence length", + NULL, + tmap_map_opt_option_print_func_realign_maxlen, + TMAP_MAP_ALGO_GLOBAL); + tmap_map_opt_options_add(opt->options, "r-maxclip", required_argument, 0, 0, + TMAP_MAP_OPT_TYPE_INT, + "realignment maximal supported clip length", + NULL, + tmap_map_opt_option_print_func_realign_maxclip, + TMAP_MAP_ALGO_GLOBAL); tmap_map_opt_options_add(opt->options, "stats", no_argument, 0, 0, TMAP_MAP_OPT_TYPE_NONE, @@ -1491,9 +1558,11 @@ tmap_map_opt_init(int32_t algo_id) opt->bam_start_vfo = 0; opt->bam_end_vfo = 0; opt->use_param_ovr = 0; + opt->ovr_candeval = 0; opt->use_bed_in_end_repair = 1; opt->use_bed_in_mapq = 1; opt->use_bed_read_ends_stat = 0; + opt->amplicon_scope = TMAP_MAP_OPT_AMPLICON_SCOPE; opt->score_match = TMAP_MAP_OPT_SCORE_MATCH; opt->pen_mm = TMAP_MAP_OPT_PEN_MM; opt->pen_gapo = TMAP_MAP_OPT_PEN_GAPO; @@ -1507,7 +1576,7 @@ tmap_map_opt_init(int32_t algo_id) opt->unroll_banding = 0; opt->long_hit_mult = 3.0; opt->score_thr = 8; - opt->reads_queue_size = 262144; + opt->reads_queue_size = 65535; opt->num_threads = tmap_detect_cpus(); opt->num_threads_autodetected = 1; opt->aln_output_mode = TMAP_MAP_OPT_ALN_MODE_RAND_BEST; @@ -1539,6 +1608,11 @@ tmap_map_opt_init(int32_t algo_id) opt->sample_reads = 1.0; #endif opt->vsw_type = 4; + opt->vsw_fallback = 1; + opt->confirm_vsw_corr = 0; + opt->candidate_ext = 1; + opt->correct_failed_vsw = 1; + opt->use_nvsw_on_nonstd_bases = 1; opt->do_realign = 0; opt->realign_mat_score = TMAP_MAP_OPT_REALIGN_SCORE_MATCH; @@ -1547,6 +1621,8 @@ tmap_map_opt_init(int32_t algo_id) opt->realign_gep_score = TMAP_MAP_OPT_REALIGN_SCORE_GE; opt->realign_bandwidth = TMAP_MAP_OPT_REALIGN_BW; opt->realign_cliptype = 2; + opt->realign_maxlen = TMAP_MAP_OPT_REALIGN_MAXLEN; + opt->realign_maxclip = TMAP_MAP_OPT_REALIGN_MAXCLIP; opt->report_stats = 0; opt->realign_log = NULL; // tail repeat clipping @@ -1925,9 +2001,12 @@ tmap_map_opt_parse(int argc, char *argv[], tmap_map_opt_t *opt) else if(0 == c && 0 == strcmp("bam-end-vfo", options[option_index].name)) { opt->bam_end_vfo = strtol(optarg,NULL,0); } - else if((0 == c && 0 == strcmp("par-ovr", options[option_index].name))) { + else if(0 == c && 0 == strcmp("par-ovr", options[option_index].name)) { opt->use_param_ovr = 1; } + else if(0 == c && 0 == strcmp("ovr-candeval", options[option_index].name)) { + opt->ovr_candeval = 1; + } else if((0 == c && 0 == strcmp("no-bed-er", options[option_index].name))) { opt->use_bed_in_end_repair = 0; } @@ -1937,6 +2016,9 @@ tmap_map_opt_parse(int argc, char *argv[], tmap_map_opt_t *opt) else if((0 == c && 0 == strcmp("repair", options[option_index].name))) { opt->use_bed_read_ends_stat = 1; } + else if (0 == c && 0 == strcmp("ampl-scope", options[option_index].name)) { + opt->amplicon_scope = atoi(optarg); + } else if(c == 'A' || (0 == c && 0 == strcmp("score-match", options[option_index].name))) { opt->score_match = atoi(optarg); } @@ -1958,6 +2040,21 @@ tmap_map_opt_parse(int argc, char *argv[], tmap_map_opt_t *opt) else if(c == 'H' || (0 == c && 0 == strcmp("vsw-type", options[option_index].name))) { opt->vsw_type = atoi(optarg); } + else if(0 == c && 0 == strcmp("vsw-fallback", options[option_index].name)) { + opt->vsw_fallback = atoi(optarg); + } + else if(0 == c && 0 == strcmp("confirm-vsw-corr", options[option_index].name)) { + opt->confirm_vsw_corr = 1; + } + else if(0 == c && 0 == strcmp("no-candidate-ext", options[option_index].name)) { + opt->candidate_ext = 0; + } + else if(0 == c && 0 == strcmp("no-vsw-fallback", options[option_index].name)) { + opt->correct_failed_vsw = 0; + } + else if(0 == c && 0 == strcmp("no-nonstd-bases", options[option_index].name)) { + opt->use_nvsw_on_nonstd_bases = 0; + } else if(c == 'I' || (0 == c && 0 == strcmp("use-seq-equal", options[option_index].name))) { opt->seq_eq = 1; } @@ -2117,6 +2214,12 @@ tmap_map_opt_parse(int argc, char *argv[], tmap_map_opt_t *opt) else if (0 == c && 0 == strcmp ("r-clip", options [option_index].name)) { opt->realign_cliptype = atoi (optarg); } + else if (0 == c && 0 == strcmp ("r-maxlen", options [option_index].name)) { + opt->realign_maxlen = atoi (optarg); + } + else if (0 == c && 0 == strcmp ("r-maxclip", options [option_index].name)) { + opt->realign_maxclip = atoi (optarg); + } else if (0 == c && 0 == strcmp ("stats", options [option_index].name)) { opt->report_stats = 1; } @@ -2460,25 +2563,25 @@ tmap_map_opt_check_global(tmap_map_opt_t *opt_a, tmap_map_opt_t *opt_b) tmap_error("option -A was specified outside of the common options", Exit, CommandLineArgument); } if(opt_a->pen_mm != opt_b->pen_mm) { - tmap_error("option -M was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -M was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->pen_gapo != opt_b->pen_gapo) { - tmap_error("option -O was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -O was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->pen_gape != opt_b->pen_gape) { - tmap_error("option -E was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -E was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->pen_gapl != opt_b->pen_gapl) { - tmap_error("option -G was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -G was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->gapl_len != opt_b->gapl_len) { - tmap_error("option -K was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -K was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->bw != opt_b->bw) { - tmap_error("option -w was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -w was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->softclip_type != opt_b->softclip_type) { - tmap_error("option -g was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -g was specified outside of the common options", Warn, CommandLineArgument); } if(opt_a->dup_window != opt_b->dup_window) { tmap_error("option -W was specified outside of the common options", Exit, CommandLineArgument); @@ -2490,7 +2593,7 @@ tmap_map_opt_check_global(tmap_map_opt_t *opt_a, tmap_map_opt_t *opt_b) tmap_error("option -U was specified outside of the common options", Exit, CommandLineArgument); } if(opt_a->score_thr != opt_b->score_thr) { - tmap_error("option -T was specified outside of the common options", Exit, CommandLineArgument); + tmap_error("option -T was specified outside of the common options", Exit, CommandLineArgument); } if(opt_a->reads_queue_size != opt_b->reads_queue_size) { tmap_error("option -q was specified outside of the common options", Exit, CommandLineArgument); @@ -2530,6 +2633,9 @@ tmap_map_opt_check_global(tmap_map_opt_t *opt_a, tmap_map_opt_t *opt_b) if(opt_a->vsw_type != opt_b->vsw_type) { tmap_error("option -H was specified outside of the common options", Exit, CommandLineArgument); } + if(opt_a->vsw_fallback != opt_b->vsw_fallback) { + tmap_error("option --vsw-fallback was specified outside of the common options", Exit, CommandLineArgument); + } if(opt_a->long_hit_mult != opt_b->long_hit_mult) { tmap_error("option --long-hit-mult was specified outside of the common options", Exit, CommandLineArgument); } @@ -2668,9 +2774,15 @@ tmap_map_opt_check(tmap_map_opt_t *opt) tmap_error_cmd_check_int64(opt->bam_start_vfo, 0, INT64_MAX, "--bam-start-vfo"); tmap_error_cmd_check_int64(opt->bam_end_vfo, 0, INT64_MAX, "--bam-end-vfo"); tmap_error_cmd_check_int(opt->use_param_ovr, 0, 1, "--par-ovr"); + tmap_error_cmd_check_int(opt->ovr_candeval, 0, 1, "--ovr-candeval"); + tmap_error_cmd_check_int(opt->confirm_vsw_corr, 0, 1, "--confirm-vsw-corr"); + tmap_error_cmd_check_int(opt->candidate_ext, 0, 1, "--no-candidate-ext"); + tmap_error_cmd_check_int(opt->correct_failed_vsw, 0, 1, "--no-err-fallback"); + tmap_error_cmd_check_int(opt->use_nvsw_on_nonstd_bases, 0, 1, "--no-nonstd-bases"); tmap_error_cmd_check_int(opt->use_bed_in_end_repair, 0, 1, "--no-bed-er"); tmap_error_cmd_check_int(opt->use_bed_in_mapq, 0, 1, "--no-bed-mapq"); tmap_error_cmd_check_int(opt->use_bed_read_ends_stat, 0, 1, "--repair"); + tmap_error_cmd_check_int(opt->amplicon_scope, 0, INT32_MAX, "--ampl-scope"); tmap_error_cmd_check_int(opt->score_match, 1, INT32_MAX, "-A"); tmap_error_cmd_check_int(opt->pen_mm, 1, INT32_MAX, "-M"); tmap_error_cmd_check_int(opt->pen_gapo, 1, INT32_MAX, "-O"); @@ -2722,6 +2834,7 @@ tmap_map_opt_check(tmap_map_opt_t *opt) // Warn users switch(opt->vsw_type) { case 1: + case 2: case 4: case 6: break; @@ -2729,7 +2842,18 @@ tmap_map_opt_check(tmap_map_opt_t *opt) tmap_error("the option -H value has not been extensively tested; proceed with caution", Warn, CommandLineArgument); break; } - + tmap_error_cmd_check_int(opt->vsw_fallback, 1, 10, "-H"); + // Warn users + switch(opt->vsw_fallback) { + case 1: + case 2: + case 4: + case 6: + break; + default: + tmap_error("the option --vsw-fallback value has not been extensively tested; proceed with caution", Warn, CommandLineArgument); + break; + } // flowspace options tmap_error_cmd_check_int(opt->fscore, 0, INT32_MAX, "-X"); tmap_error_cmd_check_int(opt->softclip_key, 0, 1, "-y"); @@ -2758,6 +2882,8 @@ tmap_map_opt_check(tmap_map_opt_t *opt) tmap_error_cmd_check_int(opt->realign_gep_score, -127, 128, "--r-gep"); tmap_error_cmd_check_int(opt->realign_bandwidth, 0, 256, "--r-bw"); tmap_error_cmd_check_int(opt->realign_cliptype, 0, 4, "--r-clip"); + tmap_error_cmd_check_int(opt->realign_maxlen, 0, 4096, "--r-maxlen"); + tmap_error_cmd_check_int(opt->realign_maxclip, 0, 256, "--r-maxclip"); // stats report tmap_error_cmd_check_int(opt->report_stats, 0, 1, "--stats"); @@ -2902,9 +3028,15 @@ tmap_map_opt_copy_global(tmap_map_opt_t *opt_dest, tmap_map_opt_t *opt_src) opt_dest->bam_start_vfo = opt_src->bam_start_vfo; opt_dest->bam_end_vfo = opt_src->bam_end_vfo; opt_dest->use_param_ovr = opt_src->use_param_ovr; + opt_dest->confirm_vsw_corr = opt_src->confirm_vsw_corr; + opt_dest->candidate_ext = opt_src->candidate_ext; + opt_dest->correct_failed_vsw = opt_src->correct_failed_vsw; + opt_dest->use_nvsw_on_nonstd_bases= opt_src->use_nvsw_on_nonstd_bases; + opt_dest->ovr_candeval = opt_src->ovr_candeval; opt_dest->use_bed_in_end_repair = opt_src->use_bed_in_end_repair; opt_dest->use_bed_in_mapq = opt_src->use_bed_in_mapq; opt_dest->use_bed_read_ends_stat = opt_src->use_bed_read_ends_stat; + opt_dest->amplicon_scope = opt_src->amplicon_scope; opt_dest->score_match = opt_src->score_match; opt_dest->pen_mm = opt_src->pen_mm; opt_dest->pen_gapo = opt_src->pen_gapo; @@ -2958,6 +3090,7 @@ tmap_map_opt_copy_global(tmap_map_opt_t *opt_dest, tmap_map_opt_t *opt_src) opt_dest->sample_reads = opt_src->sample_reads; #endif opt_dest->vsw_type = opt_src->vsw_type; + opt_dest->vsw_fallback = opt_src->vsw_fallback; // realignment control opt_dest->do_realign = opt_src->do_realign; @@ -3037,9 +3170,11 @@ tmap_map_opt_print(tmap_map_opt_t *opt) fprintf(stderr, "bam_start_vfo=%ld\n", opt->bam_start_vfo); fprintf(stderr, "bam_end_vfo=%ld\n", opt->bam_end_vfo); fprintf(stderr, "use_param_ovr=%d\n", opt->use_param_ovr); + fprintf(stderr, "ovr_candeval=%d\n", opt->ovr_candeval); fprintf(stderr, "use_bed_in_end_repair=%d\n", opt->use_bed_in_end_repair); fprintf(stderr, "use_bed_in_mapq=%d\n", opt->use_bed_in_mapq); fprintf(stderr, "use_bed_read_ends_stat=%d\n", opt->use_bed_read_ends_stat); + fprintf(stderr, "amplicon_scope=%d\n", opt->amplicon_scope); fprintf(stderr, "score_match=%d\n", opt->score_match); fprintf(stderr, "pen_mm=%d\n", opt->pen_mm); fprintf(stderr, "pen_gapo=%d\n", opt->pen_gapo); @@ -3089,6 +3224,11 @@ tmap_map_opt_print(tmap_map_opt_t *opt) fprintf(stderr, "sample_reads=%lf\n", opt->sample_reads); #endif fprintf(stderr, "vsw_type=%d\n", opt->vsw_type); + fprintf(stderr, "vsw_fallback=%d\n", opt->vsw_fallback); + fprintf(stderr, "confirm_vsw_corr=%d\n", opt->confirm_vsw_corr); + fprintf(stderr, "candidate_ext=%d\n", opt->candidate_ext); + fprintf(stderr, "correct_failed_vsw=%d\n", opt->correct_failed_vsw); + fprintf(stderr, "use_nvsw_on_nonstd_bases=%d\n", opt->use_nvsw_on_nonstd_bases); fprintf(stderr, "min_seq_len=%d\n", opt->min_seq_len); fprintf(stderr, "max_seq_len=%d\n", opt->max_seq_len); fprintf(stderr, "seed_length=%d\n", opt->seed_length); diff --git a/Analysis/TMAP/src/map/util/tmap_map_opt.h b/Analysis/TMAP/src/map/util/tmap_map_opt.h index 1b63625e..f580b2f3 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_opt.h +++ b/Analysis/TMAP/src/map/util/tmap_map_opt.h @@ -17,6 +17,10 @@ extern "C" The default offset for homopolymer errors. */ #define TMAP_MAP_OPT_FSW_OFFSET 2 +/*! + The default padding for the read when searching for overlapping amplicons + */ +#define TMAP_MAP_OPT_AMPLICON_SCOPE 0 /*! The default match score. */ @@ -58,6 +62,8 @@ extern "C" #define TMAP_MAP_OPT_REALIGN_SCORE_GE -2 #define TMAP_MAP_OPT_REALIGN_BW 50 #define TMAP_MAP_OPT_REALIGN_CLIPTYPE 2 +#define TMAP_MAP_OPT_REALIGN_MAXLEN 500 +#define TMAP_MAP_OPT_REALIGN_MAXCLIP 50 #define TMAP_MAP_OPT_CONTEXT_SCORE_MATCH ((double) TMAP_MAP_OPT_SCORE_MATCH) #define TMAP_MAP_OPT_CONTEXT_SCORE_MM ((double) -TMAP_MAP_OPT_PEN_MM) @@ -227,9 +233,11 @@ typedef struct __tmap_map_opt_t { int64_t bam_start_vfo; /*!< starting virtual file offset (--bam-start-vfo) */ int64_t bam_end_vfo; /*!< ending virtual file offset (--bam-end-vfo) */ int32_t use_param_ovr; /*!< use parameters overwrite if given in BED file */ + int32_t ovr_candeval; /*!< use parameters overwrites in candidate evaluation */ int32_t use_bed_in_end_repair; /*!< use coordinates of amplicon edges in end repair */ int32_t use_bed_in_mapq; /*!< use coordinates of amplicons mapq computing */ int32_t use_bed_read_ends_stat; /*use read ends statisitcs from BED if provided */ + int32_t amplicon_scope; /*padding to the read when searching for overlapping amplions */ int32_t score_match; /*!< the match score (-A,--score-match) */ int32_t pen_mm; /*!< the mismatch penalty (-M,--pen-mismatch) */ int32_t pen_gapo; /*!< the indel open penalty (-O,--pen-gap-open) */ @@ -276,7 +284,14 @@ typedef struct __tmap_map_opt_t { #ifdef ENABLE_TMAP_DEBUG_FUNCTIONS double sample_reads; /*!< sample the reads at this fraction (-x,--sample-reads) */ #endif + + // candidate evaluation - hit SW scoring, initial zone boundaries int32_t vsw_type; /*!< the vectorized smith waterman algorithm (-H,--vsw-type) */ + int32_t vsw_fallback; /*!< the smith waterman algorithm used as fallback (used when the main one fails or if failure pre-conditions is detected)*/ + int32_t confirm_vsw_corr; /*!< use non-vectorized SW to confirm VSW assymetric score corrections */ + int32_t candidate_ext; /*!< extend candidate alignment zone to capture full read footprint */ + int32_t correct_failed_vsw; /*!< fall back to non-vectorized (slow) SW algorithm if vectorized fails*/ + int32_t use_nvsw_on_nonstd_bases; /*!< fall back to non-vectorized (slow) SW algorithm if non-standard bases are present in aligned zone*/ // DVK: realignment control int32_t do_realign; /*!< perform realignment after mapping */ @@ -286,6 +301,8 @@ typedef struct __tmap_map_opt_t { int32_t realign_gep_score; /*!< realignment gap extension score */ int32_t realign_bandwidth; /*!< realignment DP matrix band width */ int32_t realign_cliptype; /*!< realignment clipping type: 0: none, 1: semiglobal, 2: semiglobal+soft clip bead end, 3: semiglobal + soft clip key end, 4: local alignment */ + int32_t realign_maxlen; /*!< realignment maximal alignment length supproted (should be set to a minimal reasonable value to avoid excessive memory use)*/ + int32_t realign_maxclip; /*!< realignment maximal clip length supproted*/ int32_t do_hp_weight; /*!< perform realignment with context-specific gap scores */ // int32_t context_noclip; /*!< perform realignment with context-specific gap scores */ diff --git a/Analysis/TMAP/src/map/util/tmap_map_stats.c b/Analysis/TMAP/src/map/util/tmap_map_stats.c index 2057c9c1..15a7aacd 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_stats.c +++ b/Analysis/TMAP/src/map/util/tmap_map_stats.c @@ -103,6 +103,25 @@ tmap_map_stats_add(tmap_map_stats_t *dest, tmap_map_stats_t *src) dest->bases_fully_tailclipped += src->bases_fully_tailclipped; dest->num_filtered_als += src->num_filtered_als; + + dest->read_clipping_extensions += src->read_clipping_extensions; + dest->nonstd_base_fallbacks_fwd += src->nonstd_base_fallbacks_fwd; + dest->nonstd_base_fallbacks_rev += src->nonstd_base_fallbacks_rev; + dest->vect_sw_calls += src->vect_sw_calls; + dest->fallback_vsw_calls += src->fallback_vsw_calls; + dest->fallback_sw_calls += src->fallback_sw_calls; + dest->overflows += src->overflows; + dest->vswfails += src->vswfails; + dest->totswfails += src->totswfails; + dest->symmetric_scores += src->symmetric_scores; + dest->asymmetric_scores_corrected += src->asymmetric_scores_corrected; + dest->asymmetric_scores_failed += src->asymmetric_scores_failed; + + dest->amplicon_searches += src->amplicon_searches; + dest->amplicon_search_successes += src->amplicon_search_successes; + dest->amplicon_overlaps += src->amplicon_overlaps; + dest->candeval_overrides += src->candeval_overrides; + dest->multiple_candeval_overrides += src->multiple_candeval_overrides; } void @@ -239,4 +258,23 @@ tmap_map_stats_print(tmap_map_stats_t *s) fprintf (stderr, "num_filtered_als=%llu\n", (unsigned long long int)s->num_filtered_als); + fprintf (stderr, "read_clipping_extensions=%llu\n", (unsigned long long int)s->read_clipping_extensions); + fprintf (stderr, "vect_sw_calls=%llu\n", (unsigned long long int)s->vect_sw_calls); + fprintf (stderr, "fallback_vsw_calls=%llu\n", (unsigned long long int)s->fallback_vsw_calls); + fprintf (stderr, "fallback_sw_calls=%llu\n", (unsigned long long int)s->fallback_sw_calls); + + fprintf (stderr, "nonstd_base_fallbacks_fwd=%llu\n", (unsigned long long int)s->nonstd_base_fallbacks_fwd); + fprintf (stderr, "nonstd_base_fallbacks_rev=%llu\n", (unsigned long long int)s->nonstd_base_fallbacks_rev); + fprintf (stderr, "overflows=%llu\n", (unsigned long long int)s->overflows); + fprintf (stderr, "symmetric_scores=%llu\n", (unsigned long long int)s->symmetric_scores); + fprintf (stderr, "asymmetric_scores_corrected=%llu\n", (unsigned long long int)s->asymmetric_scores_corrected); + fprintf (stderr, "asymmetric_scores_failed=%llu\n", (unsigned long long int)s->asymmetric_scores_failed); + + fprintf (stderr, "amplicon_searches=%llu\n", (unsigned long long int)s->amplicon_searches); + fprintf (stderr, "amplicon_search_successes=%llu\n", (unsigned long long int)s->amplicon_search_successes); + fprintf (stderr, "amplicon_overlaps=%llu\n", (unsigned long long int)s->amplicon_overlaps); + fprintf (stderr, "candeval_overrides=%llu\n", (unsigned long long int)s->candeval_overrides); + fprintf (stderr, "multiple_candeval_overrides=%llu\n", (unsigned long long int)s->multiple_candeval_overrides); + + } diff --git a/Analysis/TMAP/src/map/util/tmap_map_stats.h b/Analysis/TMAP/src/map/util/tmap_map_stats.h index fc8bce28..dcc72780 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_stats.h +++ b/Analysis/TMAP/src/map/util/tmap_map_stats.h @@ -81,6 +81,24 @@ typedef struct uint64_t bases_fully_tailclipped; // number of filtered alignments uint64_t num_filtered_als; + // statistics on candidate evaluation + uint64_t vect_sw_calls; + uint64_t fallback_vsw_calls; + uint64_t fallback_sw_calls; + uint64_t read_clipping_extensions; + uint64_t nonstd_base_fallbacks_fwd; + uint64_t nonstd_base_fallbacks_rev; + uint64_t overflows; + uint64_t vswfails; + uint64_t totswfails; + uint64_t symmetric_scores; + uint64_t asymmetric_scores_corrected; + uint64_t asymmetric_scores_failed; + uint64_t amplicon_searches; + uint64_t amplicon_search_successes; + uint64_t amplicon_overlaps; + uint64_t candeval_overrides; + uint64_t multiple_candeval_overrides; } tmap_map_stats_t; /*! diff --git a/Analysis/TMAP/src/map/util/tmap_map_util.c b/Analysis/TMAP/src/map/util/tmap_map_util.c index e8f31585..8bdc20fd 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_util.c +++ b/Analysis/TMAP/src/map/util/tmap_map_util.c @@ -4,8 +4,10 @@ #include #include #include +#include #include "../../util/tmap_alloc.h" #include "../../util/tmap_error.h" +#include "../../util/tmap_bsearch.h" #include "../../util/tmap_histo.h" #include "../../util/tmap_sam_convert.h" #include "../../util/tmap_progress.h" @@ -24,7 +26,6 @@ #include "tmap_map_util.h" #include "tmap_map_align_util.h" #include "../../sw/tmap_sw.h" -#include "../../util/tmap_histo.h" // #define CONCURRENT_PARAMETERS_CACHE 1 #ifdef CONCURRENT_PARAMETERS_CACHE @@ -104,11 +105,11 @@ tmap_map_get_amplicon int32_t seqid, uint32_t start, uint32_t end, + uint32_t strand, uint32_t *ampl_start, uint32_t *ampl_end, tmap_map_locopt_t** locopt, - tmap_map_endstat_p_t* read_ends, - uint32_t strand + tmap_map_endstat_p_t* read_ends ) { uint32_t *srh; @@ -196,6 +197,264 @@ tmap_map_get_amplicon return 0; } +typedef struct __tmap_map_amplicon_info +{ + uint32_t ampl_start; + uint32_t ampl_end; + tmap_map_locopt_t* locopt; + tmap_map_endstat_p_t read_ends; +} +tmap_map_amplicon_info; + +typedef struct __candeval_overrides_s +{ + tmap_map_amplicon_info* source; + int32_t softclip_type; + int32_t max_adapter_bases_for_soft_clipping; + tmap_vsw_opt_t vsw; +} +candeval_overrides_s; + +uint32_t candeval_overrides_same (candeval_overrides_s* p1, candeval_overrides_s* p2) +{ + return p1->softclip_type == p2->softclip_type && + p1->max_adapter_bases_for_soft_clipping == p2->max_adapter_bases_for_soft_clipping && + p1->vsw.score_match == p2->vsw.score_match && + p1->vsw.pen_mm == p2->vsw.pen_mm && + p1->vsw.pen_gapo == p2->vsw.pen_gapo && + p1->vsw.pen_gape == p2->vsw.pen_gape && + p1->vsw.score_thres == p2->vsw.score_thres; +} + +#define AMPL_INFO_INIT_CAPACITY 0 +static uint32_t capacity_snapper (uint32_t desired_capacity) +{ + // use closest higher degree of 2, but not less then AMPL_INFO_INIT_CAPACITY + + assert (desired_capacity <= INT32_MAX); // for the logic below to work, the upper bit should be 0 + uint8_t exp = 0; + if (desired_capacity == 0) + return 0; + if (desired_capacity == 1) + return 1; + while (desired_capacity) + { + desired_capacity >>= 1; + ++exp; + } + uint32_t capacity = 1 << exp; +#if AMPL_INFO_INIT_CAPACITY > 0 + if (capacity < AMPL_INFO_INIT_CAPACITY) + capacity = AMPL_INFO_INIT_CAPACITY; +#endif + return capacity; +} + +static void init_amplicon_info (tmap_map_amplicon_info** ampl_info, uint32_t* capacity, uint32_t preallocate) +{ + assert (ampl_info); + assert (capacity); + preallocate = capacity_snapper (preallocate); + if (preallocate) + *ampl_info = (tmap_map_amplicon_info*) tmap_calloc (preallocate, sizeof (tmap_map_amplicon_info), "amplicon_info"); + else + *ampl_info = NULL; + *capacity = preallocate; +} +static void manage_amplicon_info (tmap_map_amplicon_info** ampl_info, uint32_t* capacity, uint32_t needed_size) +{ + assert (ampl_info); + assert (capacity); + if (needed_size >= *capacity) + { + uint32_t new_capacity = capacity_snapper (needed_size); + *ampl_info = tmap_realloc (*ampl_info, new_capacity * sizeof (tmap_map_amplicon_info), "amplicon_info"); + } +} +static void destroy_amplicon_info (tmap_map_amplicon_info** ampl_info, uint32_t* capacity) +{ + assert (ampl_info); + assert (capacity); + free (*ampl_info); + *ampl_info = NULL; + *capacity = 0; +} + +// checks if amplicon overrides any of the candidate evaluation parameters; +// it yes, returns true and fills the passed in 'overrides' structure with the correct parameters (the non-overriden filled with default values) +static uint32_t ampl_candeval_parameters_from_locopt (tmap_map_opt_t* stage_opts, tmap_map_locopt_t* locopt, uint8_t strand, candeval_overrides_s* overrides) +{ + uint32_t rv = 0; + + // preset to defaults + overrides->softclip_type = stage_opts->softclip_type; + overrides->max_adapter_bases_for_soft_clipping = stage_opts->max_adapter_bases_for_soft_clipping; + overrides->vsw.score_match = stage_opts->score_match; + overrides->vsw.pen_mm = stage_opts->pen_mm; + overrides->vsw.pen_gapo = stage_opts->pen_gapo; + overrides->vsw.pen_gape = stage_opts->pen_gape; + overrides->vsw.score_thres = stage_opts->score_thr; + overrides->source = NULL; + + if (!locopt) + return rv; + + // softclip_type + if (locopt->softclip_type.over && locopt->softclip_type.value != stage_opts->softclip_type) + { + overrides->softclip_type = locopt->softclip_type.value; + rv = 1; + } + // "-J" parameter (--max-adapter-bases-for-soft-clipping) may be overriden for high or low amplicon end or for both. End-based spec takes over. + if (locopt->max_adapter_bases_for_soft_clipping_he.over && strand == 0) // read's 3' mapped to the higher end and overriden + { + if (locopt->max_adapter_bases_for_soft_clipping_he.value != stage_opts->max_adapter_bases_for_soft_clipping) + { + overrides->max_adapter_bases_for_soft_clipping = locopt->max_adapter_bases_for_soft_clipping_he.value; + rv = 1; + } + } + else if (locopt->max_adapter_bases_for_soft_clipping_le.over && strand == 1) // read's 3' mapped to the lower end and overriden + { + if (locopt->max_adapter_bases_for_soft_clipping_le.value != stage_opts->max_adapter_bases_for_soft_clipping) + { + overrides->max_adapter_bases_for_soft_clipping = locopt->max_adapter_bases_for_soft_clipping_le.value; + rv = 1; + } + } + else if (locopt->max_adapter_bases_for_soft_clipping.over) + { + if (locopt->max_adapter_bases_for_soft_clipping.value != stage_opts->max_adapter_bases_for_soft_clipping) + { + overrides->max_adapter_bases_for_soft_clipping = locopt->max_adapter_bases_for_soft_clipping.value; + rv = 1; + } + } + // score_match + if (locopt->score_match.over && locopt->score_match.value != stage_opts->score_match) + { + overrides->vsw.score_match = locopt->score_match.value; + rv = 1; + } + // pen_mm + if (locopt->pen_mm.over && locopt->pen_mm.value != stage_opts->pen_mm) + { + overrides->vsw.pen_mm = locopt->pen_mm.value; + rv = 1; + } + // pen_gapo + if (locopt->pen_gapo.over && locopt->pen_gapo.value != stage_opts->pen_gapo) + { + overrides->vsw.pen_gapo = locopt->pen_gapo.value; + rv = 1; + } + // pen_gape + if (locopt->pen_gape.over && locopt->pen_gape.value != stage_opts->pen_gape) + { + overrides->vsw.pen_gape = locopt->pen_gape.value; + rv = 1; + } + // score_thres + if (locopt->score_thr.over && locopt->score_thr.value != stage_opts->score_thr) + { + overrides->vsw.score_thres = locopt->score_thr.value; + rv = 1; + } + return rv; +} + +static uint32_t ampl_candeval_parameters (tmap_map_opt_t* stage_opts, tmap_map_amplicon_info* amplinfo, uint8_t strand, candeval_overrides_s* overrides) +{ + uint32_t rv = ampl_candeval_parameters_from_locopt (stage_opts, amplinfo->locopt, strand, overrides); + if (rv) + overrides->source = amplinfo; + return rv; +} + +// same as above using sam as a data source for overrides +static uint32_t ampl_candeval_parameters_from_sam (tmap_map_opt_t* stage_opts, tmap_map_sam_t* sam, candeval_overrides_s* overrides) +{ + return ampl_candeval_parameters_from_locopt (stage_opts, sam->param_ovr, sam->strand, overrides); +} + +// finds amplions intersecting with given start-end interval +// fills in the array of tmap_map_ampliocn_info at the address pointed by touched_ampls; +// allocates or re-allocates this array (updating address at touched_ampls), in this case updates touched_ampls_capacity +// returns number of touched_amplsactually filled in +// (always replaces whatever content is in the passed **touched_amplicons +int +tmap_map_get_overlapping_amplicons +( + tmap_refseq_t *refseq, + int32_t seqid, + uint32_t start, + uint32_t end, + uint32_t allowance, + tmap_map_amplicon_info** touched_ampls, // pointer to the array of ampliocn info structures, NULL if not allocated yest + uint32_t* touched_ampls_capacity) // capacity (allocated size) of touched_ampls array (for ammortized re-allocation and re-use) +{ + if (!refseq->bed_exist || refseq->bednum [seqid] == 0) + return 0; + + // find all amplions where ampl_ends are above start and ampl_starts are below end + + // WARNING: the code below assumes that both ampl_starts AND ampl_ends arrays are sorted + // This is true for current implementation: the BED loading code discards all fully contained amplicons, recording only the outermost ones. + // When we switch to handling inner amplicons as well, we'll need to add another level of indirection when searching for the ampl_ends, as the original bed-derived array may be unordered. + + start += allowance; + end = (allowance > end)?0:(end - allowance); + + // find first amplicon with ampl_end equal or above start + uint32_t* ampl_starts = refseq->bedstart [seqid]; + uint32_t* ampl_ends = refseq->bedend [seqid]; + uint32_t ampl_no = refseq->bednum [seqid]; + + uint32_t* first_ampl = (uint32_t*) tmap_binary_search (&start, ampl_ends, ampl_no, sizeof (*ampl_ends), lt_uint32); + uint32_t first_idx = first_ampl - ampl_ends; + if (first_idx == ampl_no) + return 0; + + // find last amplicon with ampl_start equal or above end. This is a sentinel, excluded from overlapped list + uint32_t* last_ampl = (uint32_t*) tmap_binary_search (&end, ampl_starts, ampl_no, sizeof (*ampl_starts), lt_uint32); + uint32_t last_idx = last_ampl - ampl_starts; + if (last_idx == 0) + return 0; + + if (first_idx == last_idx) + return 0; + + // reallocate result storage if needed + manage_amplicon_info (touched_ampls, touched_ampls_capacity, last_idx - first_idx); + + // fill in results + uint32_t ampl_idx; + tmap_map_amplicon_info* cur_ainfo = *touched_ampls; + for (ampl_idx = first_idx; ampl_idx != last_idx; ++ampl_idx, ++cur_ainfo) + { + cur_ainfo->ampl_start = ampl_starts [ampl_idx]; + cur_ainfo->ampl_end = ampl_ends [ampl_idx]; + if (refseq->parovr && refseq->parovr [seqid] && refseq->parovr [seqid][ampl_idx] != UINT32_MAX) + cur_ainfo->locopt = refseq->parmem + refseq->parovr [seqid][ampl_idx]; + else + cur_ainfo->locopt = NULL; + if (refseq->read_ends && refseq->read_ends [seqid] && refseq->read_ends [seqid][ampl_idx].index != UINT32_MAX) + { + tmap_map_endstat_t* src = refseq->read_ends [seqid] + ampl_idx; + cur_ainfo->read_ends.positions = refseq->endposmem + src->index; + cur_ainfo->read_ends.starts_count = src->starts_count; + cur_ainfo->read_ends.ends_count = src->ends_count; + } + else + { + cur_ainfo->read_ends.positions = NULL; + cur_ainfo->read_ends.starts_count = 0; + cur_ainfo->read_ends.ends_count = 0; + } + } + return last_idx - first_idx; +} + // use softclip settings from tmap parameters // disallow 3' softclip, if @@ -206,15 +465,15 @@ tmap_map_get_amplicon static void tmap_map_util_set_softclip ( - tmap_map_opt_t *opt, + int32_t softclip_type, tmap_seq_t *seq, int32_t max_adapter_bases_for_soft_clipping, int32_t *softclip_start, int32_t *softclip_end ) { - (*softclip_start) = (TMAP_MAP_OPT_SOFT_CLIP_LEFT == opt->softclip_type || TMAP_MAP_OPT_SOFT_CLIP_ALL == opt->softclip_type) ? 1 : 0; - (*softclip_end) = (TMAP_MAP_OPT_SOFT_CLIP_RIGHT == opt->softclip_type || TMAP_MAP_OPT_SOFT_CLIP_ALL == opt->softclip_type) ? 1 : 0; + (*softclip_start) = (TMAP_MAP_OPT_SOFT_CLIP_LEFT == softclip_type || TMAP_MAP_OPT_SOFT_CLIP_ALL == softclip_type) ? 1 : 0; + (*softclip_end) = (TMAP_MAP_OPT_SOFT_CLIP_RIGHT == softclip_type || TMAP_MAP_OPT_SOFT_CLIP_ALL == softclip_type) ? 1 : 0; // check if the ZB tag is present... if (TMAP_SEQ_TYPE_SAM == seq->type || TMAP_SEQ_TYPE_BAM == seq->type) // SAM/BAM { @@ -1197,7 +1456,7 @@ tmap_map_util_mapq(tmap_map_sams_t *sams, int32_t seq_len, tmap_map_opt_t *opt, uint32_t end = start+tmp_sam.target_len-1; uint32_t ampl_start, ampl_end; if (tmp_sam.score != best_score) continue; - if (tmap_map_get_amplicon(refseq, tmp_sam.seqid, start, end, &l_start, &l_end, NULL, NULL, tmp_sam.strand)) + if (tmap_map_get_amplicon(refseq, tmp_sam.seqid, start, end, tmp_sam.strand, &l_start, &l_end, NULL, NULL)) { /* if (abs(ampl_start-start) < 15 && abs(ampl_end-end) < 15) { @@ -1462,6 +1721,7 @@ tmap_map_util_sw_gen_score_helper ( tmap_refseq_t *refseq, tmap_map_sams_t *sams, + tmap_seq_t *origseq, tmap_seq_t *seq, tmap_map_sams_t *sams_tmp, int32_t *idx, @@ -1474,364 +1734,491 @@ tmap_map_util_sw_gen_score_helper uint32_t end_pos, int32_t *target_mem, uint8_t **target, - int32_t softclip_start, - int32_t softclip_end, + // int32_t softclip_start, + // int32_t softclip_end, int32_t prev_n_best, int32_t max_seed_band, // NB: this may be modified as banding is unrolled int32_t prev_score, // NB: must be greater than or equal to the scoring threshold tmap_vsw_opt_t *vsw_opt, tmap_rand_t *rand, - tmap_map_opt_t *opt + tmap_map_opt_t *opt, + tmap_map_amplicon_info** amplicons, + uint32_t* amplicons_capacity, + tmap_map_stats_t *stat // statistics + ) { - tmap_map_sam_t tmp_sam; - uint8_t *query; - uint32_t qlen; - int32_t tlen, overflow = 0, is_long_hit = 0; - - // choose a random one within the window - if(start == end) { - tmp_sam = sams->sams[start]; - } - else { - int32_t r = (int32_t)(tmap_rand_get(rand) * (end - start + 1)); - r += start; - tmp_sam = sams->sams[r]; - } - - if(0 < opt->long_hit_mult && seq_len * opt->long_hit_mult <= end_pos - start_pos + 1) { - is_long_hit = 1; - } - - // update the query sequence - query = (uint8_t*)tmap_seq_get_bases(seq)->s; - qlen = tmap_seq_get_bases_length(seq); + tmap_map_sam_t tmp_sam; + uint8_t *query; + uint32_t qlen; + int32_t tlen, overflow = 0, is_long_hit = 0; - // add in band width - // one-based - if(start_pos < opt->bw) { - start_pos = 1; - } - else { - start_pos -= opt->bw - 1; - } - end_pos += opt->bw - 1; - if(refseq->annos[sams->sams[end].seqid].len < end_pos) { - end_pos = refseq->annos[sams->sams[end].seqid].len; // one-based - } + // choose a random one within the window + if (start == end) + { + tmp_sam = sams->sams [start]; + } + else + { + int32_t r = (int32_t) (tmap_rand_get (rand) * (end - start + 1)); + r += start; + tmp_sam = sams->sams [r]; + } - // get the target sequence - tlen = end_pos - start_pos + 1; - if((*target_mem) < tlen) { // more memory? - (*target_mem) = tlen; - tmap_roundup32((*target_mem)); - (*target) = tmap_realloc((*target), sizeof(uint8_t)*(*target_mem), "target"); - } - // NB: IUPAC codes are turned into mismatches - if(NULL == tmap_refseq_subseq2(refseq, sams->sams[end].seqid+1, start_pos, end_pos, (*target), 1, NULL)) { - tmap_error("bug encountered", Exit, OutOfRange); - } + if (0 < opt->long_hit_mult && seq_len * opt->long_hit_mult <= end_pos - start_pos + 1) + is_long_hit = 1; - // reverse compliment the target - if(1 == strand) { - tmap_reverse_compliment_int((*target), tlen); - } + // update the query sequence + query = (uint8_t*) tmap_seq_get_bases (seq)->s; + qlen = tmap_seq_get_bases_length (seq); - // Debugging -#ifdef TMAP_VSW_DEBUG - int j; - fprintf(stderr, "seqid:%u start_pos=%u end_pos=%u strand=%d\n", sams->sams[end].seqid+1, start_pos, end_pos, strand); - for(j=0;jbw) + start_pos = 1; + else + start_pos -= opt->bw - 1; - // initialize the bounds - tmp_sam.result.query_start = tmp_sam.result.query_end = 0; - tmp_sam.result.target_start = tmp_sam.result.target_end = 0; - - /** - * Discussion on choosing alignments. - * - * In general, we would like to choose the alignment using the *most* number - * of query bases. The complication comes when using soft-clipping. - * - * When no soft-clipping occurs, then the whole query will be used. - * - * When there is only soft-clipping at the 3' end of the query (end of the - * read), we can search for the alignment with the greatest query end when - * searching in the 5'->3' direction. Since the query start is fixed, as there - * is no 5' start-clipping, we are then guaranteed to find the alignment with - * the most number of query bases if we fix the query end when we align in the - * 3'->5' direction. - * - * When there is only soft-clipping at the 5' end of the query (start of the - * read), we can search for the alignment with the greatest query end when - * searching in the 5'->3' direction, as the query end is fixed. Then, when - * aligning in the 3'->5' direction, we can search for the alignment with the - * smallest query start (which in the 3'->5' direction is the one with the one - * with the largest query end). - * - * We cannot guarantee anything if we are allowing soft-clipping on both the - * 5' and 3' ends. - */ - - // NB: this aligns in the sequencing direction - // DVK: bug #11386 - { - const int16_t TARGET_EDGE_ALLOWANCE = 4; - const int16_t MAX_TARGET_LEN_FOR_VSW = 32000; - int8_t target_causes_read_clipping; - int8_t first_run = 1; - int32_t score = 0, prev_score = 0; - uint32_t new_end_pos, new_start_pos; - tmap_vsw_result_t result; - do - { - // initial assumption - target_causes_read_clipping = 0; + end_pos += opt->bw - 1; + if (refseq->annos [sams->sams [end].seqid].len < end_pos) + end_pos = refseq->annos [sams->sams [end].seqid].len; // one-based - // initialize the bounds - why? - result.query_start = result.query_end = 0; - result.target_start = result.target_end = 0; - score = tmap_vsw_process_fwd(vsw, query, qlen, (*target), tlen, - &result, &overflow, opt->score_thr, 1); + // get the target sequence + tlen = end_pos - start_pos + 1; + if ((*target_mem) < tlen) + { // more memory? + (*target_mem) = tlen; + tmap_roundup32 ((*target_mem)); + (*target) = tmap_realloc ((*target), sizeof (uint8_t)*(*target_mem), "target"); + } + // NB: IUPAC codes are turned into mismatches + if (NULL == tmap_refseq_subseq2 (refseq, sams->sams [end].seqid+1, start_pos, end_pos, (*target), 1, NULL)) + { + tmap_error ("bug encountered", Exit, OutOfRange); + } - if (1 == overflow) - return INT32_MIN; + // reverse compliment the target + if (1 == strand) + tmap_reverse_compliment_int ((*target), tlen); - if (!first_run && score <= prev_score) // check for zone edge crossing on first run always, then only if score is improved - break; // if score did not improve, get out and keep last result/score in tmp_sam - // query clip may be recoverable if it has 3' clip and alignment goes to target zone end - new_end_pos = end_pos; - new_start_pos = start_pos; - if (tlen - result.target_end < TARGET_EDGE_ALLOWANCE && qlen > result.query_end) + // #define DEBUG_VSW_ASSYMETRY + #ifdef DEBUG_VSW_ASSYMETRY + { + int j; + // fprintf (stderr, "seqid:%u start_pos=%u end_pos=%u strand=%d\n", sams->sams [end].seqid+1, start_pos, end_pos, strand); + for (j = 0; j < qlen; j++) + { + if (query [j] >= 4) { - // extend target if possible - new_end_pos += qlen - result.query_end + TARGET_EDGE_ALLOWANCE; - if(refseq->annos[sams->sams[end].seqid].len < new_end_pos) - { - new_end_pos = refseq->annos[sams->sams[end].seqid].len; // one-based - } + tmap_warning ("QUERY [%d] = %d\n", j, query [j]); + // query [j] = 0; } - // similarly process 5' clips - if (result.target_start < TARGET_EDGE_ALLOWANCE && result.query_start > 0) + // fputc ("ACGTN" [query [j]], stderr); + } + // fputc ('\n', stderr); + for (j = 0; j < tlen; j++) + { + if ((*target) [j] >= 4) { - if (result.query_start + TARGET_EDGE_ALLOWANCE > new_start_pos) - new_start_pos -= result.query_start + TARGET_EDGE_ALLOWANCE; - else - new_start_pos = 1; + tmap_warning ("TARGET [%d] = %d\n", j, (*target) [j]); + // (*target) [j] = 0; } - if (new_end_pos > end_pos || new_start_pos < start_pos ) - { - end_pos = new_end_pos; - start_pos = new_start_pos; - // get the target sequence - tlen = end_pos - start_pos + 1; - if((*target_mem) < tlen) - { // more memory? - (*target_mem) = tlen; - tmap_roundup32((*target_mem)); - (*target) = tmap_realloc((*target), sizeof(uint8_t)*(*target_mem), "target"); - } - // NB: IUPAC codes are turned into mismatches - if(NULL == tmap_refseq_subseq2(refseq, sams->sams[end].seqid+1, start_pos, end_pos, (*target), 1, NULL)) - tmap_error("bug encountered", Exit, OutOfRange); + // fputc ("ACGTN" [(*target) [j]], stderr); + } + // fputc ('\n', stderr); + } + #endif - // reverse compliment the target - if (1 == strand) - tmap_reverse_compliment_int((*target), tlen); + // initialize the bounds + tmp_sam.result.query_start = tmp_sam.result.query_end = 0; + tmp_sam.result.target_start = tmp_sam.result.target_end = 0; - target_causes_read_clipping = 1; - } - tmp_sam.score = score; - tmp_sam.result = result; - prev_score = score; - first_run = 0; - if (start_pos + MAX_TARGET_LEN_FOR_VSW < end_pos) - break; - } - while (target_causes_read_clipping); + /** + * Discussion on choosing alignments. + * + * In general, we would like to choose the alignment using the *most* number + * of query bases. The complication comes when using soft-clipping. + * + * When no soft-clipping occurs, then the whole query will be used. + * + * When there is only soft-clipping at the 3' end of the query (end of the + * read), we can search for the alignment with the greatest query end when + * searching in the 5'->3' direction. Since the query start is fixed, as there + * is no 5' start-clipping, we are then guaranteed to find the alignment with + * the most number of query bases if we fix the query end when we align in the + * 3'->5' direction. + * + * When there is only soft-clipping at the 5' end of the query (start of the + * read), we can search for the alignment with the greatest query end when + * searching in the 5'->3' direction, as the query end is fixed. Then, when + * aligning in the 3'->5' direction, we can search for the alignment with the + * smallest query start (which in the 3'->5' direction is the one with the one + * with the largest query end). + * + * We cannot guarantee anything if we are allowing soft-clipping on both the + * 5' and 3' ends. + */ - } + // NB: this aligns in the sequencing direction + // DVK: bug #11386 + { + const int16_t TARGET_EDGE_ALLOWANCE = 4; + const int16_t MAX_TARGET_LEN_FOR_VSW = 32000; + int8_t target_causes_read_clipping; + uint32_t clipping_extensions = 0; + int8_t first_run = 1; + int32_t score = 0, prev_score = 0; + uint32_t new_end_pos, new_start_pos; + tmap_vsw_result_t result; + uint32_t amplicons_no = 0; + uint32_t ampl_found = 0; + tmap_map_amplicon_info best_ampl; + memset (&best_ampl, 0, sizeof (best_ampl)); + do + { + // initial assumption + target_causes_read_clipping = 0; + ampl_found = 0; - if (1 < tmp_sam.result.n_best) - { - // What happens if soft-clipping or not soft-clipping causes two - // alignments to be equally likely? So while we could set the scores to be - // similar, we can also down-weight the score a little bit. - tmp_sam.score_subo = tmp_sam.score - opt->pen_gapo - opt->pen_gape; - //tmp_sam.score_subo = tmp_sam.score - 1; - } - if (1 == is_long_hit) - { - // if we have many seeds that span a large tandem repeat, then we should - // downweight the sub-optimal score - tmp_sam.score_subo = tmp_sam.score - opt->pen_gapo - opt->pen_gape; - } + // initialize the bounds - why? + result.query_start = result.query_end = 0; + result.target_start = result.target_end = 0; + // handle amplicons - find if parameters overriding is needed + if (opt->use_param_ovr && opt->ovr_candeval) + { + // find amplicons + amplicons_no = tmap_map_get_overlapping_amplicons (refseq, sams->sams [end].seqid, start_pos, end_pos, opt->amplicon_scope, amplicons, amplicons_capacity); + ++stat->amplicon_searches; + if (amplicons_no) + ++stat->amplicon_search_successes; + if (amplicons_no > 1) + ++stat->amplicon_overlaps; + } - if(opt->score_thr <= tmp_sam.score) { // NB: we could also specify 'prev_score <= tmp_sam.score' - int32_t add_current = 1; // yes, by default - - // Save local variables - // TODO: do we need to save this data in this fashion? - int32_t t_end = end; - int32_t t_start = start; - int32_t t_end_pos = end_pos; - uint32_t t_start_pos = start_pos; - - if(1 == opt->unroll_banding // unrolling is turned on - && 0 <= max_seed_band // do we have enough bases to unrooll - && 1 < end - start + 1 // are there enough seeds in this group - && ((prev_n_best < 0 && 1 < tmp_sam.result.n_best) // we need to do a first timeunroll - || (prev_n_best == tmp_sam.result.n_best))) { // unroll was not successful, try again - uint32_t start_pos_prev=0; - uint32_t start_pos_cur=0, end_pos_cur=0; - uint32_t unrolled = 0; - - while(0 == unrolled) { - - // Reset local variables - start = t_start; - end = t_end; - - //fprintf(stderr, "max_seed_band=%d start=%d end=%d\n", max_seed_band, start, end); - // NB: band based on EXACT start position - int32_t n = end + 1; - end = start; - while(start < n) { - int32_t cur_score; - // reset start and end position - if(start == end) { - tmap_map_util_sw_get_start_and_end_pos(&sams->sams[start], seq_len, strand, &start_pos, &end_pos); - start_pos_prev = start_pos; - } - if(end + 1 < n) { - if(sams->sams[end].strand == sams->sams[end+1].strand - && sams->sams[end].seqid == sams->sams[end+1].seqid) { - tmap_map_util_sw_get_start_and_end_pos(&sams->sams[end+1], seq_len, strand, &start_pos_cur, &end_pos_cur); + // make list of distinct overrides that do not match stage params + candeval_overrides_s* overrides = (candeval_overrides_s*) alloca (sizeof (candeval_overrides_s) * amplicons_no); + int overrides_no = 0; + for (tmap_map_amplicon_info *ainfo = *amplicons, *sent = *amplicons + amplicons_no; ainfo != sent; ++ainfo) + { + // set parameters overrides: fill in first unoccupied slot in 'overrides' + uint32_t differs = ampl_candeval_parameters (opt, ainfo, strand, overrides + overrides_no); + if (!differs) // matched default and thus was not recorded + continue; + // check if matches any prior one; increment overrides_no only if unique + uint32_t match_found = 0; + for (candeval_overrides_s* older_override = overrides, *older_sent = overrides + overrides_no; older_override != older_sent && ! match_found; ++older_override) + if (candeval_overrides_same (older_override, overrides + overrides_no)) + match_found = 1; + if (!match_found) + ++overrides_no; + } + // if no amplicons found (or no overriding ordered), use global params to compute score + if (!overrides_no) + { + score = tmap_vsw_process_fwd (vsw, query, qlen, (*target), tlen, + &result, &overflow, opt->score_thr, 1, opt->confirm_vsw_corr, opt->correct_failed_vsw, opt->use_nvsw_on_nonstd_bases, stat); + } + else // run for every override + { + ++stat->candeval_overrides; + if (overrides_no > 1) + ++stat->multiple_candeval_overrides; + int32_t softclip_start, softclip_end; + // save default parameters + tmap_vsw_opt_t orig_vsw_opt = *(vsw->opt); + int32_t orig_softclip_start = vsw->query_start_clip, orig_softclip_end = vsw->query_end_clip; + // run for every override + int32_t best_score = INT32_MIN; + candeval_overrides_s* best_params = NULL; + for (candeval_overrides_s* override = overrides, *ovr_sent = overrides + overrides_no; override != ovr_sent; ++override) + { + tmap_map_util_set_softclip (override->softclip_type, origseq, override->max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); + tmap_vsw_set_params (vsw, softclip_start, softclip_end, &(override->vsw)); + score = tmap_vsw_process_fwd (vsw, query, qlen, (*target), tlen, + &result, &overflow, opt->score_thr, 1, opt->confirm_vsw_corr, opt->correct_failed_vsw, opt->use_nvsw_on_nonstd_bases, stat); + if (score > best_score) + { + best_score = score; + best_params = override; + ampl_found = 1; + } + } + if (ampl_found) + { + // pick the best (highest) one + score = best_score; + // remember what was the best amplicon (best_ampl) + best_ampl = *best_params->source; + } + // reset vsw parameters to orig + tmap_vsw_set_params (vsw, orig_softclip_start, orig_softclip_end, &(orig_vsw_opt)); + } + if (1 == overflow) + return INT32_MIN; + if (!first_run && score <= prev_score) // check for zone edge crossing on first run always, then only if score is improved + break; // if score did not improve, get out and keep last result/score in tmp_sam + + // query clip may be recoverable if it has 3' clip and alignment goes to target zone end + new_end_pos = end_pos; + new_start_pos = start_pos; + if (tlen - result.target_end < TARGET_EDGE_ALLOWANCE && qlen > result.query_end) + { + // extend target if possible + new_end_pos += qlen - result.query_end + TARGET_EDGE_ALLOWANCE; + if (refseq->annos [sams->sams [end].seqid].len < new_end_pos) + { + new_end_pos = refseq->annos [sams->sams [end].seqid].len; // one-based + } + } + // similarly process 5' clips + if (result.target_start < TARGET_EDGE_ALLOWANCE && result.query_start > 0) + { + if (result.query_start + TARGET_EDGE_ALLOWANCE > new_start_pos) + new_start_pos -= result.query_start + TARGET_EDGE_ALLOWANCE; + else + new_start_pos = 1; + } + if (opt->candidate_ext && (new_end_pos > end_pos || new_start_pos < start_pos)) + { + end_pos = new_end_pos; + start_pos = new_start_pos; + // get the target sequence + tlen = end_pos - start_pos + 1; + if ((*target_mem) < tlen) + { // more memory? + (*target_mem) = tlen; + tmap_roundup32 ((*target_mem)); + (*target) = tmap_realloc ((*target), sizeof (uint8_t) * (*target_mem), "target"); + } + // NB: IUPAC codes are turned into mismatches + if (NULL == tmap_refseq_subseq2 (refseq, sams->sams [end].seqid + 1, start_pos, end_pos, (*target), 1, NULL)) + tmap_error ("bug encountered", Exit, OutOfRange); - // fprintf(stderr, "start_pos_cur=%u start_pos_prev=%u max_seed_band=%d\n", - // start_pos_cur, start_pos_prev, max_seed_band); + // reverse compliment the target + if (1 == strand) + tmap_reverse_compliment_int ((*target), tlen); + target_causes_read_clipping = 1; + ++clipping_extensions; + } + prev_score = score; + first_run = 0; + if (start_pos + MAX_TARGET_LEN_FOR_VSW < end_pos) + break; + } + while (target_causes_read_clipping); + stat->read_clipping_extensions += clipping_extensions; + tmp_sam.score = score; + tmp_sam.result = result; + if (ampl_found) // found the best scoring out of (one or more) overlapping amplicons + { + tmp_sam.ampl_start = best_ampl.ampl_start; + tmp_sam.ampl_end = best_ampl.ampl_end; + tmp_sam.param_ovr = best_ampl.locopt; + tmp_sam.read_ends = best_ampl.read_ends; + } + else if (amplicons_no == 1) // regardless of how good/bad the match is and whether overrides were defined, if there is only one overlapping amplicon, bind it + { + tmp_sam.ampl_start = (*amplicons)->ampl_start; + tmp_sam.ampl_end = (*amplicons)->ampl_end; + tmp_sam.param_ovr = (*amplicons)->locopt; + tmp_sam.read_ends = (*amplicons)->read_ends; + } + else + { + tmp_sam.ampl_start = 0; + tmp_sam.ampl_end = 0; + tmp_sam.param_ovr = NULL; + tmp_sam.read_ends.positions = NULL, tmp_sam.read_ends.starts_count = 0, tmp_sam.read_ends.ends_count = 0; + } + } - // consider start positions only - if(start_pos_cur - start_pos_prev <= max_seed_band) { // consider start positions only - end++; - if(end_pos < end_pos_cur) { - end_pos = end_pos_cur; - } - start_pos_prev = start_pos_cur; - continue; // there may be more to add - } } } // do not recurse if we did not unroll if(0 < max_seed_band && t_start == start && t_end == end) { // we did not unroll any max_seed_band = (max_seed_band >> 1); break; } - unrolled = 1; // we are going to unroll + if (1 < tmp_sam.result.n_best) + { + // What happens if soft-clipping or not soft-clipping causes two + // alignments to be equally likely? So while we could set the scores to be + // similar, we can also down-weight the score a little bit. + tmp_sam.score_subo = tmp_sam.score - opt->pen_gapo - opt->pen_gape; + //tmp_sam.score_subo = tmp_sam.score - 1; + } + if (1 == is_long_hit) + { + // if we have many seeds that span a large tandem repeat, then we should + // downweight the sub-optimal score + tmp_sam.score_subo = tmp_sam.score - opt->pen_gapo - opt->pen_gape; + } - // TODO: we could hash the alignment result, as unrolling may - // cause many more SWs - // recurse - cur_score = tmap_map_util_sw_gen_score_helper(refseq, sams, seq, sams_tmp, idx, start, end, + if (opt->score_thr <= tmp_sam.score) + { // NB: we could also specify 'prev_score <= tmp_sam.score' + int32_t add_current = 1; // yes, by default + + // Save local variables + // TODO: do we need to save this data in this fashion? + int32_t t_end = end; + int32_t t_start = start; + int32_t t_end_pos = end_pos; + uint32_t t_start_pos = start_pos; + + if ( 1 == opt->unroll_banding // unrolling is turned on + && 0 <= max_seed_band // do we have enough bases to unrooll + && 1 < end - start + 1 // are there enough seeds in this group + && ( (prev_n_best < 0 && 1 < tmp_sam.result.n_best) // we need to do a first time unroll + || (prev_n_best == tmp_sam.result.n_best))) + { // unroll was not successful, try again + uint32_t start_pos_prev=0; + uint32_t start_pos_cur=0, end_pos_cur=0; + uint32_t unrolled = 0; + + while (0 == unrolled) + { + // Reset local variables + start = t_start; + end = t_end; + + //fprintf (stderr, "max_seed_band=%d start=%d end=%d\n", max_seed_band, start, end); + // NB: band based on EXACT start position + int32_t n = end + 1; + end = start; + while (start < n) + { + int32_t cur_score; + // reset start and end position + if (start == end) + { + tmap_map_util_sw_get_start_and_end_pos (&sams->sams [start], seq_len, strand, &start_pos, &end_pos); + start_pos_prev = start_pos; + } + if (end + 1 < n) + { + if ( sams->sams [end].strand == sams->sams [end+1].strand + && sams->sams [end].seqid == sams->sams [end+1].seqid) + { + tmap_map_util_sw_get_start_and_end_pos (&sams->sams [end+1], seq_len, strand, &start_pos_cur, &end_pos_cur); + + // consider start positions only + if (start_pos_cur - start_pos_prev <= max_seed_band) + { // consider start positions only + end++; + if (end_pos < end_pos_cur) + end_pos = end_pos_cur; + start_pos_prev = start_pos_cur; + continue; // there may be more to add + } + } + } // do not recurse if we did not unroll if (0 < max_seed_band && t_start == start && t_end == end) { // we did not unroll any max_seed_band = (max_seed_band >> 1); break; } + unrolled = 1; // we are going to unroll + + // TODO: we could hash the alignment result, as unrolling may + // cause many more SWs + + // recurse + cur_score = tmap_map_util_sw_gen_score_helper (refseq, sams, origseq, seq, sams_tmp, idx, start, end, strand, vsw, seq_len, start_pos, end_pos, target_mem, target, - softclip_start, softclip_end, + // softclip_start, softclip_end, tmp_sam.result.n_best, (max_seed_band <= 0) ? -1 : (max_seed_band >> 1), tmp_sam.score, - vsw_opt, rand, opt); - - if(cur_score == tmp_sam.score) add_current = 0; // do not add the current alignment, we found it during unrolling - // update start/end - end++; - start = end; - } - } - } - - // Reset local variables - // TODO: do we need to reset this data in this fashion? - end = t_end; - start = t_start; - end_pos = t_end_pos; - start_pos = t_start_pos; + vsw_opt, rand, opt, + amplicons, + amplicons_capacity, + stat + ); + + if (cur_score == tmp_sam.score) + add_current = 0; // do not add the current alignment, we found it during unrolling + // update start/end + end++; + start = end; + } + } + } - if(1 == add_current) { - tmap_map_sam_t *s = NULL; + // Reset local variables + // TODO: do we need to reset this data in this fashion? + end = t_end; + start = t_start; + end_pos = t_end_pos; + start_pos = t_start_pos; - if(sams_tmp->n <= (*idx)) { - tmap_map_sams_realloc(sams_tmp, (*idx)+1); - //tmap_error("bug encountered", Exit, OutOfRange); - } + if (1 == add_current) + { + tmap_map_sam_t *s = NULL; - s = &sams_tmp->sams[(*idx)]; - // shallow copy previous data - (*s) = tmp_sam; - //s->result = tmp_sam.result; + if (sams_tmp->n <= (*idx)) + { + tmap_map_sams_realloc (sams_tmp, (*idx)+1); + //tmap_error ("bug encountered", Exit, OutOfRange); + } - // nullify the cigar - s->n_cigar = 0; - s->cigar = NULL; + s = &sams_tmp->sams [(*idx)]; + // shallow copy previous data + (*s) = tmp_sam; + //s->result = tmp_sam.result; - // adjust target length and position NB: query length is implicitly - // stored in s->query_end (consider on the next pass) - s->pos = start_pos - 1; // zero-based - s->target_len = s->result.target_end + 1; + // nullify the cigar + s->n_cigar = 0; + s->cigar = NULL; - if(1 == strand) { - if(s->pos + tlen <= s->result.target_end) s->pos = 0; - else s->pos += tlen - s->result.target_end - 1; - } + // adjust target length and position NB: query length is implicitly + // stored in s->query_end (consider on the next pass) + s->pos = start_pos - 1; // zero-based + s->target_len = s->result.target_end + 1; - /* - fprintf(stderr, "strand=%d pos=%d n_best=%d %d-%d %d-%d %d\n", - strand, - s->pos, - s->result.n_best, - s->query_start, - s->query_end, - s->target_start, - s->result.target_end, - s->target_len); - */ + if (1 == strand) + { + if (s->pos + tlen <= s->result.target_end) s->pos = 0; + else s->pos += tlen - s->result.target_end - 1; + } - // # of seeds - s->n_seeds = (end - start + 1); - // update aux data - tmap_map_sam_malloc_aux(s); - switch(s->algo_id) { + /* + fprintf (stderr, "strand=%d pos=%d n_best=%d %d-%d %d-%d %d\n", + strand, + s->pos, + s->result.n_best, + s->query_start, + s->query_end, + s->target_start, + s->result.target_end, + s->target_len); + */ + + // # of seeds + s->n_seeds = (end - start + 1); + // update aux data + tmap_map_sam_malloc_aux (s); + switch (s->algo_id) + { case TMAP_MAP_ALGO_MAP1: - (*s->aux.map1_aux) = (*tmp_sam.aux.map1_aux); - break; + (*s->aux.map1_aux) = (*tmp_sam.aux.map1_aux); + break; case TMAP_MAP_ALGO_MAP2: - (*s->aux.map2_aux) = (*tmp_sam.aux.map2_aux); - break; + (*s->aux.map2_aux) = (*tmp_sam.aux.map2_aux); + break; case TMAP_MAP_ALGO_MAP3: - (*s->aux.map3_aux) = (*tmp_sam.aux.map3_aux); - break; + (*s->aux.map3_aux) = (*tmp_sam.aux.map3_aux); + break; case TMAP_MAP_ALGO_MAP4: - (*s->aux.map4_aux) = (*tmp_sam.aux.map4_aux); - break; + (*s->aux.map4_aux) = (*tmp_sam.aux.map4_aux); + break; case TMAP_MAP_ALGO_MAPVSW: - (*s->aux.map_vsw_aux) = (*tmp_sam.aux.map_vsw_aux); - break; + (*s->aux.map_vsw_aux) = (*tmp_sam.aux.map_vsw_aux); + break; default: - tmap_error("bug encountered", Exit, OutOfRange); - break; - } - (*idx)++; - } - } - return tmp_sam.score; + tmap_error ("bug encountered", Exit, OutOfRange); + break; + } + (*idx)++; + } + } + return tmp_sam.score; } -typedef struct +typedef struct __tmap_map_util_gen_score_t { uint32_t seqid; int8_t strand; @@ -1852,7 +2239,9 @@ tmap_map_util_sw_gen_score tmap_seq_t **seqs, tmap_rand_t *rand, tmap_map_opt_t *opt, - int32_t *num_after_grouping + int32_t *num_after_grouping, + tmap_map_stats_t *stat // statistics + ) { int32_t i, j; @@ -1871,31 +2260,40 @@ tmap_map_util_sw_gen_score int32_t num_groups = 0, num_groups_filtered = 0; double stage_seed_freqc = opt->stage_seed_freqc; int32_t max_group_size = 0, repr_hit, filter_ok = 0; + tmap_map_amplicon_info *amplicons = NULL; + uint32_t amplicons_capacity = 0; + // tmap_map_amplicon_info chosen_amplicon; - if(NULL != num_after_grouping) (*num_after_grouping) = 0; + if (NULL != num_after_grouping) (*num_after_grouping) = 0; - if(0 == sams->n) { + if (0 == sams->n) { return sams; } // the final mappings will go here - sams_tmp = tmap_map_sams_init(sams); - tmap_map_sams_realloc(sams_tmp, sams->n); + sams_tmp = tmap_map_sams_init (sams); + tmap_map_sams_realloc (sams_tmp, sams->n); + + init_amplicon_info (&licons, &licons_capacity, 0); + + // sort by strand / chr/pos / score + tmap_sort_introsort (tmap_map_sam_sort_coord, sams->n, sams->sams); - // sort by strand/chr/pos/score - tmap_sort_introsort(tmap_map_sam_sort_coord, sams->n, sams->sams); - tmap_map_util_set_softclip(opt, seq, opt->max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); + // ! This may be re-set later (in _helper) for the hits located in the overriding amplions + tmap_map_util_set_softclip (opt->softclip_type, seq, opt->max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); - // initialize opt - vsw_opt = tmap_vsw_opt_init(opt->score_match, opt->pen_mm, opt->pen_gapo, opt->pen_gape, opt->score_thr); + // initialize opt for initial vsw set up - the parameters set here can be overriden later in tmap_map_util_sw_gen_score_helper, if the hit position appears to be within overriden amplicon + vsw_opt = tmap_vsw_opt_init (opt->score_match, opt->pen_mm, opt->pen_gapo, opt->pen_gape, opt->score_thr); // init seqs - seq_len = tmap_seq_get_bases_length(seqs[0]); + seq_len = tmap_seq_get_bases_length (seqs [0]); + // seq_len = tmap_seq_get_bases_length (seq); // forward - vsw = tmap_vsw_init((uint8_t*)tmap_seq_get_bases(seqs[0])->s, seq_len, softclip_start, softclip_end, opt->vsw_type, vsw_opt); + vsw = tmap_vsw_init ((uint8_t*)tmap_seq_get_bases (seqs [0])->s, seq_len, softclip_start, softclip_end, opt->vsw_type, opt->vsw_fallback, vsw_opt); + // vsw = tmap_vsw_init ((uint8_t*)tmap_seq_get_bases (seq)->s, seq_len, softclip_start, softclip_end, opt->vsw_type, vsw_opt); // pre-allocate groups - groups = tmap_calloc(sams->n, sizeof(tmap_map_util_gen_score_t), "groups"); + groups = tmap_calloc (sams->n, sizeof (tmap_map_util_gen_score_t), "groups"); // determine groups num_groups = num_groups_filtered = 0; @@ -1903,41 +2301,41 @@ tmap_map_util_sw_gen_score start_pos = end_pos = 0; best_subo_score = INT32_MIN; // track the best sub-optimal hit repr_hit = 0; - while(end < sams->n) { + while (end < sams->n) { uint32_t seqid; uint8_t strand; - // get the strand/start/end positions - seqid = sams->sams[end].seqid; - strand = sams->sams[end].strand; + // get the strand / start/end positions + seqid = sams->sams [end].seqid; + strand = sams->sams [end].strand; //first pass, setup start and end - if(start == end) { - tmap_map_util_sw_get_start_and_end_pos(&sams->sams[start], seq_len, strand, &start_pos, &end_pos); + if (start == end) { + tmap_map_util_sw_get_start_and_end_pos (&sams->sams [start], seq_len, strand, &start_pos, &end_pos); end_pos_prev = end_pos; - repr_hit = sams->sams[end].repr_hit; + repr_hit = sams->sams [end].repr_hit; } // sub-optimal score - if(best_subo_score < sams->sams[end].score_subo) { - best_subo_score = sams->sams[end].score_subo; + if (best_subo_score < sams->sams [end].score_subo) { + best_subo_score = sams->sams [end].score_subo; } // check if the hits can be banded - //fprintf(stderr, "end=%d seqid: %d start: %d end: %d\n", end, sams->sams[end].seqid, sams->sams[end].pos, (sams->sams[end].pos + sams->sams[end].target_len)); - if(end + 1 < sams->n) { - //fprintf(stderr, "%d seed start: %d end: %d next start: %d next end: %d\n", end, sams->sams[end].pos, (sams->sams[end].pos + sams->sams[end].target_len), sams->sams[end+1].pos, (sams->sams[end+1].pos + sams->sams[end+1].target_len)); - if(sams->sams[end].strand == sams->sams[end+1].strand - && sams->sams[end].seqid == sams->sams[end+1].seqid) { - tmap_map_util_sw_get_start_and_end_pos(&sams->sams[end+1], seq_len, strand, &start_pos_cur, &end_pos_cur); - - if(start_pos_cur <= end_pos_prev // NB: beware of unsigned int underflow + //fprintf (stderr, "end=%d seqid: %d start: %d end: %d\n", end, sams->sams [end].seqid, sams->sams [end].pos, (sams->sams [end].pos + sams->sams [end].target_len)); + if (end + 1 < sams->n) { + //fprintf (stderr, "%d seed start: %d end: %d next start: %d next end: %d\n", end, sams->sams [end].pos, (sams->sams [end].pos + sams->sams [end].target_len), sams->sams [end + 1].pos, (sams->sams [end + 1].pos + sams->sams [end + 1].target_len)); + if (sams->sams [end].strand == sams->sams [end + 1].strand + && sams->sams [end].seqid == sams->sams [end + 1].seqid) { + tmap_map_util_sw_get_start_and_end_pos (&sams->sams [end + 1], seq_len, strand, &start_pos_cur, &end_pos_cur); + + if (start_pos_cur <= end_pos_prev // NB: beware of unsigned int underflow || (start_pos_cur - end_pos_prev) <= opt->max_seed_band) { end++; - if(end_pos < end_pos_cur) { + if (end_pos < end_pos_cur) { end_pos = end_pos_cur; } end_pos_prev = end_pos_cur; - repr_hit |= sams->sams[end].repr_hit; // representitive hit + repr_hit |= sams->sams [end].repr_hit; // representitive hit continue; // there may be more to add } @@ -1947,25 +2345,25 @@ tmap_map_util_sw_gen_score // add a group num_groups++; // update - groups[num_groups-1].seqid = seqid; - groups[num_groups-1].strand = strand; - groups[num_groups-1].start = start; - groups[num_groups-1].end = end; - groups[num_groups-1].start_pos = start_pos; - groups[num_groups-1].end_pos = end_pos; - groups[num_groups-1].filtered = 0; // assume not filtered, not guilty - groups[num_groups-1].repr_hit = repr_hit; - if(max_group_size < end - start + 1) { + groups [num_groups-1].seqid = seqid; + groups [num_groups-1].strand = strand; + groups [num_groups-1].start = start; + groups [num_groups-1].end = end; + groups [num_groups-1].start_pos = start_pos; + groups [num_groups-1].end_pos = end_pos; + groups [num_groups-1].filtered = 0; // assume not filtered, not guilty + groups [num_groups-1].repr_hit = repr_hit; + if (max_group_size < end - start + 1) { max_group_size = end - start + 1; } - // update start/end + // update start / end end++; start = end; } // resize - if(num_groups < sams->n) { - groups = tmap_realloc(groups, num_groups * sizeof(tmap_map_util_gen_score_t), "groups"); + if (num_groups < sams->n) { + groups = tmap_realloc (groups, num_groups * sizeof (tmap_map_util_gen_score_t), "groups"); } // filter groups @@ -1975,11 +2373,11 @@ tmap_map_util_sw_gen_score { num_groups_filtered = 0; - for(i=0;i(sams->n * opt->seed_freqc ) comes from /* @@ -1991,13 +2389,13 @@ tmap_map_util_sw_gen_score * if a region has ≥fC q-hits, only then it is processed further. " */ /* - fprintf(stderr, "repr_hit=%d size=%d freq=%lf\n", + fprintf (stderr, "repr_hit=%d size=%d freq=%lf\n", group->repr_hit, (group->end - group->start + 1), ( sams->n * stage_seed_freqc)); */ - if(0 == group->repr_hit && (group->end - group->start + 1) > ( sams->n * stage_seed_freqc) ) + if (0 == group->repr_hit && (group->end - group->start + 1) > ( sams->n * stage_seed_freqc) ) { group->filtered = 0; } @@ -2009,23 +2407,23 @@ tmap_map_util_sw_gen_score } /* - fprintf(stderr, "stage_seed_freqc=%lf num_groups=%d num_groups_filtered=%d\n", + fprintf (stderr, "stage_seed_freqc=%lf num_groups=%d num_groups_filtered=%d\n", stage_seed_freqc, num_groups, num_groups_filtered); */ - if(opt->stage_seed_freqc_min_groups <= num_groups + if (opt->stage_seed_freqc_min_groups <= num_groups && (num_groups - num_groups_filtered) < opt->stage_seed_freqc_min_groups) { stage_seed_freqc /= 2.0; // reset - for(i=0;ifiltered = 0; } num_groups_filtered = 0; - if(stage_seed_freqc < 1.0 / sams->n) + if (stage_seed_freqc < 1.0 / sams->n) { // the filter will accept all hits break; } @@ -2036,35 +2434,35 @@ tmap_map_util_sw_gen_score break; } } - while(1); + while (1); - if(num_groups < opt->stage_seed_freqc_min_groups) + if (num_groups < opt->stage_seed_freqc_min_groups) { // if too few groups, always keep // reset - for(i=0;ifiltered = 0; } num_groups_filtered = 0; } - else if(0 == filter_ok) + else if (0 == filter_ok) { // we could not find an effective filter int32_t cur_max; // Try filtering based on retaining the groups with most number of seeds. cur_max = (max_group_size * 2) - 1; // NB: this will be reduced // Assume all are filtered num_groups_filtered = num_groups; - while(num_groups - num_groups_filtered < opt->stage_seed_freqc_min_groups) + while (num_groups - num_groups_filtered < opt->stage_seed_freqc_min_groups) { // too many groups were filtered num_groups_filtered = 0; // halve the minimum group size cur_max /= 2; // go through the groups - for(i=0;iend - group->start + 1 < cur_max) + tmap_map_util_gen_score_t *group = &groups [i]; + if (group->end - group->start + 1 < cur_max) { // filter if there were too few seeds group->filtered = 1; num_groups_filtered++; @@ -2078,27 +2476,27 @@ tmap_map_util_sw_gen_score } /* - for(i=j=0;ifiltered && 0 == group->repr_hit) continue; + for (i=j=0;ifiltered && 0 == group->repr_hit) continue; j++; } - fprintf(stderr, "num_groups=%d num_groups_filtered=%d j=%d\n", num_groups, num_groups_filtered, j); + fprintf (stderr, "num_groups=%d num_groups_filtered=%d j=%d\n", num_groups, num_groups_filtered, j); */ /* - fprintf(stderr, "final sams->n=%d num_groups=%d num_groups_filtered=%d\n", + fprintf (stderr, "final sams->n=%d num_groups=%d num_groups_filtered=%d\n", sams->n, num_groups, num_groups_filtered); */ // process unfiltered... - for(i=j=0;istart, group->end, group->end - group->start + 1, @@ -2109,9 +2507,9 @@ tmap_map_util_sw_gen_score group->repr_hit, group->filtered); */ - if(1 == group->filtered && 0 == group->repr_hit) continue; + if (1 == group->filtered && 0 == group->repr_hit) continue; /* - fprintf(stderr, "start=%d end=%d num=%d seqid=%u strand=%d start_pos=%u end_pos=%u filtered=%d\n", + fprintf (stderr, "start=%d end=%d num=%d seqid=%u strand=%d start_pos=%u end_pos=%u filtered=%d\n", group->start, group->end, group->end - group->start + 1, @@ -2123,41 +2521,45 @@ tmap_map_util_sw_gen_score */ // generate the score - tmap_map_util_sw_gen_score_helper(refseq, sams, seqs[0], sams_tmp, &j, group->start, group->end, + tmap_map_util_sw_gen_score_helper (refseq, sams, seq, seqs [0], sams_tmp, &j, group->start, group->end, group->strand, vsw, seq_len, group->start_pos, group->end_pos, &target_mem, &target, - softclip_start, softclip_end, + // softclip_start, softclip_end, -1, // this is our first call opt->max_seed_band, // NB: this may be modified as banding is unrolled opt->score_thr-1, - vsw_opt, rand, opt); + vsw_opt, rand, opt, + &licons, + &licons_capacity, + stat + ); // save the number of groups - if(NULL != num_after_grouping) (*num_after_grouping)++; + if (NULL != num_after_grouping) (*num_after_grouping)++; } - //fprintf(stderr, "unfiltered # = %d\n", j); + //fprintf (stderr, "unfiltered # = %d\n", j); // only if we applied the freqc filter - if(0 < stage_seed_freqc && 0 < opt->stage_seed_freqc_rand_repr) + if (0 < stage_seed_freqc && 0 < opt->stage_seed_freqc_rand_repr) { // check if we filtered too many groups, and so if we should keep // representative hits. /* - fprintf(stderr, "Should we get representatives %lf < %lf\n", + fprintf (stderr, "Should we get representatives %lf < %lf\n", opt->stage_seed_freqc_group_frac, (double)num_groups_filtered / num_groups); */ - if(opt->stage_seed_freqc_group_frac <= (double)num_groups_filtered / num_groups) + if (opt->stage_seed_freqc_group_frac <= (double)num_groups_filtered / num_groups) { int32_t best_score = INT32_MIN, best_score_filt = INT32_MIN; double pr = 0.0; int32_t k, l, c, n; // get the best score from a group that passed the filter - for(k=0;ksams[k].score) + if (best_score < sams_tmp->sams [k].score) { - best_score = sams_tmp->sams[k].score; + best_score = sams_tmp->sams [k].score; } } @@ -2166,49 +2568,57 @@ tmap_map_util_sw_gen_score // pick the one with the most # of seeds c = l = -1; - for(i=0;ifiltered) continue; - if(c < group->end - group->start + 1) + tmap_map_util_gen_score_t *group = &groups [i]; + if (0 == group->filtered) continue; + if (c < group->end - group->start + 1) { c = group->end - group->start + 1; l = i; } } - if(0 <= l) + if (0 <= l) { - tmap_map_util_gen_score_t *group = &groups[l]; + tmap_map_util_gen_score_t *group = &groups [l]; // generate the score - tmap_map_util_sw_gen_score_helper(refseq, sams, seqs[0], sams_tmp, &j, group->start, group->end, + tmap_map_util_sw_gen_score_helper (refseq, sams, seq, seqs [0], sams_tmp, &j, group->start, group->end, group->strand, vsw, seq_len, group->start_pos, group->end_pos, &target_mem, &target, - softclip_start, softclip_end, + // softclip_start, softclip_end, -1, // this is our first call opt->max_seed_band, // NB: this may be modified as banding is unrolled opt->score_thr-1, - vsw_opt, rand, opt); + vsw_opt, rand, opt, + &licons, + &licons_capacity, + stat + ); group->filtered = 0; // no longer filtered } // now, choose uniformly - pr = num_groups / (1+opt->stage_seed_freqc_rand_repr); - for(i=c=n=0;istage_seed_freqc_rand_repr); + for (i=c=n=0;ifiltered) continue; - if(pr < c) + tmap_map_util_gen_score_t *group = &groups [i]; + if (0 == group->filtered) continue; + if (pr < c) { - if(n == opt->stage_seed_freqc_rand_repr) break; + if (n == opt->stage_seed_freqc_rand_repr) break; // generate the score - tmap_map_util_sw_gen_score_helper(refseq, sams, seqs[0], sams_tmp, &j, group->start, group->end, + tmap_map_util_sw_gen_score_helper (refseq, sams, seq, seqs [0], sams_tmp, &j, group->start, group->end, group->strand, vsw, seq_len, group->start_pos, group->end_pos, &target_mem, &target, - softclip_start, softclip_end, + // softclip_start, softclip_end, -1, // this is our first call opt->max_seed_band, // NB: this may be modified as banding is unrolled opt->score_thr-1, - vsw_opt, rand, opt); + vsw_opt, rand, opt, + &licons, + &licons_capacity, + stat + ); group->filtered = 0; // no longer filtered n++; // reset @@ -2217,64 +2627,69 @@ tmap_map_util_sw_gen_score } // get the best from the filtered - for(;ksams[k].score) + if (best_score_filt < sams_tmp->sams [k].score) { - best_score_filt = sams_tmp->sams[k].score; + best_score_filt = sams_tmp->sams [k].score; } } /* - fprintf(stderr, "best_score=%d best_score_filt=%d\n", + fprintf (stderr, "best_score=%d best_score_filt=%d\n", best_score, best_score_filt); */ // check if we should redo ALL the filtered groups - if(best_score < best_score_filt) + if (best_score < best_score_filt) { // NB: do not redo others... - for(i=0;ifiltered) continue; + tmap_map_util_gen_score_t *group = &groups [i]; + if (0 == group->filtered) continue; // generate the score - tmap_map_util_sw_gen_score_helper(refseq, sams, seqs[0], sams_tmp, &j, group->start, group->end, + tmap_map_util_sw_gen_score_helper (refseq, sams, seq, seqs [0], sams_tmp, &j, group->start, group->end, group->strand, vsw, seq_len, group->start_pos, group->end_pos, &target_mem, &target, - softclip_start, softclip_end, + // softclip_start, softclip_end, -1, // this is our first call opt->max_seed_band, // NB: this may be modified as banding is unrolled opt->score_thr-1, - vsw_opt, rand, opt); + vsw_opt, rand, opt, + &licons, + &licons_capacity, + stat + ); } } } } // realloc - tmap_map_sams_realloc(sams_tmp, j); + tmap_map_sams_realloc (sams_tmp, j); // sub-optimal score - for(i=0;in;i++) + for (i=0;in;i++) { - if(best_subo_score < sams_tmp->sams[i].score_subo) + if (best_subo_score < sams_tmp->sams [i].score_subo) { - best_subo_score = sams_tmp->sams[i].score_subo; + best_subo_score = sams_tmp->sams [i].score_subo; } } // update the sub-optimal - for(i=0;in;i++) + for (i=0;in;i++) { - sams_tmp->sams[i].score_subo = best_subo_score; + sams_tmp->sams [i].score_subo = best_subo_score; } // free memory - tmap_map_sams_destroy(sams); - free(target); - tmap_vsw_opt_destroy(vsw_opt); - tmap_vsw_destroy(vsw); - free(groups); + tmap_map_sams_destroy (sams); + free (target); + destroy_amplicon_info (&licons, &licons_capacity); + tmap_vsw_opt_destroy (vsw_opt); + tmap_vsw_destroy (vsw); + free (groups); return sams_tmp; } @@ -2457,6 +2872,7 @@ tmap_map_util_one_gap int *is_ins, // 1 == Ins, 0 == Del int *softclip, // length of prefix softclip int pad, // the extension on either size of target buffer that is safe to access. This function checks this many bases as continuation of M segment as if no indel was present + int matched_bases, int *extra_match // number of consecutive matches after M segment end (check relation with pad. Are these bases in the pad??) ) { @@ -2536,7 +2952,7 @@ tmap_map_util_one_gap if (j == tlen) { *indel_size = qlen-q; - *is_ins = 1; + *is_ins = 1; } else { @@ -2558,6 +2974,7 @@ tmap_map_util_one_gap break; (*extra_match) += 1; } + if (*extra_match >= matched_bases) return 0; // cannot have leading indel, total duplication or no extra anchor, TS-18181 int total_anchor = ((qlen < tlen-i)? qlen: tlen-i) + (*extra_match); if (total_anchor < min_size) continue; if (total_anchor < 15 && *indel_size > 3 * (qlen + (*extra_match))) // reject indels 3 or more times longer than query + matching 'pad' @@ -2796,7 +3213,7 @@ tmap_map_util_end_repair return repaired; // check if we allow soft-clipping on the 5' end - tmap_map_util_set_softclip (opt, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); + tmap_map_util_set_softclip (opt->softclip_type, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); int8_t o_strand = strand; if (end_repair > 2) // Modern End-Repair, invoked when --end-repair parameter is above 2 (and denotes percent of mismatches above which to trim the alignment) { @@ -3029,7 +3446,7 @@ tmap_map_util_end_repair int min_anchor = min_anchor_large_indel_rescue; int half_anchor = min_anchor / 2; if (refseq->bed_exist && use_bed_in_end_repair && total_scl >= half_anchor && s->ampl_start != 0) - // tmap_map_get_amplicon (refseq, s->seqid, start_o, end_o, &l_start, &l_end, NULL, o_strand)) // DK: if bed exists and coords use in end repair enabled, the amplicon coords are cached within *s (tmap_map_sam_t) + // tmap_map_get_amplicon (refseq, s->seqid, start_o, end_o, o_strand, &l_start, &l_end, NULL)) // DK: if bed exists and coords use in end repair enabled, the amplicon coords are cached within *s (tmap_map_sam_t) { //total_scl is desired to be larger than 5 //fprintf(stderr, "%d %d %d qlen=%d\n", ampl_start, ampl_end, total_scl, qlen); @@ -3049,11 +3466,13 @@ tmap_map_util_end_repair int buffer = half_buffer + 3; uint32_t start, end; uint32_t pad_s, pad_e, pad; + uint32_t matched_bases; pad_s = pad_e = pad = 0; if (strand == 0) { start = s->pos + s->target_len + 1 - s_pos_adj; end = s->ampl_end + half_buffer; + matched_bases = start-s->pos-1; pad_s = 100; if (pad_s > qlen - total_scl) pad_s = qlen - total_scl; @@ -3069,6 +3488,7 @@ tmap_map_util_end_repair else start = s->ampl_start - half_buffer; end = s->pos + s_pos_adj; + matched_bases = s->pos+s->target_len-end; pad_e = 100; if (pad_e > qlen - total_scl) pad_e = qlen - total_scl; @@ -3076,6 +3496,7 @@ tmap_map_util_end_repair pad_e = refseq->annos [s->seqid].len - end; pad = pad_e; } + // effectively matched_bases = s->target_len-s_pos_adj; The target_len is the reference length after softclipping tlen = end - start + 1; //fprintf(stderr, "%d %d %d %d %d\n", start, end, tlen, min_anchor, pad); //if (tlen >= min_anchor) @@ -3110,6 +3531,7 @@ tmap_map_util_end_repair &is_ins, // 1==I, 0==D &softclip, // size of softclip pad, // size of pad on either side of target // DK: what if assymetric, like at the end of chromosome? + matched_bases, // tell the rountine how many bases the rest of cigar matched to the ref &extra_match)) // { free (target); @@ -4805,6 +5227,7 @@ int find_alignment_start ( tmap_map_sam_t* src_sam, // source: raw (position-only) mapping tmap_map_sam_t* dest_sam, // destination: refined (aligned) mapping + tmap_seq_t* seq, // // needed to set overriden softclip tmap_seq_t** seqs, // array of size 4 that contains pre-computed inverse / complement combinations tmap_refseq_t* refseq, // reference server int32_t softclip_start, // is 5' softclip allowed @@ -4832,6 +5255,16 @@ int find_alignment_start // uint8_t *query_rc = NULL; int32_t qlen = src_sam->result.query_end + 1; // adjust based on the query end; +// #define DEBUG_VSW_ASSYMETRY +#ifdef DEBUG_VSW_ASSYMETRY + { + for (int dd = 0; dd != qlen; ++dd) + if (query_rc [dd] >= 4) + { + tmap_warning ("QUERY Base [%d] is %d\n", dd, query_rc [dd]); + } + } +#endif // do not band when generating the cigar tmap_map_sam_t tmp_sam; // TODO: actually, only the .pos, .score and .result members change; it would be cleaner to use only them tmp_sam = *src_sam; @@ -4843,24 +5276,52 @@ int find_alignment_start // reverse compliment the target_buf if(0 == src_sam->strand) tmap_reverse_compliment_int (target->data, target->data_len); +#ifdef DEBUG_VSW_ASSYMETRY + { + for (int dd = 0; dd != target->data_len; ++dd) + if (target->data [dd] >= 4) + { + tmap_warning ("TAGET Base [%d] is %d\n", dd, target->data [dd]); + } + } +#endif + + // check if the amplicon was found and has overrides + candeval_overrides_s override; + ampl_candeval_parameters_from_sam (opt, src_sam, &override); + // save default parameters + tmap_vsw_opt_t orig_vsw_opt = *(vsw->opt); + int32_t orig_softclip_start = vsw->query_start_clip, orig_softclip_end = vsw->query_end_clip; + + tmap_map_util_set_softclip (override.softclip_type, seq, override.max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); + // tmap_vsw_set_params (vsw, softclip_start, softclip_end, &(override.vsw)); + + //DK: since we compute in reverse direction, softclip_end is at the start and softclip_start is at the end of the alignment! + tmap_vsw_set_params (vsw, softclip_end, softclip_start, &(override.vsw)); + // NB: if match/mismatch penalties are on the opposite strands, we may // have wrong scores // NB: this aligns in the opposite direction than sequencing (3'->5') int32_t overflow; + int32_t orig_score = tmp_sam.score; tmp_sam.score = tmap_vsw_process_rev (vsw, query_rc, qlen, target->data, target->data_len, &tmp_sam.result, &overflow, opt->score_thr, - (1 == softclip_end && 1 == softclip_start) ? 0 : 1); // NB: to guarantee correct soft-clipping if both ends are clipped + (1 == softclip_end && 1 == softclip_start) ? 0 : 1, opt->confirm_vsw_corr, opt->correct_failed_vsw, opt->use_nvsw_on_nonstd_bases, stat); // NB: to guarantee correct soft-clipping if both ends are clipped if(1 == overflow) - tmap_bug(); + tmap_bug (); - // reverse back compliment the target_buf + // reset vsw parameters to orig + tmap_vsw_set_params (vsw, orig_softclip_start, orig_softclip_end, &(orig_vsw_opt)); + + // reverse-compliment the target_buf back if(0 == tmp_sam.strand) tmap_reverse_compliment_int (target->data, target->data_len); - if (tmp_sam.score < opt->score_thr) // this could happen if VSW fails. Just skip the damned, with no warning ?!? - return 0; // TODO: may beed warning or error report here + if (tmp_sam.score < opt->score_thr) // this could happen if VSW fails. + // The score error is reported in tmap_vsw_process_rev, no need to repeat it here (the overflows are not reported on stderr but reported in stats) + return 0; if (0 == tmp_sam.strand) { @@ -5137,7 +5598,7 @@ void salvage_long_indel_at_edges ( int32_t long_gap = pen_gapl; //ZZ: check amplicon // uint32_t ampl_start = 0, ampl_end = 0; - // if (tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, &l_start, &l_end, NULL, dest_sam->strand)) + // if (tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, dest_sam->strand, &l_start, &l_end, NULL)) if (dest_sam->ampl_end != 0) { // ampl_exist = 1; @@ -5327,7 +5788,7 @@ void salvage_long_indel_at_edges ( // DK : if both suffix and prefix branches are executed, and the read hits the amplicon, the ampl_exist is 1 here // so tmap_map_get_amplicon is not executed and 0 is used as the value of ampl_end // Removing ampl_exist check clause from here. - // if (ampl_exist || tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, &l_start, &l_end, NULL, dest_sam->strand)) + // if (ampl_exist || tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, dest_sam->strand, &l_start, &l_end, NULL)) if (dest_sam->ampl_end != 0) { // ampl_exist = 1; @@ -5768,7 +6229,7 @@ void end_repair ( max_adapter_bases_for_soft_clipping = dest_sam->param_ovr->max_adapter_bases_for_soft_clipping.value; } } - tmap_map_util_set_softclip (opt, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); // this is done within end_repair anyway; doing redundant call here to check for ins instead of softclp inend_repair_helper + tmap_map_util_set_softclip (opt->softclip_type, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); // this is done within end_repair anyway; doing redundant call here to check for ins instead of softclp inend_repair_helper int32_t r3 = end_repair_helper (dest_sam, seqs, seq, refseq, target, path_buf, path_buf_sz, softclip_start, softclip_end, opt, /* stage_swpar, */ stat, 0); max_adapter_bases_for_soft_clipping = opt->max_adapter_bases_for_soft_clipping; @@ -5789,7 +6250,7 @@ void end_repair ( max_adapter_bases_for_soft_clipping = dest_sam->param_ovr->max_adapter_bases_for_soft_clipping.value; } } - tmap_map_util_set_softclip (opt, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); // this is done within end_repair anyway; doing redundant call here to check for ins instead of softclp inend_repair_helper + tmap_map_util_set_softclip (opt->softclip_type, seq, max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); // this is done within end_repair anyway; doing redundant call here to check for ins instead of softclp inend_repair_helper int32_t r5 = end_repair_helper (dest_sam, seqs, seq, refseq, target, path_buf, path_buf_sz, softclip_start, softclip_end, opt, /* stage_swpar, */ stat, 1); // update alignment box (dest_sam->result), as it may be used downstream @@ -5887,7 +6348,7 @@ tmap_map_util_find_align_starts ( tmap_map_sams_realloc (sams_tmp, sams->n); // pre-allocate for same number of mappings // set softclip flags, rule-based - tmap_map_util_set_softclip (opt, seq, opt->max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); + tmap_map_util_set_softclip (opt->softclip_type, seq, opt->max_adapter_bases_for_soft_clipping, &softclip_start, &softclip_end); // initialize opt vsw_opt = tmap_vsw_opt_init (opt->score_match, opt->pen_mm, opt->pen_gapo, opt->pen_gape, opt->score_thr); @@ -5896,7 +6357,7 @@ tmap_map_util_find_align_starts ( orig_query_len = tmap_seq_get_bases_length (seqs [0]); // reverse compliment query - vsw = tmap_vsw_init ((uint8_t*) tmap_seq_get_bases(seqs[1])->s, orig_query_len, softclip_end, softclip_start, opt->vsw_type, vsw_opt); + vsw = tmap_vsw_init ((uint8_t*) tmap_seq_get_bases(seqs[1])->s, orig_query_len, softclip_end, softclip_start, opt->vsw_type, opt->vsw_fallback, vsw_opt); for (end = 0, i = 0; end < sams->n; ++end) // for each placement { @@ -5906,6 +6367,7 @@ tmap_map_util_find_align_starts ( if (find_alignment_start ( src_sam, // source: raw (position-only) mapping dest_sam, // destination: refined (aligned) mapping + seq, seqs, // array of size 4 that contains pre-computed inverse / complement combinations refseq, // reference server softclip_start, // is 5' softclip allowed @@ -5946,29 +6408,47 @@ void tmap_map_find_amplicons for (i = 0; i < sams->n; ++i) // for each placement { tmap_map_sam_t* dest_sam = sams->sams + i; - locopt = NULL, ampl_start = 0, ampl_end = 0; - ends.positions = NULL, ends.starts_count = 0, ends.ends_count = 0; - if (tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, &l_start, &l_end, &locopt, &ends, dest_sam->strand)) - { - dest_sam->ampl_start = ampl_start; - dest_sam->ampl_end = ampl_end; - dest_sam->param_ovr = locopt; - // - // check if override sw parameters for stage are already cached; cache if not - // - // !!! TS-17814: do not do this here - causes race condition. Protecting against that causes seralization bottleneck - // do not uncomment the line that follows without #defining CONCURRENT_PARAMETERS_CACHE - // - // cache_sw_overrides (locopt, stage_ord, stage_opt, def_sw_par); - // - dest_sam->read_ends = ends; - } - else + // only try to assign amplions for the not yet assigned ones + // (if parameters overriding in candidate evaluation is enabled, the amplicons are already assigned) +// #define DEBUG_AMPLFIND_COMPARE +#ifndef DEBUG_AMPLFIND_COMPARE + if (dest_sam->ampl_start == 0 && dest_sam->ampl_end == 0) +#endif { - dest_sam->ampl_start = 0; - dest_sam->ampl_end = 0; - dest_sam->param_ovr = NULL; - dest_sam->read_ends.positions = NULL, dest_sam->read_ends.starts_count = 0, dest_sam->read_ends.ends_count = 0; + locopt = NULL, ampl_start = 0, ampl_end = 0; + ends.positions = NULL, ends.starts_count = 0, ends.ends_count = 0; + + if (tmap_map_get_amplicon (refseq, dest_sam->seqid, dest_sam->pos, dest_sam->pos + dest_sam->target_len, dest_sam->strand, &l_start, &l_end, &locopt, &ends)) + { +#ifdef DEBUG_AMPLFIND_COMPARE + if (dest_sam->ampl_start != 0 || dest_sam->ampl_end != 0) + { + if (dest_sam->ampl_start != ampl_start || dest_sam->ampl_end != ampl_end) + tmap_warning ("Old amplicon find gives result different than new: old: %d-%d, new %d-%d\n", ampl_start, ampl_end, dest_sam->ampl_start, dest_sam->ampl_end); + } +#endif + dest_sam->ampl_start = ampl_start; + dest_sam->ampl_end = ampl_end; + dest_sam->param_ovr = locopt; + // + // check if override sw parameters for stage are already cached; cache if not + // + // !!! TS-17814: do not do this here - causes race condition. Protecting against that causes seralization bottleneck + // do not uncomment the line that follows without #defining CONCURRENT_PARAMETERS_CACHE + // + // cache_sw_overrides (locopt, stage_ord, stage_opt, def_sw_par); + // + dest_sam->read_ends = ends; + } +#if 0 // this is redundant now + else + { + dest_sam->ampl_start = 0; + dest_sam->ampl_end = 0; + dest_sam->param_ovr = NULL; + dest_sam->read_ends.positions = NULL, dest_sam->read_ends.starts_count = 0, dest_sam->read_ends.ends_count = 0; + } +#endif } } } diff --git a/Analysis/TMAP/src/map/util/tmap_map_util.h b/Analysis/TMAP/src/map/util/tmap_map_util.h index af910a31..e78c7980 100644 --- a/Analysis/TMAP/src/map/util/tmap_map_util.h +++ b/Analysis/TMAP/src/map/util/tmap_map_util.h @@ -431,7 +431,9 @@ tmap_map_util_sw_gen_score tmap_seq_t **seqs, tmap_rand_t *rand, tmap_map_opt_t *opt, - int32_t *num_after_grouping + int32_t *num_after_grouping, + tmap_map_stats_t *stat // statistics + ); void tmap_map_util_populate_sw_par_iupac_direct @@ -740,11 +742,11 @@ tmap_map_get_amplicon int32_t seqid, uint32_t start, uint32_t end, + uint32_t strand, uint32_t *ampl_start, uint32_t *ampl_end, tmap_map_locopt_t** overrides, - tmap_map_endstat_p_t* ends, - uint32_t strand + tmap_map_endstat_p_t* ends ); uint8_t diff --git a/Analysis/TMAP/src/realign/Realign.cpp b/Analysis/TMAP/src/realign/Realign.cpp index db22f15b..19831366 100644 --- a/Analysis/TMAP/src/realign/Realign.cpp +++ b/Analysis/TMAP/src/realign/Realign.cpp @@ -74,14 +74,14 @@ void Realigner::InitializeRealigner(unsigned int reserve_size, unsigned int clip isForwardStrandRead_ = true; verbose_ = false; invalid_cigar_in_input = false; - + alignment_bandwidth_ = 20; q_limit_minus_.reserve(reserve_size); q_limit_plus_.reserve(reserve_size); - clipped_anchors_.cigar_left.reserve(50); - clipped_anchors_.cigar_right.reserve(50); - clipped_anchors_.md_left.reserve(50); - clipped_anchors_.md_right.reserve(50); + clipped_anchors_.cigar_left.reserve(clipping_size); + clipped_anchors_.cigar_right.reserve(clipping_size); + clipped_anchors_.md_left.reserve(clipping_size); + clipped_anchors_.md_right.reserve(clipping_size); pretty_tseq_.reserve(reserve_size); pretty_qseq_.reserve(reserve_size); diff --git a/Analysis/TMAP/src/seq/tmap_sam.c b/Analysis/TMAP/src/seq/tmap_sam.c index 70f410e6..6680df1c 100644 --- a/Analysis/TMAP/src/seq/tmap_sam.c +++ b/Analysis/TMAP/src/seq/tmap_sam.c @@ -143,7 +143,8 @@ tmap_sam_get_zb(tmap_sam_t *sam) { uint8_t *tag = NULL; // ZB - if(NULL == sam->b) tmap_bug(); + if(NULL == sam->b) + tmap_bug(); tag = bam_aux_get(sam->b, "ZB"); if(NULL != tag) return bam_aux2i(tag); else return -1; diff --git a/Analysis/TMAP/src/seq/tmap_seq.c b/Analysis/TMAP/src/seq/tmap_seq.c index 1df60f79..373c8c52 100644 --- a/Analysis/TMAP/src/seq/tmap_seq.c +++ b/Analysis/TMAP/src/seq/tmap_seq.c @@ -7,6 +7,8 @@ #include "tmap_sff.h" #include "tmap_seq.h" +seq_update_cache_t update_cache; + tmap_seq_t * tmap_seq_init(int8_t type) { @@ -333,6 +335,8 @@ tmap_seq_update(tmap_seq_t *seq, int32_t idx, sam_header_t *header) sam_header_records_t *records = NULL; sam_header_record_t **record_list = NULL; int32_t n = 0; + int32_t use_cache = 0; + // Read Group switch(seq->type) { @@ -347,6 +351,19 @@ tmap_seq_update(tmap_seq_t *seq, int32_t idx, sam_header_t *header) tmap_error("type is unrecognized", Exit, OutOfRange); break; } + + if(update_cache.rg_id == NULL){ + update_cache.rg_id = rg_id; + } + else{ + if(update_cache.rg_id == rg_id){ + use_cache=1; + } + else{ + update_cache.rg_id=rg_id; + } + } + if(NULL == rg_id) { // did not find in SAM/BAM // NB: assume that it is from the ith record in the header records = sam_header_get_records(header, "RG"); @@ -358,7 +375,10 @@ tmap_seq_update(tmap_seq_t *seq, int32_t idx, sam_header_t *header) if(NULL == seq->rg_record) tmap_bug(); } } - else { // found in SAM/BAM + else if(use_cache){ + seq->rg_record = update_cache.rg_record; + } + else{// found in SAM/BAM n = 0; record_list = sam_header_get_record(header, "RG", "ID", rg_id, &n); if(0 == n) { @@ -370,25 +390,36 @@ tmap_seq_update(tmap_seq_t *seq, int32_t idx, sam_header_t *header) tmap_error("Found more than one @RG.ID in the SAM/BAM Header", Exit, OutOfRange); } seq->rg_record = record_list[0]; + update_cache.rg_record = record_list[0]; free(record_list); // NB: shallow copied } - // Program Group // NB: assumes the last item in the header - records = sam_header_get_records(header, "PG"); - if(NULL != records && 0 < records->n) { // it exists - seq->pg_record = records->records[records->n-1]; // copy over - } - else { - seq->pg_record = NULL; + if(update_cache.pg_record == NULL){ + records = sam_header_get_records(header, "PG"); + if(NULL != records && 0 < records->n) { // it exists + update_cache.pg_record = records->records[records->n-1]; // copy over + } + else { + update_cache.pg_record = NULL; + } } + seq->pg_record = update_cache.pg_record; + // key sequence and flow order seq->fo_start_idx = -1; if(NULL != seq->rg_record) { // It should exist in the SAM/BAM Header - seq->ks = sam_header_record_get(seq->rg_record, "KS"); - seq->fo = sam_header_record_get(seq->rg_record, "FO"); - + if(!use_cache){ + seq->ks = sam_header_record_get(seq->rg_record, "KS"); + seq->fo = sam_header_record_get(seq->rg_record, "FO"); + update_cache.ks = seq->ks; + update_cache.fo = seq->fo; + } + else{ + seq->ks = update_cache.ks; + seq->fo = update_cache.fo; + } // flow order index start if(NULL != seq->ks && NULL != seq->fo && TMAP_SEQ_TYPE_SFF == seq->type) { // only if it is an SFF // in addition, remove key sequence and trimming diff --git a/Analysis/TMAP/src/seq/tmap_seq.h b/Analysis/TMAP/src/seq/tmap_seq.h index 21e0e5c9..d3b65b40 100644 --- a/Analysis/TMAP/src/seq/tmap_seq.h +++ b/Analysis/TMAP/src/seq/tmap_seq.h @@ -27,6 +27,14 @@ enum { /*! */ + +typedef struct { + char *rg_id; + const char *ks; + const char *fo; + const sam_header_record_t *rg_record; + const sam_header_record_t *pg_record; +}seq_update_cache_t; typedef struct { int8_t type; /*!< the type associated with this structure */ union { diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimization.cpp b/Analysis/TMAP/src/sw/lib/AffineSWOptimization.cpp index 4e65930c..1af30b6e 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimization.cpp +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimization.cpp @@ -68,7 +68,7 @@ int AffineSWOptimization::process(const uint8_t *target, int32_t tlen, const uint8_t *query, int32_t qlen, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best) { + int *opt, int *te, int *qe, int *n_best, int* fitflag) { int i; // resize b.resize(tlen); @@ -79,13 +79,13 @@ int AffineSWOptimization::process(const uint8_t *target, int32_t tlen, #ifdef AFFINESWOPTIMIZATION_USE_HASH // try the hash if(!hash->process(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best)) { - s->process(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best); + s->process(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best, fitflag); // add to the hash - hash->add(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best); + hash->add(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best, fitflag); } return (*opt); #else - return s->process(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best); + return s->process(b, a, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best, fitflag); #endif } diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimization.h b/Analysis/TMAP/src/sw/lib/AffineSWOptimization.h index 27ddd62a..5978c7a5 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimization.h +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimization.h @@ -23,7 +23,7 @@ class AffineSWOptimization { const uint8_t *query, int32_t qlen, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); ~AffineSWOptimization(); diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.cpp b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.cpp index 120c5443..e7754045 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.cpp +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.cpp @@ -79,7 +79,7 @@ static uint64_t hashDNA(const string &s) { bool AffineSWOptimizationHash::process(const string &b, const string &a, int _qsc, int _qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best) + int *opt, int *te, int *qe, int *n_best, int* fitflag) { int i; if(_qsc != qsc || _qec != qec || 0 != a.compare(query)) { // reset the hash? @@ -102,6 +102,7 @@ bool AffineSWOptimizationHash::process(const string &b, const string &a, int _qs (*te) = hash[htpos].te; (*qe) = hash[htpos].qe; (*n_best) = hash[htpos].n_best; + if (fitflag) (*fitflag) = hash[htpos].fitflag; return true; } } @@ -110,7 +111,7 @@ bool AffineSWOptimizationHash::process(const string &b, const string &a, int _qs void AffineSWOptimizationHash::add(const string &b, const string &a, int _qsc, int _qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best) + int *opt, int *te, int *qe, int *n_best, int* fitflag) { uint32_t hh = hashDNA(b); int htpos = hh % size; @@ -120,6 +121,7 @@ void AffineSWOptimizationHash::add(const string &b, const string &a, int _qsc, i hash[htpos].te = (*te); hash[htpos].qe = (*qe); hash[htpos].n_best = (*n_best); + hash[htpos].fitflag = (fitflag != NULL) ? (*fitflag) : 0; hash[htpos].dir = dir; hash[htpos].b = b; } diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.h b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.h index a1171aba..419f70fe 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.h +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationHash.h @@ -20,6 +20,7 @@ typedef struct { int te; int qe; int n_best; + int fitflag; } hash_t; class AffineSWOptimizationHash { @@ -28,11 +29,11 @@ class AffineSWOptimizationHash { bool process(const string &b, const string &a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); void add(const string &b, const string &a, int _qsc, int _qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); ~AffineSWOptimizationHash(); private: diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.cpp b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.cpp index 7018772e..9664973d 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.cpp +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.cpp @@ -21,7 +21,7 @@ tmap_vsw_wrapper_process(tmap_vsw_wrapper_t *v, const uint8_t *query, int32_t qlen, int mm, int mi, int o, int e, int dir, int qsc, int qec, - int *opt, int *te, int *qe, int *n_best) + int *opt, int *te, int *qe, int *n_best, int* fitflag) { /* fprintf(stderr, "query=%d qlen=%d target=%d tlen=%d\n", @@ -47,7 +47,7 @@ tmap_vsw_wrapper_process(tmap_vsw_wrapper_t *v, -1, -1, -1, -1); */ - return v->process(target, tlen, query, qlen, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best); + return v->process(target, tlen, query, qlen, qsc, qec, mm, mi, o, e, dir, opt, te, qe, n_best, fitflag); } void diff --git a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.h b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.h index 6e04feb3..cd590884 100644 --- a/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.h +++ b/Analysis/TMAP/src/sw/lib/AffineSWOptimizationWrapper.h @@ -21,7 +21,7 @@ extern "C" { const uint8_t *query, int32_t qlen, int32_t mm, int32_t mi, int32_t o, int32_t e, int32_t dir, int32_t qsc, int32_t qec, - int32_t *opt, int32_t *target_end, int32_t *query_start, int32_t *n_best); + int32_t *opt, int32_t *target_end, int32_t *query_start, int32_t *n_best, int* fitflag); void tmap_vsw_wrapper_destroy(tmap_vsw_wrapper_t *v); diff --git a/Analysis/TMAP/src/sw/lib/Solution.h b/Analysis/TMAP/src/sw/lib/Solution.h index 10d9f1d0..8ad72fe4 100644 --- a/Analysis/TMAP/src/sw/lib/Solution.h +++ b/Analysis/TMAP/src/sw/lib/Solution.h @@ -17,7 +17,7 @@ class Solution { virtual int process(const string& b, const string& a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best) = 0; + int *opt, int *te, int *qe, int *n_best, int* fitflag) = 0; virtual ~Solution(); diff --git a/Analysis/TMAP/src/sw/lib/Solution1.cpp b/Analysis/TMAP/src/sw/lib/Solution1.cpp index ea735af1..3bf2914e 100644 --- a/Analysis/TMAP/src/sw/lib/Solution1.cpp +++ b/Analysis/TMAP/src/sw/lib/Solution1.cpp @@ -59,7 +59,7 @@ Solution1::~Solution1() { int Solution1::process(const string& b, const string& a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *_opt, int *_te, int *_qe, int *_n_best) { + int *_opt, int *_te, int *_qe, int *_n_best, int* fitflag) { int i, score; int n = b.size(), m = a.size(); int16_t query_end, target_end; diff --git a/Analysis/TMAP/src/sw/lib/Solution1.h b/Analysis/TMAP/src/sw/lib/Solution1.h index c9630727..a753cc3e 100644 --- a/Analysis/TMAP/src/sw/lib/Solution1.h +++ b/Analysis/TMAP/src/sw/lib/Solution1.h @@ -22,7 +22,7 @@ class Solution1 : public Solution { virtual int process(const string& b, const string& a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); int32_t query_cmp(string q, int n, uint8_t *query, int32_t query_len); private: diff --git a/Analysis/TMAP/src/sw/lib/Solution10.cpp b/Analysis/TMAP/src/sw/lib/Solution10.cpp index f90a2274..6b74e7ee 100644 --- a/Analysis/TMAP/src/sw/lib/Solution10.cpp +++ b/Analysis/TMAP/src/sw/lib/Solution10.cpp @@ -60,7 +60,7 @@ void buildMatrix (int match, int mismatch) offset = (i << 2); for (int j = 0; j < 4; ++j) matrix[offset+j] = (j==i) ? match : mismatch; - } + } } typedef struct { @@ -1319,16 +1319,16 @@ Solution10::~Solution10() { // dir: direction (bool) int Solution10::process(const string& b, const string& a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best) { + int *opt, int *te, int *qe, int *n_best, int* fitflag) { int n = b.size(), m = a.size(); - int id = ((qsc << 1) | qec); + int id = ((qsc << 1) | qec); int i; - SwStripedData *swData=NULL; + SwStripedData *swData=NULL; - if (unlikely(flag)) { + if (unlikely(flag)) { gapOpen = -(o+e); gapExtend = -e; buildMatrix(mm,mi); diff --git a/Analysis/TMAP/src/sw/lib/Solution10.h b/Analysis/TMAP/src/sw/lib/Solution10.h index 405247f9..0c297465 100644 --- a/Analysis/TMAP/src/sw/lib/Solution10.h +++ b/Analysis/TMAP/src/sw/lib/Solution10.h @@ -19,7 +19,7 @@ class Solution10 : public Solution { virtual int process(const string& b, const string& a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); private: }; diff --git a/Analysis/TMAP/src/sw/lib/Solution2.cpp b/Analysis/TMAP/src/sw/lib/Solution2.cpp index c871db8c..9d9c6c98 100644 --- a/Analysis/TMAP/src/sw/lib/Solution2.cpp +++ b/Analysis/TMAP/src/sw/lib/Solution2.cpp @@ -4,6 +4,7 @@ #include #include "../../util/tmap_alloc.h" #include "Solution2.h" +#include // Ivan's Solution @@ -11,59 +12,109 @@ using namespace std; #define max(a, b) ((a)>(b)?a:b) -void Solution2::resize(int n) +typedef struct Sol2_CacheEntry{ + int m; + int n; + Sol2_CacheEntry *next; +}Sol2_CacheEntry_t; +static Sol2_CacheEntry_t *Sol2_cachePtr=NULL; +pthread_mutex_t cacheMutex=PTHREAD_MUTEX_INITIALIZER; + +static void FreeCachePtr(Sol2_CacheEntry_t *entry, int m, int n) +{ + pthread_mutex_lock(&cacheMutex); + entry->m=m; + entry->n=n; + entry->next=Sol2_cachePtr; + Sol2_cachePtr=entry; + pthread_mutex_unlock(&cacheMutex); +} + +static void *findCachePtr(int m, int n) +{ + void *rc=NULL; + pthread_mutex_lock(&cacheMutex); + Sol2_CacheEntry_t *entry=Sol2_cachePtr; + Sol2_CacheEntry_t *prevEntry=NULL; + while(entry){ + if(entry->m >= m && entry->n >= n){ + rc=entry; + if(prevEntry) + prevEntry->next=entry->next; + else + Sol2_cachePtr=entry->next; + break; + } + prevEntry=entry; + entry=entry->next; + } + pthread_mutex_unlock(&cacheMutex); + return rc; +} + +void Solution2::resize(int m, int n) { + _n = n; + _m = m; + if(n <= _alloc_n && m <= _alloc_m) return; + int i; - if(n <= mem) return; - M = (int**)tmap_realloc(M, sizeof(int*) * n, "M"); - H = (int**)tmap_realloc(H, sizeof(int*) * n, "H"); - V = (int**)tmap_realloc(V, sizeof(int*) * n, "V"); - for(i=0;i int Solution9Reference::process(string b, string a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *_opt, int *_te, int *_qe, int *_n_best) { + int *_opt, int *_te, int *_qe, int *_n_best, int* fitflag) { int n = b.size(), m = a.size(); int id = -1; diff --git a/Analysis/TMAP/src/sw/lib/Solution9.h b/Analysis/TMAP/src/sw/lib/Solution9.h index c1ddacc0..206a3ed8 100644 --- a/Analysis/TMAP/src/sw/lib/Solution9.h +++ b/Analysis/TMAP/src/sw/lib/Solution9.h @@ -22,7 +22,7 @@ class Solution9Reference { int V[MAX_DIM][MAX_DIM]; int process(string b, string a, int qsc, int qec, int mm, int mi, int o, int e, int dir, - int *opt, int *te, int *qe, int *n_best); + int *opt, int *te, int *qe, int *n_best, int* fitflag); }; class Solution9 : public Solution { diff --git a/Analysis/TMAP/src/sw/tmap_vsw.c b/Analysis/TMAP/src/sw/tmap_vsw.c index 97e13bbd..958c5b8f 100644 --- a/Analysis/TMAP/src/sw/tmap_vsw.c +++ b/Analysis/TMAP/src/sw/tmap_vsw.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include "../util/tmap_alloc.h" #include "../util/tmap_error.h" @@ -37,34 +38,49 @@ #include "tmap_vsw.h" tmap_vsw_t* -tmap_vsw_init(const uint8_t *query, int32_t qlen, +tmap_vsw_init (const uint8_t *query, int32_t qlen, int32_t query_start_clip, int32_t query_end_clip, int32_t type, + int32_t fallback_type, tmap_vsw_opt_t *opt) { - tmap_vsw_t *vsw = NULL; - vsw = tmap_calloc(1, sizeof(tmap_vsw_t), "vsw"); - vsw->type = type; - vsw->query_start_clip = query_start_clip; - vsw->query_end_clip = query_end_clip; - vsw->opt = opt; - vsw->algorithm = tmap_vsw_wrapper_init(type); - vsw->algorithm_default = tmap_vsw_wrapper_init(1); - return vsw; + tmap_vsw_t *vsw = NULL; + vsw = tmap_calloc (1, sizeof (tmap_vsw_t), "vsw"); + vsw->type = type; + vsw->fallback_type = fallback_type; + vsw->query_start_clip = query_start_clip; + vsw->query_end_clip = query_end_clip; + vsw->opt = opt; + vsw->algorithm = tmap_vsw_wrapper_init (type); + vsw->algorithm_fallback = tmap_vsw_wrapper_init (fallback_type); + vsw->algorithm_default = tmap_vsw_wrapper_init (VSW_DEFAULT_METHOD); + return vsw; +} + +void tmap_vsw_set_params (tmap_vsw_t* vsw, + int32_t query_start_clip, + int32_t query_end_clip, + tmap_vsw_opt_t* opt ) +{ + vsw->query_start_clip = query_start_clip; + vsw->query_end_clip = query_end_clip; + *(vsw->opt) = *opt; } void -tmap_vsw_destroy(tmap_vsw_t *vsw) +tmap_vsw_destroy (tmap_vsw_t *vsw) { - if(NULL == vsw) return; - tmap_vsw_wrapper_destroy(vsw->algorithm); - tmap_vsw_wrapper_destroy(vsw->algorithm_default); - free(vsw); + if (NULL == vsw) + return; + tmap_vsw_wrapper_destroy (vsw->algorithm); + tmap_vsw_wrapper_destroy (vsw->algorithm_fallback); + tmap_vsw_wrapper_destroy (vsw->algorithm_default); + free (vsw); } #ifdef TMAP_VSW_DEBUG_CMP static void -tmap_vsw_process_compare(tmap_vsw_t *vsw, +tmap_vsw_process_compare (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, @@ -78,8 +94,9 @@ tmap_vsw_process_compare(tmap_vsw_t *vsw, query_end_type1 = target_end_type1 = n_best_type1 = score_type1 = 0; // baseline - if(0 == cmp_non_vsw) { - tmap_vsw_wrapper_process(vsw->algorithm_default, + if (0 == cmp_non_vsw) + { + tmap_vsw_wrapper_process (vsw->algorithm_default, target, tlen, query, qlen, vsw->opt->score_match, @@ -90,27 +107,28 @@ tmap_vsw_process_compare(tmap_vsw_t *vsw, vsw->query_start_clip, vsw->query_end_clip, &score_type0, &target_end_type0, &query_end_type0, &n_best_type0); } - else { + else + { tmap_sw_param_t ap; - tmap_sw_path_t path[1024]; + tmap_sw_path_t path [1024]; int32_t path_len; - int32_t i, matrix[25]; + int32_t i, matrix [25]; ap.matrix=matrix; - for(i=0;i<25;i++) { - ap.matrix[i] = -(vsw->opt)->pen_mm; + for (i=0;i<25;i++) { + ap.matrix [i] = -(vsw->opt)->pen_mm; } - for(i=0;i<4;i++) { - ap.matrix[i*5+i] = vsw->opt->score_match; + for (i=0;i<4;i++) { + ap.matrix [i * 5 + i] = vsw->opt->score_match; } ap.gap_open = vsw->opt->pen_gapo; ap.gap_ext = vsw->opt->pen_gape; ap.gap_end = vsw->opt->pen_gape; ap.row = 5; - score_type0 = tmap_sw_clipping_core((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, + score_type0 = tmap_sw_clipping_core ((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, vsw->query_start_clip, vsw->query_end_clip, path, &path_len, dir); } // current - tmap_vsw_wrapper_process(vsw->algorithm, + tmap_vsw_wrapper_process (vsw->algorithm, target, tlen, query, qlen, vsw->opt->score_match, @@ -121,75 +139,81 @@ tmap_vsw_process_compare(tmap_vsw_t *vsw, vsw->query_start_clip, vsw->query_end_clip, &score_type1, &target_end_type1, &query_end_type1, &n_best_type1); - if(0 != cmp_non_vsw) { + if (0 != cmp_non_vsw) + { n_best_type0 = n_best_type1; target_end_type0 = target_end_type1; query_end_type0 = query_end_type1; } - if(tlen <= target_end_type0) tmap_bug(); - if(qlen <= query_end_type0) tmap_bug(); + if (tlen <= target_end_type0) tmap_bug (); + if (qlen <= query_end_type0) tmap_bug (); /* - if(tlen <= target_end_type1) tmap_bug(); - if(qlen <= query_end_type1) tmap_bug(); + if (tlen <= target_end_type1) tmap_bug (); + if (qlen <= query_end_type1) tmap_bug (); */ - if(score_type0 != score_type1 + if (score_type0 != score_type1 || target_end_type0 != target_end_type1 || query_end_type0 != query_end_type1 - || n_best_type0 != n_best_type1) { + || n_best_type0 != n_best_type1) + { int32_t i; - fprintf(stderr, "in %s dir=%d\n", __func__, dir); - fprintf(stderr, "query_start_clip=%d\n", vsw->query_start_clip); - fprintf(stderr, "query_end_clip=%d\n", vsw->query_end_clip); - fprintf(stderr, "qlen=%d tlen=%d\n", qlen, tlen); - for(i=0;iquery_start_clip); + fprintf (stderr, "query_end_clip=%d\n", vsw->query_end_clip); + fprintf (stderr, "qlen=%d tlen=%d\n", qlen, tlen); + for (i=0;iopt)->pen_mm; + for (i=0;i<25;i++) { + ap.matrix [i] = -(vsw->opt)->pen_mm; } - for(i=0;i<4;i++) { - ap.matrix[i*5+i] = vsw->opt->score_match; + for (i=0;i<4;i++) { + ap.matrix [i * 5 + i] = vsw->opt->score_match; } ap.gap_open = vsw->opt->pen_gapo; ap.gap_ext = vsw->opt->pen_gape; ap.gap_end = vsw->opt->pen_gape; ap.row = 5; path_len = 0; - path = tmap_calloc(1024, sizeof(tmap_sw_path_t), "path"); - score = tmap_sw_clipping_core((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, + path = tmap_calloc (1024, sizeof (tmap_sw_path_t), "path"); + score = tmap_sw_clipping_core ((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, vsw->query_start_clip, vsw->query_end_clip, path, &path_len, dir); // print out the path - cigar = tmap_sw_path2cigar(path, path_len, &n_cigar); - fprintf(stderr, "tmap_sw_clipping_core score=%d\n", score); - for(i=0;i>4, "MIDNSHP"[cigar[i]&0xf]); + cigar = tmap_sw_path2cigar (path, path_len, &n_cigar); + fprintf (stderr, "tmap_sw_clipping_core score=%d\n", score); + for (i=0;i>4, "MIDNSHP"[cigar [i]&0xf]); } - fputc('\n', stderr); - free(path); - free(cigar); - } while(0); + fputc ('\n', stderr); + free (path); + free (cigar); + } while (0); // try the opposite direction // baseline - tmap_vsw_wrapper_process(vsw->algorithm_default, + tmap_vsw_wrapper_process (vsw->algorithm_default, target, tlen, query, qlen, vsw->opt->score_match, @@ -199,18 +223,18 @@ tmap_vsw_process_compare(tmap_vsw_t *vsw, 1-dir, vsw->query_start_clip, vsw->query_end_clip, &score_type0, &target_end_type0, &query_end_type0, &n_best_type0); - fprintf(stderr, "baseline opposite reverse tlen=%d qlen=%d score=[%d,%d] target_end=[%d,%d] query_end=[%d,%d] n_best=[%d,%d]\n", + fprintf (stderr, "baseline opposite reverse tlen=%d qlen=%d score=[%d,%d] target_end=[%d,%d] query_end=[%d,%d] n_best=[%d,%d]\n", tlen, qlen, score_type0, score_type1, target_end_type0, target_end_type1, query_end_type0, query_end_type1, n_best_type0, n_best_type1); // top coder - for(i=0;iquery_start_clip, vsw->query_end_clip, vsw->opt->score_match, -vsw->opt->pen_mm, @@ -218,229 +242,352 @@ tmap_vsw_process_compare(tmap_vsw_t *vsw, -vsw->opt->pen_gape, dir, -1, -1, -1, -1); - fprintf(stderr, "Error: algorithms produced different results!\n"); - exit(1); + fprintf (stderr, "Error: algorithms produced different results!\n"); + exit (1); } } #endif static int32_t -tmap_vsw_process(tmap_vsw_t *vsw, +tmap_vsw_process (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, int32_t *overflow, int32_t score_thr, - int32_t is_rev, int32_t direction) + int32_t is_rev, int32_t direction, + uint32_t confirm_conflicts, + uint32_t fallback_failed, + uint32_t fallback_noniupac, + tmap_map_stats_t* stat) { - int32_t found_forward = 1, query_end, target_end, n_best, score = INT32_MIN; - // TODO: check potential overflow - // TODO: check that gap penalties will not result in an overflow - // TODO: check that the max/min alignment score do not result in an overflow + int32_t found_forward = 1, query_end, target_end, n_best, score = INT32_MIN, do_not_process = 0; + // TODO: check potential overflow + // TODO: check that gap penalties will not result in an overflow + // TODO: check that the max/min alignment score do not result in an overflow + int32_t vect_used = 1; + int32_t fit_error = 0; #ifdef TMAP_VSW_DEBUG - if(1 == is_rev) { - int i; - fprintf(stderr, "in %s is_rev=%d\n", __func__, is_rev); - fprintf(stderr, "query_start_clip=%d\n", vsw->query_start_clip); - fprintf(stderr, "query_end_clip=%d\n", vsw->query_end_clip); - fprintf(stderr, "qlen=%d tlen=%d\n", qlen, tlen); - for(i=0;iquery_start_clip); + fprintf (stderr, "query_end_clip=%d\n", vsw->query_end_clip); + fprintf (stderr, "qlen=%d tlen=%d\n", qlen, tlen); + for (i=0;i 3); + for (i = 0; i < tlen && !non_std_base; ++i) + non_std_base = (target [i] > 3); + } + if (stat && non_std_base && vsw->type == 4) + { + if (is_rev) + ++stat->nonstd_base_fallbacks_rev; + else + ++stat->nonstd_base_fallbacks_fwd; + } - if(tlen <= tmap_vsw_wrapper_get_max_tlen(vsw->algorithm) - && qlen <= tmap_vsw_wrapper_get_max_qlen(vsw->algorithm)) { - tmap_vsw_wrapper_process(vsw->algorithm, - target, tlen, - query, qlen, - vsw->opt->score_match, - -vsw->opt->pen_mm, - -vsw->opt->pen_gapo, - -vsw->opt->pen_gape, - direction, - vsw->query_start_clip, vsw->query_end_clip, - &score, &target_end, &query_end, &n_best); -#ifdef TMAP_VSW_DEBUG_CMP - tmap_vsw_process_compare(vsw, - query, qlen, - target, tlen, - result, - overflow, score_thr, direction); -#endif - } - else { // try the default - if(1 != vsw->type) { - tmap_vsw_wrapper_process(vsw->algorithm_default, - target, tlen, - query, qlen, - vsw->opt->score_match, - -vsw->opt->pen_mm, - -vsw->opt->pen_gapo, - -vsw->opt->pen_gape, - direction, - vsw->query_start_clip, vsw->query_end_clip, - &score, &target_end, &query_end, &n_best); - } - } - if(score < score_thr || 0 == n_best) { - query_end = target_end = -1; - n_best = 0; - score = INT32_MIN; - } - - if(0 == is_rev) { +#ifdef FORCE_VSW_4_NONSTD_BASE_ERROR_PROPAGATION // do not enable for production :) + non_std_base = 0; +#else + if (non_std_base && vsw->type == 4 && !fallback_noniupac) + do_not_process = 1; + // non_std_base = 0; // for now force vectorized processing with currently elected method. May need a way to specify different fallback method later +#endif - result->query_end = query_end; - result->target_end = target_end; - result->n_best = n_best; - result->score_fwd = score; + // update based on current problem + query_end = target_end = n_best = 0; + if (NULL != overflow) (*overflow) = 0; + int32_t alignment_ok = 0; - // check forward results - if(NULL != overflow && 1 == (*overflow)) { - found_forward = 0; - } - else if(result->score_fwd < score_thr) { - found_forward = 0; - } - else if((result->query_end == result->query_start || result->target_end == result->target_start) - && result->score_fwd <= 0) { - found_forward = 0; - } - else if(n_best <= 0) { - found_forward = 0; - } - else if(-1 == result->query_end) { - tmap_bug(); - } + if (!do_not_process) + { + if (tlen <= tmap_vsw_wrapper_get_max_tlen (vsw->algorithm) + && qlen <= tmap_vsw_wrapper_get_max_qlen (vsw->algorithm) + && !(non_std_base && vsw->type == 4)) // DVK: TopCoder4 does not handle non-standard bases properly + { + ++ stat->vect_sw_calls; + vect_used = 1; + tmap_vsw_wrapper_process (vsw->algorithm, + target, tlen, + query, qlen, + vsw->opt->score_match, + -vsw->opt->pen_mm, + -vsw->opt->pen_gapo, + -vsw->opt->pen_gape, + direction, + vsw->query_start_clip, vsw->query_end_clip, + &score, &target_end, &query_end, &n_best, &fit_error); + #ifdef TMAP_VSW_DEBUG_CMP + tmap_vsw_process_compare (vsw, + query, qlen, + target, tlen, + result, + overflow, score_thr, direction); + #endif + if (fit_error) + { + alignment_ok = 0; + ++ stat->vswfails; + } + else + alignment_ok = 1; + } + if (!alignment_ok && (fallback_failed || non_std_base)) // try fallback + { + if (vsw->fallback_type != vsw->type + && tlen <= tmap_vsw_wrapper_get_max_tlen (vsw->algorithm_fallback) + && qlen <= tmap_vsw_wrapper_get_max_qlen (vsw->algorithm_fallback) + && !(non_std_base && vsw->fallback_type == 4)) + { + ++ stat->fallback_vsw_calls; + fit_error = 0; + vect_used = 1; + tmap_vsw_wrapper_process (vsw->algorithm_fallback, + target, tlen, + query, qlen, + vsw->opt->score_match, + -vsw->opt->pen_mm, + -vsw->opt->pen_gapo, + -vsw->opt->pen_gape, + direction, + vsw->query_start_clip, vsw->query_end_clip, + &score, &target_end, &query_end, &n_best, &fit_error); + if (fit_error) + { + alignment_ok = 0; + ++ stat->vswfails; + } + else + alignment_ok = 1; + } + } + if (!alignment_ok && fallback_failed) + { // try the default + if (vsw->type != VSW_DEFAULT_METHOD && vsw->fallback_type != VSW_DEFAULT_METHOD) + { + ++ stat->fallback_sw_calls; + fit_error = 0; + vect_used = 0; + tmap_vsw_wrapper_process (vsw->algorithm_default, + target, tlen, + query, qlen, + vsw->opt->score_match, + -vsw->opt->pen_mm, + -vsw->opt->pen_gapo, + -vsw->opt->pen_gape, + direction, + vsw->query_start_clip, vsw->query_end_clip, + &score, &target_end, &query_end, &n_best, &fit_error); + if (fit_error) + alignment_ok = 0; // irrelevant with current default SW implementation + else + alignment_ok = 1; + } + } + } - // return if we found no legal/good forward results - if(0 == found_forward) { - result->query_end = result->query_start = 0; - result->target_end = result->target_start = 0; - result->score_fwd = result->score_rev = INT16_MIN; - result->n_best = 0; - return INT32_MIN; - } + if (!alignment_ok || score < score_thr || 0 == n_best) + { + query_end = target_end = -1; + n_best = 0; + score = INT32_MIN; + } + if (!alignment_ok && !do_not_process) + ++stat->totswfails; + + if (0 == is_rev) + { + + result->query_end = query_end; + result->target_end = target_end; + result->n_best = n_best; + result->score_fwd = score; - result->query_start = result->target_start = 0; - result->score_rev = INT16_MIN; + // check forward results + if (!alignment_ok + || result->score_fwd < score_thr + || ((result->query_end == result->query_start || result->target_end == result->target_start) && result->score_fwd <= 0) + || n_best <= 0) + { + // return if we found no legal/good forward results + result->query_end = result->query_start = 0; + result->target_end = result->target_start = 0; + result->score_fwd = result->score_rev = INT16_MIN; + result->n_best = 0; + return INT32_MIN; + } + else if (-1 == result->query_end) + { + tmap_bug (); + } + + result->query_start = result->target_start = 0; + result->score_rev = INT16_MIN; #ifdef TMAP_VSW_DEBUG - fprintf(stderr, "result->score_fwd=%d result->score_rev=%d\n", - result->score_fwd, result->score_rev); - fprintf(stderr, "{?-%d] {?-%d}\n", - result->query_end, - result->target_end); + fprintf (stderr, "result->score_fwd=%d result->score_rev=%d\n", + result->score_fwd, result->score_rev); + fprintf (stderr, "{?-%d] {?-%d}\n", + result->query_end, + result->target_end); #endif - return result->score_fwd; - } - else { - - result->query_start = qlen - query_end - 1; - result->target_start = tlen - target_end - 1; - result->n_best = n_best; - result->score_rev = score; + return result->score_fwd; + } + else + { + result->query_start = qlen - query_end - 1; + result->target_start = tlen - target_end - 1; + result->n_best = n_best; + result->score_rev = score; #ifdef TMAP_VSW_DEBUG - fprintf(stderr, "is_rev=%d result->score_fwd=%d result->score_rev=%d\n", - is_rev, result->score_fwd, result->score_rev); + fprintf (stderr, "is_rev=%d result->score_fwd=%d result->score_rev=%d\n", + is_rev, result->score_fwd, result->score_rev); #endif - // check reverse results - if(NULL != overflow && 1 == (*overflow)) { - result->query_end = result->query_start = 0; - result->target_end = result->target_start = 0; - result->score_fwd = result->score_rev = INT16_MIN; - result->n_best = 0; - return INT32_MIN; - } - else if(result->score_fwd != result->score_rev) { // something went wrong... FIXME - // use the default - if(1 != vsw->type) { - tmap_vsw_wrapper_process(vsw->algorithm_default, - target, tlen, - query, qlen, - vsw->opt->score_match, - -vsw->opt->pen_mm, - -vsw->opt->pen_gapo, - -vsw->opt->pen_gape, - direction, - vsw->query_start_clip, vsw->query_end_clip, - &score, &target_end, &query_end, &n_best); - result->query_start = qlen - query_end - 1; - result->target_start = tlen - target_end - 1; - result->n_best = n_best; - result->score_rev = score; - if(result->score_fwd != result->score_rev) { // something went wrong... again... - // ignore - result->query_end = result->query_start = 0; - result->target_end = result->target_start = 0; - result->score_fwd = result->score_rev = INT16_MIN; - result->n_best = 0; - return INT32_MIN; - } - else { - return score; - } - } - // Bug! - fprintf(stderr, "{%d-%d} {%d-%d}\n", - result->query_start, result->query_end, - result->target_start, result->target_end); - fprintf(stderr, "result->score_fwd=%d result->score_rev=%d\n", - result->score_fwd, result->score_rev); - fprintf(stderr, "score=%d\n", score); - tmap_sw_param_t ap; - int32_t i, matrix[25]; - ap.matrix=matrix; - for(i=0;i<25;i++) { - ap.matrix[i] = -(vsw->opt)->pen_mm; - } - for(i=0;i<4;i++) { - ap.matrix[i*5+i] = vsw->opt->score_match; - } - ap.gap_open = vsw->opt->pen_gapo; ap.gap_ext = vsw->opt->pen_gape; - ap.gap_end = vsw->opt->pen_gape; - ap.row = 5; - score = tmap_sw_clipping_core((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, + // check reverse results + if (!alignment_ok) + { + result->query_end = result->query_start = 0; + result->target_end = result->target_start = 0; + result->score_fwd = result->score_rev = INT16_MIN; + result->n_best = 0; + return INT32_MIN; + } + else if (result->score_fwd != result->score_rev) + { // something went wrong... FIXME + // re-process both with the default, warn the user if initial score could not be confirmed + // use the default + if (stat) + { + if (vect_used) + ++stat->vswfails; + ++stat->totswfails; + } + if (vsw->type != VSW_DEFAULT_METHOD && fallback_failed) + { + int32_t def_vsw_score = INT_MIN; + stat->fallback_sw_calls ++; + tmap_vsw_wrapper_process (vsw->algorithm_default, + target, tlen, + query, qlen, + vsw->opt->score_match, + -vsw->opt->pen_mm, + -vsw->opt->pen_gapo, + -vsw->opt->pen_gape, + direction, vsw->query_start_clip, vsw->query_end_clip, - NULL, NULL, direction); - fprintf(stderr, "score=%d\n", score); - tmap_bug(); - } + &def_vsw_score, &target_end, &query_end, &n_best, overflow); - return result->score_fwd; - } + // DVK: trust the default method, but optionally confirm with the non-vectorized SW + // LATER: (maybe) re-run forward algnment here to re-confirm score + uint32_t accept_correction = 1; + if (confirm_conflicts) + { + tmap_sw_param_t ap; + int32_t i, matrix [25]; + ap.matrix=matrix; + for ( i = 0; i < 25; ++i) + ap.matrix [i] = -(vsw->opt)->pen_mm; + for (i = 0; i < 4; ++i) + { + ap.matrix [i*5 + i] = vsw->opt->score_match; + } + ap.gap_open = vsw->opt->pen_gapo; + ap.gap_ext = vsw->opt->pen_gape; + ap.gap_end = vsw->opt->pen_gape; + ap.row = 5; + int32_t sw_score = tmap_sw_clipping_core ((uint8_t*)target, tlen, (uint8_t*)query, qlen, &ap, + vsw->query_start_clip, vsw->query_end_clip, + NULL, NULL, direction); + if (sw_score != def_vsw_score) + { + accept_correction = 0; + tmap_warning ("Unrecoverable internal error: VSW alignment score asymmetry. Forward score = %d, reverse score = %d, default (\"gold-standard\") VSW score = %d, non-vectorized score = %d.\nCandidate ignored, read may be unmapped or mapped improperly", result->score_fwd, result->score_rev, def_vsw_score, sw_score); + } + } + if (accept_correction) + { + // tmap_warning ("Correctable internal error: VSW alignment score assymetry. Forward score = %d, reverse score = %d,\n default (\"gold-standard\") VSW score = %d. Non-vectorized method matches reverse result; using confirmed score", result->score_fwd, result->score_rev, def_vsw_score); + if (stat) + ++stat->asymmetric_scores_corrected; + result->query_start = qlen - query_end - 1; + result->target_start = tlen - target_end - 1; + result->n_best = n_best; + result->score_rev = def_vsw_score; + result->score_fwd = def_vsw_score; + return score; + } + } + else + tmap_warning ("Unrecoverable internal error: VSW alignment score asymmetry in default method (#%d). Forward score = %d, reverse score = %d\nCandidate ignored, read may be unmapped or mapped improperly", result->score_fwd, result->score_rev); + // ignore candidate with conflict (warning already issued) + if (stat) + { + ++stat->asymmetric_scores_failed; + ++stat->totswfails; + } + result->query_end = result->query_start = 0; + result->target_end = result->target_start = 0; + result->score_fwd = result->score_rev = INT16_MIN; + result->n_best = 0; + return INT32_MIN; + } + else + { + if (stat) + ++stat->symmetric_scores; + } + return result->score_fwd; + } } int32_t -tmap_vsw_process_fwd(tmap_vsw_t *vsw, +tmap_vsw_process_fwd (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, - int32_t *overflow, int32_t score_thr, int32_t direction) + int32_t *overflow, int32_t score_thr, int32_t direction, + uint32_t confirm_conflicts, + uint32_t fallback_failed, + uint32_t fallback_noniupac, + tmap_map_stats_t* stat) { - return tmap_vsw_process(vsw, query, qlen, target, tlen, result, overflow, score_thr, 0, direction); + return tmap_vsw_process (vsw, query, qlen, target, tlen, result, overflow, score_thr, 0, direction, confirm_conflicts, fallback_failed, fallback_noniupac, stat); } int32_t -tmap_vsw_process_rev(tmap_vsw_t *vsw, +tmap_vsw_process_rev (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, - int32_t *overflow, int32_t score_thr, int32_t direction) + int32_t *overflow, int32_t score_thr, int32_t direction, + uint32_t confirm_conflicts, + uint32_t fallback_failed, + uint32_t fallback_noniupac, + tmap_map_stats_t* stat) { - return tmap_vsw_process(vsw, query, qlen, target, tlen, result, overflow, score_thr, 1, direction); + return tmap_vsw_process (vsw, query, qlen, target, tlen, result, overflow, score_thr, 1, direction, confirm_conflicts, fallback_failed, fallback_noniupac, stat); } diff --git a/Analysis/TMAP/src/sw/tmap_vsw.h b/Analysis/TMAP/src/sw/tmap_vsw.h index cd5d49fc..239c72dd 100644 --- a/Analysis/TMAP/src/sw/tmap_vsw.h +++ b/Analysis/TMAP/src/sw/tmap_vsw.h @@ -35,19 +35,26 @@ #include #include "tmap_vsw_definitions.h" #include "lib/AffineSWOptimizationWrapper.h" +#include "../map/util/tmap_map_stats.h" #ifdef __cplusplus extern "C" { #endif + +#define VSW_DEFAULT_METHOD 2 // this is a non-vectorized implementation + /*! Used to run the underlying vectorized smith waterman (VSW) types */ -typedef struct { +typedef struct __tmap_vsw_t +{ int32_t type; /*!< the vectorized smith waterman type */ + int32_t fallback_type; /*!< the vectorized smith waterman type of fallback algorithm */ tmap_vsw_wrapper_t *algorithm; /*!< the main VSW algorithm */ - tmap_vsw_wrapper_t *algorithm_default; /*!< the VSW algorithm to test if the main algorithm fails */ + tmap_vsw_wrapper_t *algorithm_fallback; /*!< the fallback VSW algorithm */ + tmap_vsw_wrapper_t *algorithm_default; /*!< the VSW algorithm to use if the main/fallback algorithms fail */ int32_t query_start_clip; /*!< 1 if we are to clip the start of the query, 0 otherwise */ int32_t query_end_clip; /*!< 1 if we are to clip the end of the query, 0 otherwise */ tmap_vsw_opt_t *opt; /*!< the alignment parameters */ @@ -63,16 +70,22 @@ typedef struct { @return the query sequence in vectorized form */ tmap_vsw_t* -tmap_vsw_init(const uint8_t *query, int32_t qlen, +tmap_vsw_init (const uint8_t *query, int32_t qlen, int32_t query_start_clip, int32_t query_end_clip, int32_t type, + int32_t fallback_type, tmap_vsw_opt_t *opt); +void tmap_vsw_set_params (tmap_vsw_t* vsw, + int32_t query_start_clip, + int32_t query_end_clip, + tmap_vsw_opt_t* opt); + /*! @param vsw the structure to destroy */ void -tmap_vsw_destroy(tmap_vsw_t *vsw); +tmap_vsw_destroy (tmap_vsw_t *vsw); /*! Performs alignment in the sequencing direction. This will update query_end and target_end @@ -92,12 +105,17 @@ tmap_vsw_destroy(tmap_vsw_t *vsw); cases, if there are still several possibilities, choose the one with the largest value of target_end among them). */ + int32_t -tmap_vsw_process_fwd(tmap_vsw_t *vsw, +tmap_vsw_process_fwd (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, - int32_t *overflow, int32_t score_thr, int32_t direction); + int32_t *overflow, int32_t score_thr, int32_t direction, + uint32_t confirm_conflicts, + uint32_t fallback_failed, + uint32_t fallback_noniupac, + tmap_map_stats_t* stat); /*! Performs alignment in the reverse of the sequencing direction. This will update query_start @@ -117,12 +135,17 @@ tmap_vsw_process_fwd(tmap_vsw_t *vsw, cases, if there are still several possibilities, choose the one with the largest value of target_end among them). */ + int32_t -tmap_vsw_process_rev(tmap_vsw_t *vsw, +tmap_vsw_process_rev (tmap_vsw_t *vsw, const uint8_t *query, int32_t qlen, uint8_t *target, int32_t tlen, tmap_vsw_result_t *result, - int32_t *overflow, int32_t score_thr, int32_t direction); + int32_t *overflow, int32_t score_thr, int32_t direction, + uint32_t confirm_conflicts, + uint32_t fallback_failed, + uint32_t fallback_noniupac, + tmap_map_stats_t* stat); #ifdef __cplusplus } diff --git a/Analysis/TMAP/src/sw/tmap_vsw_bm.c b/Analysis/TMAP/src/sw/tmap_vsw_bm.c index da865929..dfdb8bf3 100644 --- a/Analysis/TMAP/src/sw/tmap_vsw_bm.c +++ b/Analysis/TMAP/src/sw/tmap_vsw_bm.c @@ -79,7 +79,7 @@ tmap_vsw_bm_core(int32_t seq_len, int32_t tlen, int32_t n_iter, tmp_sam.result.target_start = tmp_sam.result.target_end = 0; // run the vsw tmap_vsw_process_fwd(vsw, seq, seq_len, target, tlen, - &tmp_sam.result, &overflow, opt->score_thr, 0); + &tmp_sam.result, &overflow, opt->score_thr, 0, 1, 1, 1, NULL); } else { tmap_sw_clipping_core(seq, seq_len, target, tlen, diff --git a/Analysis/TMAP/src/util/tmap_bsearch.c b/Analysis/TMAP/src/util/tmap_bsearch.c index 8c47fc39..535fc4a4 100644 --- a/Analysis/TMAP/src/util/tmap_bsearch.c +++ b/Analysis/TMAP/src/util/tmap_bsearch.c @@ -1,5 +1,6 @@ /* Copyright (C) 2020 Ion Torrent Systems, Inc. All Rights Reserved */ #include "tmap_bsearch.h" +#include "tmap_error.h" // binary search for sorted arrays. Handles omitted keys // passed in 'lt' function should compare the key pointed to by the first argument to the data element pointed to by the second argument, in this order @@ -9,10 +10,10 @@ // can be improved to handle 'lucky strikes' if check for the equality in some form is available, or if no restriction on the comparison order is given -// (DK) WARNING! The implementation below is flowed! the search does not end (enters infinite loop) when searching for the value that is equal to 0 element in the array! -// +// (DK) WARNING! The implementation below is flawed! the search does not end (enters infinite loop) when searching for the value that is equal to 0 element in the array! +// (DK) A key greater then first and less then second element also makes a problem. -const void* tmap_binary_search (const void* key, const void* data, size_t num_elem, size_t elem_size, int (*lt) (const void* key, const void* elem)) +const void* tmap_binary_search_bad (const void* key, const void* data, size_t num_elem, size_t elem_size, int (*lt) (const void* key, const void* elem)) { size_t lower_idx = 0; // lower boundary of the narrowed zone size_t upper_idx = num_elem; // upper boundary of the narrowed zone @@ -30,8 +31,55 @@ const void* tmap_binary_search (const void* key, const void* data, size_t num_el return data + (lower_idx * elem_size); } +// DK this should fix the problem in the above code +// DK 12/3/2020 Tested and debugged the fix by creating comprehensive (all-cases) TestSuite case. Ok now. -const void* tmap_binary_search_nokey (const void* data, size_t num_elem, size_t elem_size, int (*above) (const void* elem)) +const void* tmap_binary_search_fixed (const void* key, const void* data, size_t num_elem, size_t elem_size, int (*lt) (const void* key, const void* elem)) +{ + size_t lower_idx = 0; // lower boundary of the narrowed zone + size_t upper_idx = num_elem; // upper boundary of the narrowed zone + size_t mid_idx; + + while (lower_idx < upper_idx) + { + + mid_idx = (lower_idx + upper_idx) >> 1; + if (lt (key, data + (mid_idx * elem_size))) // key lower then mid + upper_idx = mid_idx; + else // key greater or equal to mid. + { + if (lower_idx == mid_idx) // DK: in this case, greater and equal should be treated differently: equal - return lower, greater - return lower + 1 (upper in this case) + { + if (lt (data + (lower_idx * elem_size), key)) // mid == low is lower then key. Position of the next element is to be returned + ++lower_idx; + break; + } + else + lower_idx = mid_idx; + } + } + return data + (lower_idx * elem_size); +} + +const void* tmap_binary_search_nokey_bad (const void* data, size_t num_elem, size_t elem_size, int (*above) (const void* elem)) +{ + size_t lower_idx = 0; // lower boundary of the narrowed zone + size_t upper_idx = num_elem; // upper boundary of the narrowed zone + size_t mid_idx; + + while (lower_idx < upper_idx) + { + + mid_idx = (lower_idx + upper_idx) >> 1; + if (above (data + (mid_idx * elem_size))) // key lower then mid + upper_idx = mid_idx; + else // key greater or equal to mid + lower_idx = mid_idx; + } + return data + (lower_idx * elem_size); +} + +const void* tmap_binary_search_nokey_no_fix_possible (const void* data, size_t num_elem, size_t elem_size, int (*above) (const void* elem)) { size_t lower_idx = 0; // lower boundary of the narrowed zone size_t upper_idx = num_elem; // upper boundary of the narrowed zone @@ -44,11 +92,30 @@ const void* tmap_binary_search_nokey (const void* data, size_t num_elem, size_t if (above (data + (mid_idx * elem_size))) // key lower then mid upper_idx = mid_idx; else // key greater or equal to mid + { + if (lower_idx == mid_idx) // DK: search point is at or above lower_idx but below lower_idx + 1. + // if it is at the lower_idx, the lower_idx should be returned + // if it is above, the lower_idx+1 should be returned + // if only 'above' function is provided, there is no way to distinguish these cases + // match check is needed. This is a fundamental flaw in this algorithm design. + // Verdict: Not fixable without changing call signature. + { + ++lower_idx; + break; + } lower_idx = mid_idx; + } } return data + (lower_idx * elem_size); } +const void* tmap_binary_search_nokey (const void* data, size_t num_elem, size_t elem_size, int (*above) (const void* elem)) +{ + tmap_failure ("Internal error- the function tmap_binary_search_nokey is called which has no correct implementation"); + return NULL; +} + + // the above functions can be improved to handle 'lucky strikes' if check for the equality in some form is available, or if no restriction on the comparison order is given int lt_uint (const void* k, const void* e) diff --git a/Analysis/TMAP/src/util/tmap_bsearch.h b/Analysis/TMAP/src/util/tmap_bsearch.h index 59578b5e..40d65eb6 100644 --- a/Analysis/TMAP/src/util/tmap_bsearch.h +++ b/Analysis/TMAP/src/util/tmap_bsearch.h @@ -11,11 +11,14 @@ extern "C" #endif // binary search for sorted arrays. Handles omitted keys -// passed in 'lt' function should compare the key pointed to by the first argument to the data element pointed to by the second argument, in this order -// returns the pointer to the first key that is not lower than the passed one. +// passed in 'lt' function should be symmetric with respect to key and data pointers: (the bsearch would call it as lt (*key, *data) as well as lt (*data, *key)) +// returns the pointer to the first data element that is not lower than the passed key (could be equal to the key). +// if there is no such entries in the passed array, returns a pointer to the upper array boudary (one position above the last element in the array, == (data + num_elem)) // for multiple occurences returns pointer to the lowest occurence // performance is always ln(N), no worst/best case difference (each search on the array of given size takes same number of steps) -const void* tmap_binary_search (const void* key, const void* data, size_t num_elem, size_t elem_size, int (*lt) (const void* key, const void* elem)); +const void* tmap_binary_search_fixed (const void* key, const void* data, size_t num_elem, size_t elem_size, int (*lt) (const void* key, const void* elem)); + +#define tmap_binary_search tmap_binary_search_fixed // 'keyless' variant of the binary search // the passed in 'above' function should return 1 when the data element pointed by the argument is above the desired position, 0 otherwise diff --git a/Analysis/TMAP/src/util/tmap_definitions.c b/Analysis/TMAP/src/util/tmap_definitions.c index 6d43e212..f4ef45a4 100644 --- a/Analysis/TMAP/src/util/tmap_definitions.c +++ b/Analysis/TMAP/src/util/tmap_definitions.c @@ -682,7 +682,7 @@ tmap_detect_cpus() if (sysctl(mib, 2, &ncpu, &len, 0, 0) < 0 || len != sizeof(ncpu)) ncpu = 1; #elif defined(_SC_NPROCESSORS_ONLN) - ncpu = sysconf(_SC_NPROCESSORS_ONLN); + ncpu = sysconf(_SC_NPROCESSORS_ONLN)/2; #elif defined(WIN32) SYSTEM_INFO si; GetSystemInfo(&si); diff --git a/Analysis/TMAP/src/util/tmap_error.h b/Analysis/TMAP/src/util/tmap_error.h index f2ba367c..62eeef30 100644 --- a/Analysis/TMAP/src/util/tmap_error.h +++ b/Analysis/TMAP/src/util/tmap_error.h @@ -46,7 +46,7 @@ enum { ReadFileError, /*!< could not read from a file */ WriteFileError, /*!< could not write from a file */ EndOfFile, /*!< reached the end-of-file prematurely */ - ThreadError, /*!< error starting/joining threads */ + ThreadError, /*!< error starting/joining threads or mantaining sync control structure */ SigInt, /*!< SIGINT signal caught */ SharedMemoryGet, /*!< could not get the shared memory */ SharedMemoryAttach, /*!< could not attach the shared memory */ diff --git a/Analysis/TMAP/src/util/tmap_histo.c b/Analysis/TMAP/src/util/tmap_histo.c index 61ac65fe..e485fe34 100644 --- a/Analysis/TMAP/src/util/tmap_histo.c +++ b/Analysis/TMAP/src/util/tmap_histo.c @@ -45,12 +45,51 @@ int int64_cmp (const void* i1, const void* i2) else return 1; } +int double_cmp (const void* i1, const void* i2) +{ + if (*(double *) i1 < *(double *) i2) return -1; + else if (*(double *) i1 == *(double *) i2) return 0; + else return 1; +} + +// #define USE_TMAP_HISTO_LOCAL_BSEARCH +#if defined (USE_TMAP_HISTO_LOCAL_BSEARCH) +typedef int (*compar_fn_t) (const void *, const void *); + +void* local_bsearch (const void *key, const void *base, size_t nmemb, size_t size, compar_fn_t compar) +{ + size_t l, u, idx; + const void *p; + int comparison; + + l = 0; + u = nmemb; + while (l < u) + { + idx = (l + u) / 2; + p = (void *) (((const char *) base) + (idx * size)); + comparison = (*compar) (key, p); + if (comparison < 0) + u = idx; + else if (comparison > 0) + l = idx + 1; + else + return (void *) p; + } + + return (void *) (((const char *) base) + (l * size));; +} +#endif + void add_to_hist64i (uint64_t* hist, size_t bin_cnt, int64_t* bin_lower_bounds, int64_t value) { // find the bin: do linear search to save on recurrent calls (and on implementation, as bsearch does not fit :) // DK: tmap_binary_search is flawed (enters infine loop when searching for a value equal to first element in the array) - // const int64_t* bound = tmap_binary_search (&value, bin_lower_bounds, bin_cnt, sizeof (int64_t), lt_int); - const int64_t* bound = bsearch (&value, bin_lower_bounds, bin_cnt, sizeof (int64_t), int64_cmp); + // DK: 12/3/2020: Fixed tmap_binary_search + + const int64_t* bound = tmap_binary_search (&value, bin_lower_bounds, bin_cnt, sizeof (int64_t), lt_int); + // const int64_t* bound = bsearch (&value, bin_lower_bounds, bin_cnt, sizeof (int64_t), int64_cmp); + // const int64_t* bound = (const int64_t*) binary_search (&value, bin_lower_bounds, bin_cnt, sizeof (int64_t), int64_cmp); // get bin index size_t idx = bound - bin_lower_bounds; // increment histogram bin value @@ -61,6 +100,7 @@ void add_to_hist64d (uint64_t* hist, size_t bin_cnt, double* bin_lower_bounds, d { // find the bin: do linear search to save on recurrent calls (and on implementation, as bsearch does not fit :) const double* bound = tmap_binary_search (&value, bin_lower_bounds, bin_cnt, sizeof (double), lt_double); + // const double* bound = (const double*) local_bsearch (&value, bin_lower_bounds, bin_cnt, sizeof (double), double_cmp); // get bin index size_t idx = bound - bin_lower_bounds; // increment bin value diff --git a/Analysis/VariantCaller/Bookkeeping/VcfFormat.cpp b/Analysis/VariantCaller/Bookkeeping/VcfFormat.cpp index 7b78a84d..da23fa21 100644 --- a/Analysis/VariantCaller/Bookkeeping/VcfFormat.cpp +++ b/Analysis/VariantCaller/Bookkeeping/VcfFormat.cpp @@ -166,7 +166,7 @@ string getVCFHeader(const ExtendParameters *parameters, ReferenceReader& ref_rea << "##INFO=" << endl; } if (parameters->my_controls.report_ppa){ - headerss << "##INFO=" << endl; + headerss << "##INFO=" << endl; } if (parameters->my_controls.disable_filters){ headerss << "##INFO=" << endl diff --git a/Analysis/VariantCaller/EnsembleEval/StackEngine.cpp b/Analysis/VariantCaller/EnsembleEval/StackEngine.cpp index 0fcef529..ce8b098c 100644 --- a/Analysis/VariantCaller/EnsembleEval/StackEngine.cpp +++ b/Analysis/VariantCaller/EnsembleEval/StackEngine.cpp @@ -205,11 +205,34 @@ void HypothesisStack::AllocateFrequencyStarts(int num_hyp_no_null, vector fake_hs_alleles; fake_hs_alleles.reserve(num_hyp_no_null - 1); + // Find best alt allele from AO + int best_i_alt = -1; + int best_ao = 0; + // Find AO + map >::const_iterator ao_it = variant->info.find("AO"); + if (ao_it != variant->info.end() and ao_it->second.size() == variant->alt.size()){ + for (int i_alt = 0; i_alt < (int) ao_it->second.size(); ++i_alt){ + if (ao_it->second.at(i_alt) == "."){ + best_i_alt = -1; + break; + } + int ao = stoi(ao_it->second.at(i_alt)); + if (ao > best_ao){ + best_ao = ao; + best_i_alt = i_alt; + } + } + } + // try pure frequencies for the alleles if(try_alternatives){ // try pure frequencies for alt alleles for(int i_hyp = 1; i_hyp < num_hyp_no_null; ++i_hyp){ int i_alt = i_hyp - 1; + // Pure frequency for the best alt allele only. + if (i_alt != best_i_alt and best_i_alt >= 0){ + continue; + } if (allele_identity_vector[i_alt].status.isFakeHsAllele){ // I don't want to try the pure freq for a fake hs allele/ fake_hs_alleles.push_back(i_hyp); diff --git a/Analysis/VariantCaller/HandleVariant.cpp b/Analysis/VariantCaller/HandleVariant.cpp index eacde178..87481046 100644 --- a/Analysis/VariantCaller/HandleVariant.cpp +++ b/Analysis/VariantCaller/HandleVariant.cpp @@ -89,8 +89,9 @@ void OverrideMinVarCov(int fd_nonsnp_min_var_cov, vector& variant_specific_params) { assert(allele_identity_vector.size() + 1 == global_flow_disruptive_matrix.size()); - if (fd_nonsnp_min_var_cov < 1) + if (fd_nonsnp_min_var_cov < 1){ return; + } for (unsigned int i_alt = 0; i_alt < allele_identity_vector.size(); ++i_alt){ // Override min_var_coverage of the allele if all the following are satisfied diff --git a/Analysis/VariantCaller/tvcutils/prepare_hotspots.cpp b/Analysis/VariantCaller/tvcutils/prepare_hotspots.cpp index 62933853..ca1a8a69 100644 --- a/Analysis/VariantCaller/tvcutils/prepare_hotspots.cpp +++ b/Analysis/VariantCaller/tvcutils/prepare_hotspots.cpp @@ -694,6 +694,8 @@ int PrepareHotspots(int argc, const char *argv[]) // Process custom tags vector bstrand; vector hp_max_length; + vector oid; + vector omapalt; string raw_oid; string raw_omapalt; string raw_oalt; @@ -753,6 +755,10 @@ int PrepareHotspots(int argc, const char *argv[]) split(raw_bstrand, ',', bstrand); if (not raw_hp_max_length.empty()) split(raw_hp_max_length, ',', hp_max_length); + if (not raw_oid.empty()) + split(raw_oid, ',', oid); + if (not raw_omapalt.empty()) + split(raw_omapalt, ',', omapalt); } @@ -784,14 +790,19 @@ int PrepareHotspots(int argc, const char *argv[]) continue; } unsigned int allele_idx = 0; - for (char *sub_alt = strtok(current_alt,","); sub_alt; sub_alt = strtok(NULL,",")) { + // the below is wrong, since the alt list has to match to the omapalt to get the correct index. + if (oid.empty() or oid.size() != omapalt.size()) { + for (char *sub_alt = strtok(current_alt,","); sub_alt; sub_alt = strtok(NULL,",")) { Allele allele; allele.chr_idx = chr_idx; allele.ref = current_ref; allele.alt = sub_alt; allele.pos = strtol(current_start,NULL,10)-1; - allele.id = current_id; + if (allele_idx < oid.size()) + allele.id = oid[allele_idx]; + else + allele.id = current_id; if (allele.id == ".") allele.id = "hotspot"; @@ -818,7 +829,42 @@ int PrepareHotspots(int argc, const char *argv[]) line_status.back().opos = allele.opos; line_status.back().id = allele.id; allele_idx++; - } + } + } else { + for (allele_idx = 0; allele_idx < oid.size(); allele_idx++) { + Allele allele; + allele.chr_idx = chr_idx; + allele.ref = current_ref; + allele.alt = omapalt[allele_idx]; + allele.pos = strtol(current_start,NULL,10)-1; + allele.id = oid[allele_idx]; + if (allele.id == ".") + allele.id = "hotspot"; + + allele.filtered = false; + line_status.push_back(LineStatus(line_number)); + allele.line_status = &line_status.back(); + allele.opos = allele.pos; + allele.oref = allele.ref; + allele.oalt = allele.alt; + + if (allele_idx < bstrand.size()) { + if (bstrand[allele_idx] != ".") + allele.custom_tags["BSTRAND"] = bstrand[allele_idx]; + } + + if (allele_idx < hp_max_length.size()) { + if (hp_max_length[allele_idx] != ".") + allele.custom_tags["hp_max_length"] = hp_max_length[allele_idx]; + } + + alleles[allele.chr_idx].push_back(allele); + //line_status.back().allele = &alleles[allele.chr_idx].back(); + line_status.back().chr_idx = allele.chr_idx; + line_status.back().opos = allele.opos; + line_status.back().id = allele.id; + } //for + } // else } fclose(input); diff --git a/Analysis/VariantCaller/tvcutils/unify_vcf.cpp b/Analysis/VariantCaller/tvcutils/unify_vcf.cpp index 04b9d24e..d2eab72f 100644 --- a/Analysis/VariantCaller/tvcutils/unify_vcf.cpp +++ b/Analysis/VariantCaller/tvcutils/unify_vcf.cpp @@ -491,11 +491,24 @@ void VcfOrderedMerger::perform() { allele_subset.print_stats(); } +//static string get_gt(map > & sampleOutput) +string get_gt(vcf::Variant *v) +{ + if (v->samples.empty()) return "./."; + map > & sampleOutput = v->samples[v->sampleNames[0]]; + map >::const_iterator itg = sampleOutput.find("GT"); + if (itg == sampleOutput.end()) return "./."; + return itg->second[0]; +} + + static bool in_gt(vcf::Variant *v, int i, bool &alt_called) { alt_called = false; string gt_field; - stringstream gt(v->samples[v->sampleNames[0]]["GT"][0]); + //stringstream gt(v->samples[v->sampleNames[0]]["GT"][0]); + //stringstream gt(get_gt(v->samples[v->sampleNames[0]])); + stringstream gt(get_gt(v)); while (getline(gt, gt_field, '/')){ if (gt_field!="."){ int called_allele = std::stoi(gt_field); @@ -650,7 +663,8 @@ vcf::Variant* VcfOrderedMerger::merge_overlapping_variants() { vcf::Variant& novel_v = *novel_queue.current(); vcf::Variant& assembly_v = *assembly_queue.current(); - string gt = novel_queue.current()->samples[novel_queue.current()->sampleNames[0]]["GT"][0]; + //string gt = get_gt(novel_queue.current()->samples[novel_queue.current()->sampleNames[0]]); + string gt = get_gt(novel_queue.current()); if (false /*(gt == "./." || gt == "0/0"*/) { // Logging novel and indel merge cout << UNIFY_VARIANTS " Advanced merge of IndelAssembly variant " << assembly_queue.current()->sequenceName @@ -765,7 +779,9 @@ bool VcfOrderedMerger::find_match_new(vcf::Variant* merged_entry, vcf::Variant* if (left+*omapalti+right == ll+*omapalt+rr) { idx = omapalti-merged_entry->info["OMAPALT"].begin()+1; string gt_field; - stringstream gt(merged_entry->samples[merged_entry->sampleNames[0]]["GT"][0]); + //stringstream gt(merged_entry->samples[merged_entry->sampleNames[0]]["GT"][0]); + //stringstream gt(get_gt(merged_entry->samples[merged_entry->sampleNames[0]])); + stringstream gt(get_gt(merged_entry)); gt_v = 4; while (getline(gt, gt_field, '/')){ //if (pos == 7578381 and hotspot->position == 7578383) cerr << "gt_field=" << gt_field << endl; @@ -975,7 +991,8 @@ void VcfOrderedMerger::annotate_subset(vcf::Variant* variant) { // unpack called alleles -- First genotype then PPA set called_alts; - string gt_str = variant->samples[variant->sampleNames[0]]["GT"][0]; + //string gt_str = get_gt(variant->samples[variant->sampleNames[0]]); + string gt_str = get_gt(variant); genotype_to_set(called_alts, gt_str, '/'); map >::iterator it; diff --git a/Analysis/Wells/RawWells.cpp b/Analysis/Wells/RawWells.cpp index 7db68614..d2214d9d 100644 --- a/Analysis/Wells/RawWells.cpp +++ b/Analysis/Wells/RawWells.cpp @@ -283,8 +283,10 @@ RawWells::RawWells() { mSaveAsUShort = false; Init ("", "", 0,0,0); + mIs_copy=1; } + RawWells::RawWells ( const char *experimentPath, const char *rawWellsName, int rows, int cols ) { mSaveAsUShort = false; @@ -315,11 +317,13 @@ RawWells::~RawWells() { Close(); // JZ add for multithreading - CleanupHdf5(); + if(!mIs_copy) + CleanupHdf5(); } void RawWells::Init ( const char *experimentPath, const char *rawWellsName, int rows, int cols, int flows ) { + mIs_copy=0; mSaveCopies = false; mSaveRes = false; mConvertWithCopies = true; @@ -356,6 +360,59 @@ void RawWells::Init ( const char *experimentPath, const char *rawWellsName, int } +void RawWells::Init ( RawWells &rw) +{ + mIs_copy=1; + + mDirectory = rw.mDirectory; + mFileLeaf = rw.mFileLeaf; + mFilePath = rw.mFilePath; + mFlowOrder = rw.mFlowOrder; + mRows = rw.mRows; + mCols = rw.mCols; + mFlows = rw.mFlows; + mCurrentWell = rw.mCurrentWell; + WELL_NOT_LOADED = rw.WELL_NOT_LOADED; + WELL_NOT_SUBSET = rw.WELL_NOT_SUBSET; + mSaveCopies = rw.mSaveCopies; + mSaveRes = rw.mSaveRes; + mConvertWithCopies = rw.mConvertWithCopies; + //mInfo = rw.mInfo; + mRankData = rw.mRankData; + mStepSize = rw.mStepSize; + mCompression = rw.mCompression; + mHFile = rw.mHFile; + mWriteOnClose = rw.mWriteOnClose; + mRanks.copy(rw.mRanks); + mWells.copy(rw.mWells); + mResErr.copy(rw.mResErr); + mInfoKeys.copy(rw.mInfoKeys); + mInfoValues.copy(rw.mInfoValues); + mWellChunkSizeRow = rw.mWellChunkSizeRow; + mWellChunkSizeCol = rw.mWellChunkSizeCol; + mWellChunkSizeFlow = rw.mWellChunkSizeFlow; + mCurrentRegionRow = rw.mCurrentRegionRow; + mCurrentRegionCol = rw.mCurrentRegionCol; + mCurrentRow = rw.mCurrentRow; + mCurrentCol = rw.mCurrentCol; + mFirsttimeGetRegionData = rw.mFirsttimeGetRegionData; + mIsLegacy = rw.mIsLegacy; + mSaveAsUShort = rw.mSaveAsUShort; + mLower = rw.mLower; + mUpper = rw.mUpper; + + //WellData data; ///< For returning pointers to internal object, all memory owned internally + +// WellChunk mChunk; +// std::vector mIndexes; ///< Conversion of well index on chip to index in mFlowData below. +// std::vector mFlowData; ///< Big chunk of data... +// std::vector mResData; ///< residual error + + mWellsCopies.resize(mRows * mCols, 1.0); + mWellsCopies2.resize(mRows * mCols, 1.0); +} + + void RawWells::CreateEmpty ( int numFlows, const char *flowOrder, int rows, int cols ) { SetRows ( rows ); @@ -1438,6 +1495,7 @@ void RawWells::OpenWellsToRead() InitIndexes(); } + void RawWells::OpenResToRead() { mResErr.Close(); @@ -1740,8 +1798,11 @@ void RawWells::ReadWells() uint64_t localCount = 0; for ( size_t row = currentRowStart; row < currentRowEnd; row++ ) { + int32_t dbidxr=GetInternalIndex(row,currentColStart); + for ( size_t col = currentColStart; col < currentColEnd; col++ ) { + int dbidx=dbidxr+col-currentColStart; int idx = ToIndex ( col, row ); if ( mIndexes[idx] >= 0 ) { @@ -1755,7 +1816,7 @@ void RawWells::ReadWells() else val = -1.0; } - Set ( row, col, flow, val ); + WriteFlowgramWithIndex(flow,dbidx,val); } } localCount++; @@ -1969,6 +2030,12 @@ float RawWells::AtWithoutChecking ( size_t row, size_t col, size_t flow ) const return AtWithoutChecking ( ToIndex ( col,row ), flow ); } + +int32_t RawWells::GetInternalIndex(size_t row, size_t col) const +{ + return mIndexes[ToIndex ( col,row )]; +} + float RawWells::AtWithoutChecking ( size_t well, size_t flow ) const { uint64_t ii = ( uint64_t ) mIndexes[well] * mChunk.flowDepth + flow - mChunk.flowStart; @@ -2108,7 +2175,8 @@ void RawWells::CloseWithoutCleanupHdf5() void RawWells::Close() { CloseWithoutCleanupHdf5(); - CleanupHdf5(); + if(!mIs_copy) + CleanupHdf5(); } void RawWells::GetRegion ( int &rowStart, int &height, int &colStart, int &width ) diff --git a/Analysis/Wells/RawWells.h b/Analysis/Wells/RawWells.h index 169b30a9..14e5369f 100644 --- a/Analysis/Wells/RawWells.h +++ b/Analysis/Wells/RawWells.h @@ -71,6 +71,17 @@ class RWH5DataSet { bool mSaveAsUShort; float mLower; float mUpper; + + void copy(RWH5DataSet &other){ + mGroup=other.mGroup.c_str(); + mName=other.mName.c_str(); + mDataset=other.mDataset; + mDatatype=other.mDatatype; + mDataspace=other.mDataspace; + mSaveAsUShort=other.mSaveAsUShort; + mLower=other.mLower; + mUpper=other.mUpper; + }; }; @@ -269,6 +280,8 @@ class RawWells { /* Initialization and setup. */ void Init(const char *experimentPath, const char *rawWellsName, int rows, int col, int flows); + void Init ( RawWells &rw ); + void CreateEmpty(int numFlows, const char *flowOrder, int rows, int cols); void CreateEmpty(int numFlows, const char *flowOrder); void SetRegion(int rowStart, int height, int colStart, int width); @@ -319,6 +332,20 @@ class RawWells { float At(size_t well, size_t flow) const; float AtWithoutChecking(size_t row, size_t col, size_t flow) const; float AtWithoutChecking(size_t well, size_t flow) const; + inline float AtWithIndex(uint64_t index, size_t flow) const{ + return mFlowData[( uint64_t ) index * mChunk.flowDepth + flow - mChunk.flowStart]; + } + inline void AtFlowsWithIndex(uint64_t index, float *data) const + { + const float *tmp = &mFlowData[( uint64_t ) index * mChunk.flowDepth]; + int len= mChunk.flowDepth - mChunk.flowStart; + for(int flow=0; flow < len; flow++){ + data[flow]=tmp[flow]; + } + } + + + int32_t GetInternalIndex(size_t row, size_t col) const; float GetCopyCount(size_t row, size_t col) const; float GetCopyCount(size_t well) const; @@ -335,7 +362,9 @@ class RawWells { virtual void WriteFlowgram(size_t flow, size_t x, size_t y, float val, float copies); virtual void WriteFlowgram(size_t flow, size_t x, size_t y, float val, float copies, float resError); virtual void WriteFlowgramWithRes ( size_t flow, size_t x, size_t y, float val, float resError ); - + inline void WriteFlowgramWithIndex(size_t flow, int32_t index, float val){ + mFlowData[( uint64_t ) index * mChunk.flowDepth + flow - mChunk.flowStart] = val; + } void ResetCurrentWell() { mCurrentWell = 0; } void ResetCurrentRegionWell() { mCurrentRow = 0, mCurrentCol = 0, mFirsttimeGetRegionData = true, mCurrentRegionRow = 0, mCurrentRegionCol = 0; } @@ -461,7 +490,8 @@ class RawWells { size_t mStepSize; int mCompression; ///< What level of compression is being used. hid_t mHFile; ///< Id for hdf5 file operations. - + bool mIs_copy; + bool mWriteOnClose; ///< To support legacy api have a flag for writing when closing RWH5DataSet mRanks; ///< Ranks hdf5 dataset diff --git a/Analysis/Wells/WellsManager.cpp b/Analysis/Wells/WellsManager.cpp index 142abf2a..f5cb4d2f 100644 --- a/Analysis/Wells/WellsManager.cpp +++ b/Analysis/Wells/WellsManager.cpp @@ -2,13 +2,44 @@ #include "WellsManager.h" +#include "pthread.h" + + +WellsManager::WellsManager( WellsManager *rw) +: + keys_(rw->keys_), + chunk_size_row_(rw->chunk_size_row_), + chunk_size_col_(rw->chunk_size_col_), + chunk_size_flow_(rw->chunk_size_flow_), + do_norm_(rw->do_norm_), + compress_multi_taps_(rw->compress_multi_taps_), + chip_type_(rw->chip_type_), + num_flows_(rw->num_flows_), + verbose_(rw->verbose_), + ion_flow_order(rw->ion_flow_order), + read_class_map(rw->read_class_map) +{ + + raw_wells_.resize(rw->raw_wells_.size()); + for (unsigned int i=0; iraw_wells_.size(); ++i){ + raw_wells_.at(i).Init(rw->raw_wells_.at(i)); + } + if(do_norm_){ + wells_norm_.resize(raw_wells_.size()); + for (unsigned int i=0; i &wells_file_names, bool verbose) : chunk_size_row_(0), chunk_size_col_(0), chunk_size_flow_(0), do_norm_(false), compress_multi_taps_(true), chip_type_("unknown"), num_flows_(0), verbose_(verbose), - ion_flow_order(NULL), read_class_map(NULL) + norm_method_(""), ion_flow_order(NULL), read_class_map(NULL) { raw_wells_.resize(wells_file_names.size()); if (verbose) { @@ -96,11 +127,16 @@ void WellsManager::OpenForIncrementalRead() void WellsManager::LoadChunk(size_t rowStart, size_t rowHeight, size_t colStart, size_t colWidth, - size_t flowStart, size_t flowDepth) + size_t flowStart, size_t flowDepth, + pthread_mutex_t *mutex) { for (unsigned int i=0; i0 and ion_flow_order->nuc_at(flow-1)== ion_flow_order->nuc_at(flow)){ wells_measurements[flow] = 0.0; - wells_measurements[sig_idx] += raw_wells_[0].At(row,col,flow); + wells_measurements[sig_idx] += raw_wells_[0].AtWithIndex(idx,flow); } else { sig_idx = flow; - wells_measurements[flow] = raw_wells_[0].At(row,col,flow); + wells_measurements[flow] = raw_wells_[0].AtWithIndex(idx,flow); } } } - else //*/ + else { + int32_t idx=raw_wells_[0].GetInternalIndex(row,col); for (int flow = 0; flow < num_flows; ++flow) - wells_measurements[flow] = raw_wells_[0].At(row,col,flow); - + wells_measurements[flow] = raw_wells_[0].AtWithIndex(idx,flow); + } NaNcheck(row, col, num_flows, wells_measurements); } diff --git a/Analysis/Wells/WellsManager.h b/Analysis/Wells/WellsManager.h index e1b52d85..bae6f3b3 100644 --- a/Analysis/Wells/WellsManager.h +++ b/Analysis/Wells/WellsManager.h @@ -29,6 +29,7 @@ class WellsManager { string flow_order_; unsigned int num_flows_; bool verbose_; + string norm_method_; //unsigned int num_verbose_; public: @@ -37,17 +38,20 @@ class WellsManager { ReadClassMap const *read_class_map; WellsManager(const vector & wells_file_names, bool verbose); + WellsManager( WellsManager *rw); int NumWells() const { return raw_wells_.size(); }; void OpenForIncrementalRead(); + void Close(); void LoadChunk(size_t rowStart, size_t rowHeight, size_t colStart, size_t colWidth, - size_t flowStart, size_t flowDepth); + size_t flowStart, size_t flowDepth, + pthread_mutex_t *mutex=NULL); void SetWellsContext( ion::FlowOrder const *flow_order, diff --git a/Analysis/config/args_GX9v1_analysis.json b/Analysis/config/args_GX9v1_analysis.json new file mode 100644 index 00000000..a5b36901 --- /dev/null +++ b/Analysis/config/args_GX9v1_analysis.json @@ -0,0 +1,206 @@ +{ + "BkgModelControlOpts" : { + "bkg-dont-emphasize-by-compression" : 1, + "bkg-washout-flow-detection" : 6, + "bkg-washout-threshold" : 2.0, + "clonal-filter-bkgmodel" : true, + "clonal-filter-debug" : false, + "clonal-filter-use-last-iter-params" : true, + "filter-extreme-ppf-only" : false, + "max-iterations" : 30, + "mixed-first-flow" : 12, + "mixed-last-flow" : 72, + "mixed-model-option" : 0, + "mixed-stringency" : 0.50, + "n-unfiltered-lib" : 100000, + "nokey" : false, + "restart-region-params-file" : "", + "sigproc-regional-smoothing-alpha" : 1.0, + "sigproc-regional-smoothing-gamma" : 1.0, + "xtalk-correction" : false + }, + "DebugMe" : { + "bkg-dbg-trace" : [], + "bkg-debug-files" : false, + "bkg-debug-nsamples" : 9, + "bkg-debug-param" : 1, + "bkg-debug-region" : [ -1, -1 ], + "bkg-debug-trace-rcflow" : "", + "bkg-debug-trace-sse" : "", + "bkg-debug-trace-xyflow" : "", + "debug-bead-only" : true, + "region-vfrc-debug" : false + }, + "FlowContext" : { + "flow-order" : "", + "flowlimit" : -1, + "start-flow-plus-interval" : [ 0, 0 ] + }, + "GlobalDefaultsForBkgModel" : { + "barcode-spec-file" : "", + "bkg-dont-emphasize-by-compression" : false, + "bkg-well-xtalk-name" : "/opt/ion/config/xtalk.p2.2.1.settings.20140120.json", + "gopt" : "default", + "xtalk" : "disable" + }, + "GpuControlOpts" : { + "gpu-amp-guess" : 1, + "gpu-device-ids" : [], + "gpu-fitting-only" : true, + "gpu-flow-by-flow" : false, + "gpu-hybrid-fit-iter" : 3, + "gpu-multi-flow-fit" : 1, + "gpu-multi-flow-fit-blocksize" : 128, + "gpu-multi-flow-fit-l1config" : -1, + "gpu-num-history-flows" : 10, + "gpu-num-streams" : 2, + "gpu-partial-deriv-blocksize" : 128, + "gpu-partial-deriv-l1config" : -1, + "gpu-single-flow-fit" : 1, + "gpu-single-flow-fit-blocksize" : -1, + "gpu-single-flow-fit-l1config" : -1, + "gpu-single-flow-fit-type" : 3, + "gpu-switch-to-flow-by-flow-at" : 20, + "gpu-use-all-devices" : false, + "gpu-verbose" : false, + "gpuworkload" : 1.0, + "post-fit-handshake-worker" : true + }, + "ImageControlOpts" : { + "acqPrefix" : "acq_", + "col-doubles-xtalk-correct" : false, + "col-flicker-correct" : true, + "col-flicker-correct-aggressive" : true, + "col-flicker-correct-verbose" : false, + "corr-noise-correct" : true, + "dat-postfix" : "dat", + "flowtimeoffset" : 1000, + "fluid-potential-correct" : false, + "fluid-potential-threshold" : 1.0, + "frames" : -1, + "hilowfilter" : false, + "ignore-checksum-errors" : false, + "ignore-checksum-errors-1frame" : false, + "img-gain-correct" : true, + "mask-datacollect-exclude-regions" : true, + "nn-subtract-empties" : false, + "nnmask" : [ 1, 3 ], + "nnmaskwh" : [ 1, 1, 12, 8 ], + "no-threaded-file-access" : false, + "output-pinned-wells" : false, + "pair-xtalk-coeff" : 0.0, + "pca-test" : "", + "readaheaddat" : 0, + "smoothing" : "", + "smoothing-file" : "", + "total-timeout" : 600 + }, + "KeyContext" : { + "librarykey" : "", + "tfkey" : "" + }, + "LocalSigProcControl" : { + "always-start-slow" : true, + "barcode-debug" : false, + "barcode-flag" : false, + "barcode-penalty" : 2000.0, + "barcode-radius" : 0.750, + "barcode-tie" : 0.50, + "bkg-ampl-lower-limit" : -0.50, + "bkg-copy-stringency" : 1.0, + "bkg-exp-tail-bkg-adj" : true, + "bkg-exp-tail-bkg-limit" : 0.20, + "bkg-exp-tail-bkg-lower" : 10.0, + "bkg-exp-tail-fit" : true, + "bkg-exp-tail-tau-adj" : true, + "bkg-kmult-adj-low-hi" : 2.0, + "bkg-max-rank-beads" : 100000, + "bkg-min-sampled-beads" : 100, + "bkg-pca-dark-matter" : true, + "bkg-per-flow-time-tracking" : true, + "bkg-post-key-step" : 2, + "bkg-post-key-train" : 2, + "bkg-prefilter-beads" : false, + "bkg-recompress-tail-raw-trace" : false, + "bkg-single-gauss-newton" : true, + "bkg-use-proton-well-correction" : true, + "clonal-filter-bkgmodel" : false, + "dark-matter-correction" : true, + "double-tap-means-zero" : true, + "fit-region-kmult" : false, + "fitting-taue" : false, + "incorporation-type" : 0, + "kmult-hi-limit" : 1.750, + "kmult-low-limit" : 0.650, + "kmult-penalty" : 100.0, + "limit-rdr-fit" : false, + "num-regional-samples" : 400, + "regional-sampling" : true, + "regional-sampling-type" : 1, + "revert-regional-sampling" : false, + "skip-first-flow-block-regional-fitting" : false, + "stop-beads" : false, + "suppress-copydrift" : true, + "use-alternative-etbr-equation" : false, + "use-safe-buffer-model" : false, + "vectorize" : true + }, + "ModuleControlOpts" : { + "bfonly" : false, + "from-beadfind" : true, + "pass-tau" : true + }, + "ObsoleteOpts" : { + "forcenn" : 0, + "nuc-correct" : 0, + "use-pinned" : false + }, + "SignalProcessingBlockControl" : { + "bkg-bfmask-update" : false, + "numcputhreads" : 0, + "restart-check" : true, + "restart-from" : "", + "restart-next" : "", + "sigproc-compute-flow" : "", + "wells-compression" : 0, + "wells-save-flow" : 60, + "wells-save-freq" : -1 + }, + "SpatialContext" : { + "analysis-region" : [], + "cropped" : [], + "cropped-region-origin" : [], + "region-size" : [ 216, 224 ] + }, + "SystemContext" : { + "dat-source-directory" : "", + "explog-path" : "", + "local-wells-file" : false, + "no-subdir" : true, + "output-dir" : "", + "region-list" : [], + "stack-dump-file" : "", + "well-stat-file" : "", + "wells-convert-high" : 28.0, + "wells-convert-low" : -5.0, + "wells-convert-with-copies" : true, + "wells-format" : "hdf5", + "wells-save-as-ushort" : true, + "wells-save-number-copies" : true, + "wells-save-queue-size" : 0 + }, + "ThumbnailControl" : { + "mask-datacollect-exclude-regions" : false, + "region-size" : [ 100, 100 ], + "total-timeout" : 36000, + "bkg-debug-files" : true, + "bkg-debug-param" : 3, + "gpuworkload" : 0 + }, + "TraceControl" : { + "bkg-empty-well-normalization" : false, + "bkg-use-duds" : false, + "trim-ref-trace" : "" + }, + "chipType" : "GX9v1" +} diff --git a/Analysis/config/args_GX9v1_beadfind.json b/Analysis/config/args_GX9v1_beadfind.json new file mode 100644 index 00000000..da20fee5 --- /dev/null +++ b/Analysis/config/args_GX9v1_beadfind.json @@ -0,0 +1,124 @@ +{ + "BeadfindControlOpts" : { + "beadfind-basis" : "nobuffer", + "beadfind-bfmult" : 1.0, + "beadfind-bgdat" : "", + "beadfind-blob-filter" : false, + "beadfind-dat" : "beadfind_pre_0003.dat", + "beadfind-diagnostics" : 2, + "beadfind-filt-noisy-col" : "none", + "beadfind-gain-correction" : true, + "beadfind-lib-filt" : 1.0, + "beadfind-lib-min-peak" : 10.0, + "beadfind-mesh-step" : [ 108, 112 ], + "beadfind-acq-threshold" : [ -10, 10, 5, 500 ], + "beadfind-bf-threshold" : [ -5, 300, -20000, -10 ], + "beadfind-min-tf-snr" : 4.0, + "beadfind-minlive" : 0.00010, + "beadfind-minlivesnr" : 3.0, + "beadfind-num-threads" : -1, + "beadfind-predict-end" : -1, + "beadfind-predict-start" : -1, + "beadfind-sdasbf" : true, + "beadfind-sep-ref" : false, + "beadfind-sig-ref-type" : -1, + "beadfind-skip-sd-recover" : 1, + "beadfind-smooth-trace" : false, + "beadfind-tf-filt" : 1.0, + "beadfind-tf-min-peak" : 40.0, + "beadfind-type" : "differential", + "beadfind-zero-flows" : "", + "beadfindfile" : "", + "beadmask-categorized" : false, + "bfold" : true, + "datacollect-gain-correction" : true, + "noduds" : false, + "use-beadmask" : "", + "exclusion-mask" : "exclusionMask_560.txt" + }, + "DebugMe" : { + "bkg-dbg-trace" : [], + "bkg-debug-files" : false, + "bkg-debug-nsamples" : 9, + "bkg-debug-param" : 1, + "bkg-debug-region" : [ -1, -1 ], + "bkg-debug-trace-rcflow" : "", + "bkg-debug-trace-sse" : "", + "bkg-debug-trace-xyflow" : "", + "debug-bead-only" : true, + "region-vfrc-debug" : false + }, + "FlowContext" : { + "flow-order" : "", + "flowlimit" : -1, + "start-flow-plus-interval" : [ 0, 0 ] + }, + "ImageControlOpts" : { + "acqPrefix" : "acq_", + "col-doubles-xtalk-correct" : false, + "col-flicker-correct" : true, + "col-flicker-correct-aggressive" : true, + "col-flicker-correct-verbose" : false, + "corr-noise-correct" : true, + "dat-postfix" : "dat", + "flowtimeoffset" : 1000, + "fluid-potential-correct" : false, + "fluid-potential-threshold" : 1.0, + "frames" : -1, + "hilowfilter" : false, + "ignore-checksum-errors" : false, + "ignore-checksum-errors-1frame" : false, + "img-gain-correct" : true, + "mask-datacollect-exclude-regions" : true, + "nn-subtract-empties" : false, + "nnmask" : [ 1, 3 ], + "nnmaskwh" : [ 1, 1, 12, 8 ], + "no-threaded-file-access" : false, + "output-pinned-wells" : false, + "pair-xtalk-coeff" : 0.0, + "pca-test" : "", + "readaheaddat" : 0, + "smoothing" : "", + "smoothing-file" : "", + "total-timeout" : 600 + }, + "KeyContext" : { + "librarykey" : "", + "tfkey" : "" + }, + "ModuleControlOpts" : { + "bfonly" : false, + "from-beadfind" : false, + "pass-tau" : true + }, + "SpatialContext" : { + "analysis-region" : [], + "cropped" : [], + "cropped-region-origin" : [], + "region-size" : [ 216, 224 ] + }, + "SystemContext" : { + "dat-source-directory" : "", + "explog-path" : "", + "local-wells-file" : false, + "no-subdir" : true, + "output-dir" : "", + "region-list" : [], + "stack-dump-file" : "", + "well-stat-file" : "", + "wells-convert-high" : 28.0, + "wells-convert-low" : -5.0, + "wells-convert-with-copies" : true, + "wells-format" : "hdf5", + "wells-save-as-ushort" : true, + "wells-save-number-copies" : true, + "wells-save-queue-size" : 0 + }, + "ThumbnailControl" : { + "beadfind-mesh-step" : [ 100, 100 ], + "mask-datacollect-exclude-regions" : false, + "region-size" : [ 100, 100 ], + "total-timeout" : 36000 + }, + "chipType" : "GX9v1" +} diff --git a/Analysis/config/gopt_GX9v1.param.json b/Analysis/config/gopt_GX9v1.param.json new file mode 100644 index 00000000..2691b214 --- /dev/null +++ b/Analysis/config/gopt_GX9v1.param.json @@ -0,0 +1,65 @@ +{ + "metadata": { + "compatible_chip_type": "GX9v1", + "created": "2015-05-14 11:25:51.416860", + "optimizable params": "km_const(1-4), krate(6-9), d_coeff(11-14), sigma_mult(16-19), t_mid_nuc_delay(21-24), sens(25), tau_R_m(26), tau_R_o(27), emphasis(28-35), emp_amplitude(36), emp_width(37), clonal_call_scale(38-42), tau_E(43), min_tauB/max_tauB/mid_tauB(44/45/46)", + "source": "gopt", + "version": 1 + }, + "parameters": { + "clonal_call_scale": [ + 0.56925, + 0.0396, + 0.0525, + 0.234, + 0.76275 + ], + "d_coeff": [ + 115.814957, + 137.319839, + 164.406784, + 136.495712 + ], + "emp_amplitude": 10.41, + "emp_width": 5.863, + "emphasis": [ + 3.500887, + 1.423262, + 0.85275, + 0.686812, + 11.354063, + 0.426375, + 0.16335, + 30.405375 + ], + "km_const": [ + 22.251457, + 24.723841, + 21.015265, + 22.251457 + ], + "krate": [ + 19.536833, + 20.839289, + 26.049112, + 32.56139 + ], + "molecules_to_micromolar_conv": 6.2e-05, + "sens": 2.935624, + "shrink_factor": 0.0, + "sigma_mult": [ + 1.108302, + 1.072058, + 0.953788, + 0.813868 + ], + "t_mid_nuc_delay": [ + 0.51474, + 1.32788, + 0.00746, + 0.12682 + ], + "tau_R_m": -4.12, + "tau_R_o": 12.18 + } +} diff --git a/Analysis/config/phredTable.GX9v1 b/Analysis/config/phredTable.GX9v1 new file mode 100644 index 00000000..a0541159 --- /dev/null +++ b/Analysis/config/phredTable.GX9v1 @@ -0,0 +1,3189 @@ +0.014264 0.02677 0 1 0.167595 -0.890924 11517 35 +0.021055 0.061265 0 1 0.06393 -0.893946 8750 35 +0.02733 0.02677 6 1 0.073808 -0.893946 7339 32 +0.01081 0.092442 6 1 0.068607 -0.890924 3625 33 +0.018999 0.076343 6 1 0.068607 -0.89835 3657 33 +0.01081 0.076343 6 1 0.07966 -0.890924 3286 30 +0.014264 1.75492 6 1 0.06393 -0.89835 2701 31 +1.14252 0.044902 0 1 0.06393 -0.893946 2674 31 +0.017229 0.092442 6 1 0.06393 -0.896382 2121 30 +0.017229 0.044902 6 1 0.073808 -0.896382 2092 30 +1.14252 0.02677 0 1 0.073808 -0.893946 2070 30 +0.011836 0.02677 6 1 0.167595 -0.859355 17770 30 +0.01081 0.02677 6 1 0.073808 -0.827536 3101 35 +0.01081 0.044902 6 1 0.07966 -0.859355 5903 32 +0.01081 0.092442 0 1 0.06393 -0.876618 2582 34 +0.01081 0.044902 0 1 0.111523 -0.859355 4329 32 +0.01081 0.092442 0 1 0.068607 -0.876618 2826 32 +0.018999 0.044902 6 1 0.086308 -0.89835 2539 31 +0.01081 0.02677 6 1 0.101886 -0.827536 3266 30 +0.02733 0.02677 0 1 0.068607 -0.88244 12111 30 +0.02733 0.02677 0 1 0.073808 -0.887208 3773 31 +0.018999 0.02677 0 1 0.068607 -0.876618 3619 31 +0.018999 0.02677 0 1 0.123692 -0.876618 31090 30 +0.033646 0.02677 6 1 0.140196 -0.89835 4836 31 +0.02733 0.044902 6 1 0.086308 -0.89835 2252 31 +0.01568 0.044902 6 1 0.07966 -0.893946 2756 30 +0.018999 0.061265 6 1 0.06393 -0.887208 6190 29 +0.01568 0.044902 6 1 0.068607 -0.887208 1922 33 +0.01568 0.044902 6 1 0.06393 -0.876618 2694 31 +0.014264 0.044902 6 1 0.073808 -0.876618 5814 31 +0.013018 0.061265 0 1 0.123692 -0.89835 1981 30 +0.02733 0.02677 6 1 0.093586 -0.896382 1972 30 +0.033646 0.02677 0 1 0.073808 -0.887208 1762 29 +0.01568 0.044902 6 1 0.167595 -0.893946 6091 29 +0.014264 0.044902 6 1 0.101886 -0.890924 2058 33 +0.02733 0.044902 0 1 0.101886 -0.89835 1642 29 +0.014264 0.02677 0 1 0.101886 -0.86908 4830 29 +0.017229 0.02677 0 1 0.06393 -0.845996 5586 30 +0.01568 0.02677 0 1 0.06393 -0.827536 3195 30 +0.013018 0.044902 6 1 0.073808 -0.859355 7342 30 +0.01568 0.044902 0 1 0.06393 -0.859355 2223 33 +0.013018 0.02677 0 1 0.068607 -0.827536 2754 30 +0.013018 0.044902 6 1 0.068607 -0.845996 3820 30 +0.02733 0.02677 0 1 0.111523 -0.887208 12861 29 +0.023678 0.02677 6 1 0.140196 -0.893946 1867 30 +0.021055 0.02677 0 1 0.111523 -0.876618 5729 29 +0.023678 0.044902 0 1 0.073808 -0.893946 3096 29 +0.018999 0.044902 0 1 0.068607 -0.88244 3122 32 +0.021055 0.02677 0 1 0.167595 -0.88244 3076 29 +0.017229 0.02677 6 1 0.140196 -0.876618 1787 30 +0.018999 0.02677 0 1 0.111523 -0.827536 83439 29 +0.014264 0.02677 6 1 0.111523 -0.827536 1594 29 +0.017229 0.076343 6 1 0.06393 -0.887208 3821 29 +0.011836 0.129441 6 1 0.06393 -0.890924 2553 29 +0.01081 0.109872 0 1 0.068607 -0.88244 1929 30 +0.01081 0.109872 6 1 0.086308 -0.896382 2256 29 +0.01081 0.061265 6 1 0.140196 -0.887208 2681 30 +0.01081 0.092442 0 1 0.073808 -0.88244 1843 33 +0.01081 0.092442 6 1 0.140196 -0.896382 1709 29 +0.01081 0.076343 6 1 0.111523 -0.887208 2024 30 +0.011836 0.092442 6 1 0.111523 -0.89835 1721 29 +0.013018 0.092442 0 1 0.101886 -0.89835 1899 30 +0.01081 0.092442 0 1 0.101886 -0.887208 2565 29 +0.021055 0.02677 0 1 0.06393 -0.827536 2993 29 +0.021055 0.02677 0 1 0.068607 -0.845996 2309 29 +0.02733 0.02677 0 1 0.068607 -0.859355 7466 29 +0.017229 0.02677 6 1 0.123692 -0.827536 6638 29 +0.033646 0.044902 0 1 0.06393 -0.887208 2188 29 +0.01081 0.109872 0 1 0.073808 -0.876618 3632 29 +0.014264 0.02677 0 1 0.167595 -0.827536 2138 29 +0.013018 0.076343 6 1 0.073808 -0.887208 7758 28 +0.013018 0.061265 0 1 0.06393 -0.876618 1518 32 +0.013018 0.061265 0 1 0.073808 -0.88244 1588 29 +0.018999 0.02677 0 1 0.123692 -0.827536 1497 29 +0.014264 0.061265 6 1 0.073808 -0.887208 2245 29 +0.01568 0.092442 6 1 0.073808 -0.89835 1283 31 +0.014264 0.076343 6 1 0.07966 -0.896382 1828 30 +0.017229 0.076343 6 1 0.086308 -0.89835 2212 30 +0.017229 0.044902 6 1 0.068607 -0.876618 1436 29 +0.021055 0.02677 0 1 0.073808 -0.859355 1430 29 +0.033646 0.044902 0 2 0.068607 -0.89835 1377 28 +0.01081 0.044902 6 1 0.068607 -0.827536 1372 28 +0.023678 0.02677 0 1 0.06393 -0.549937 9485 28 +0.01081 0.02677 6 1 0.07966 -0.549937 1313 31 +0.01081 0.219974 6 1 0.086308 -0.89835 2013 28 +0.01081 0.129441 6 1 0.111523 -0.896382 2740 30 +0.02733 0.02677 6 1 0.140196 -0.890924 2653 28 +0.01081 0.180841 6 1 0.101886 -0.896382 3308 28 +0.021055 0.02677 0 1 0.101886 -0.859355 5274 28 +0.021055 0.02677 0 1 0.086308 -0.845996 2858 30 +0.02733 0.02677 0 1 0.086308 -0.86908 10775 29 +0.023678 0.02677 0 1 0.101886 -0.876618 1856 30 +0.02733 0.02677 0 1 0.123692 -0.88244 2753 28 +0.023678 0.02677 6 1 0.111523 -0.876618 2091 28 +0.021055 0.044902 0 1 0.123692 -0.890924 14960 28 +0.018999 0.044902 0 1 0.073808 -0.876618 4714 28 +0.01568 0.044902 0 1 0.093586 -0.876618 10825 29 +0.013018 0.044902 6 1 0.07966 -0.859355 2159 30 +0.01568 0.061265 6 1 0.07966 -0.887208 5791 29 +0.011836 0.061265 0 1 0.140196 -0.890924 1841 30 +0.013018 0.061265 0 1 0.101886 -0.890924 1534 32 +0.014264 0.061265 0 1 0.111523 -0.893946 1694 29 +0.013018 0.076343 0 1 0.101886 -0.893946 2389 29 +0.013018 0.061265 0 1 0.101886 -0.887208 1590 29 +0.01568 0.061265 0 1 0.086308 -0.887208 1710 29 +0.011836 0.061265 0 1 0.093586 -0.88244 1620 29 +0.018999 0.061265 6 1 0.073808 -0.887208 5093 29 +0.01568 0.092442 6 1 0.073808 -0.896382 2166 29 +0.017229 0.076343 6 1 0.073808 -0.893946 2072 28 +0.014264 0.076343 6 1 0.093586 -0.893946 1402 28 +0.018999 0.061265 0 1 0.086308 -0.887208 6885 28 +0.017229 0.044902 0 1 0.093586 -0.88244 1578 32 +0.018999 0.061265 0 1 0.111523 -0.896382 3050 32 +0.021055 0.044902 0 1 0.093586 -0.887208 2115 30 +0.017229 0.061265 6 1 0.093586 -0.890924 1547 29 +0.017229 0.076343 0 1 0.111523 -0.89835 1463 29 +0.017229 0.044902 0 1 0.093586 -0.876618 1417 29 +0.017229 0.061265 0 1 0.140196 -0.896382 1337 28 +0.021055 0.044902 0 1 0.167595 -0.893946 1332 28 +0.011836 0.109872 6 1 0.086308 -0.896382 1969 28 +0.021055 0.044902 6 1 0.07966 -0.88244 2580 28 +0.033646 0.044902 0 1 0.06393 -0.88244 1535 29 +0.023678 0.044902 0 1 0.06393 -0.86908 3149 29 +0.023678 0.02677 1 1 0.086308 -0.827536 19468 28 +0.018999 0.044902 6 1 0.111523 -0.887208 2508 28 +0.01568 0.044902 0 1 0.111523 -0.88244 1383 28 +0.017229 0.044902 0 1 0.111523 -0.86908 15908 28 +0.014264 0.044902 6 1 0.073808 -0.859355 1348 31 +0.013018 0.044902 0 1 0.111523 -0.859355 2864 30 +0.014264 0.044902 6 1 0.068607 -0.845996 1493 29 +0.017229 0.044902 0 1 0.068607 -0.827536 14865 28 +0.014264 0.044902 0 1 0.086308 -0.859355 1345 28 +0.01081 0.152582 0 1 0.140196 -0.896382 1880 28 +0.033646 0.044902 0 1 0.06393 -0.86908 3072 28 +0.018999 0.02677 6 1 0.073808 -0.549937 11438 28 +0.021055 0.02677 6 1 0.068607 -0.549937 1665 29 +0.023678 0.02677 0 1 0.068607 -0.549937 1614 29 +0.013018 0.02677 6 1 0.101886 -0.549937 4558 29 +0.01081 0.28403 6 1 0.093586 -0.896382 1772 28 +0.014264 0.061265 0 1 0.068607 -0.827536 27084 28 +0.01081 0.076343 0 1 0.068607 -0.827536 5069 29 +0.01081 0.061265 0 1 0.101886 -0.845996 10196 28 +0.014264 0.044902 0 1 0.07966 -0.845996 4565 28 +0.011836 0.044902 6 1 0.07966 -0.827536 3318 28 +0.01081 0.044902 6 1 0.073808 -0.549937 1562 32 +0.01081 0.061265 0 1 0.07966 -0.827536 1708 29 +0.014264 0.044902 6 1 0.073808 -0.827536 2119 28 +0.01081 0.061265 0 1 0.086308 -0.827536 1391 28 +0.01568 0.044902 0 1 0.07966 -0.845996 3155 28 +0.013018 0.076343 0 1 0.086308 -0.887208 2342 28 +0.033646 0.02677 0 1 0.140196 -0.890924 5241 28 +1.14252 0.02677 0 1 0.101886 -0.896382 1344 28 +0.02733 0.02677 0 1 0.101886 -0.859355 9793 28 +0.02733 0.02677 0 1 0.123692 -0.876618 1567 29 +0.021055 0.02677 6 1 0.167595 -0.876618 2031 28 +0.021055 0.044902 0 1 0.111523 -0.88244 3985 28 +0.021055 0.044902 0 1 0.093586 -0.876618 4431 28 +0.021055 0.061265 0 1 0.06393 -0.827536 23303 28 +0.018999 0.061265 0 1 0.068607 -0.88244 1446 32 +0.033646 0.044902 0 1 0.06393 -0.859355 2788 30 +0.017229 0.061265 0 1 0.073808 -0.88244 1377 28 +0.021055 0.061265 0 1 0.068607 -0.88244 1923 28 +0.021055 0.061265 0 1 0.111523 -0.89835 1317 28 +0.021055 0.061265 0 1 0.068607 -0.876618 2469 28 +0.014264 0.092442 0 1 0.06393 -0.876618 7259 27 +0.017229 0.076343 0 1 0.06393 -0.876618 1850 33 +0.023678 0.044902 0 1 0.068607 -0.88244 1118 30 +0.014264 0.076343 0 1 0.06393 -0.827536 9645 28 +0.011836 0.109872 6 1 0.101886 -0.896382 1196 28 +0.033646 0.02677 0 1 0.093586 -0.887208 1191 28 +0.033646 0.02677 0 1 0.07966 -0.88244 1368 28 +0.01081 0.28403 6 1 0.111523 -0.89835 1168 28 +0.018999 0.092442 6 1 0.06393 -0.890924 2826 28 +0.018999 0.092442 6 1 0.068607 -0.896382 1197 31 +0.02733 0.061265 0 1 0.06393 -0.890924 1675 27 +0.023678 0.092442 0 1 0.06393 -0.893946 2567 29 +0.033646 0.061265 0 1 0.086308 -0.89835 3212 28 +0.014264 0.076343 0 1 0.111523 -0.893946 1109 27 +0.013018 0.092442 0 1 0.111523 -0.896382 1269 28 +0.011836 0.076343 0 1 0.111523 -0.887208 1254 28 +0.018999 0.044902 6 1 0.123692 -0.887208 1106 27 +0.011836 0.044902 0 1 0.167595 -0.86908 1102 27 +0.018999 0.044902 6 1 0.140196 -0.887208 1252 28 +0.01568 0.061265 0 1 0.140196 -0.887208 5106 28 +0.018999 0.061265 0 1 0.111523 -0.893946 1269 28 +0.017229 0.061265 0 1 0.140196 -0.890924 1203 28 +0.011836 0.061265 0 1 0.07966 -0.827536 7153 27 +0.011836 0.061265 0 1 0.093586 -0.86908 1620 29 +0.018999 0.061265 0 1 0.07966 -0.876618 8864 28 +0.01081 0.061265 0 1 0.111523 -0.845996 1097 27 +0.014264 0.061265 0 1 0.093586 -0.876618 3277 27 +0.014264 0.076343 0 1 0.06393 -0.549937 8735 27 +0.01081 0.129441 0 1 0.093586 -0.887208 7076 27 +0.011836 0.129441 0 1 0.06393 -0.88244 1635 27 +0.013018 0.109872 0 1 0.093586 -0.890924 15230 27 +0.011836 0.109872 0 1 0.073808 -0.887208 1480 29 +0.011836 0.092442 0 1 0.073808 -0.88244 1643 29 +0.013018 0.109872 6 1 0.068607 -0.887208 1193 28 +0.013018 0.092442 0 1 0.101886 -0.890924 1170 28 +0.011836 0.129441 0 1 0.093586 -0.887208 10086 27 +0.013018 0.129441 0 1 0.086308 -0.887208 10416 28 +0.01568 0.129441 6 1 0.073808 -0.89835 1965 28 +0.023678 0.152582 6 1 0.06393 -0.89835 2240 27 +0.014264 0.076343 0 1 0.068607 -0.86908 5032 27 +0.013018 0.092442 0 1 0.073808 -0.88244 1436 29 +0.011836 0.076343 0 1 0.068607 -0.827536 2878 28 +0.013018 0.092442 0 1 0.093586 -0.88244 7973 28 +0.01081 0.076343 0 1 0.140196 -0.88244 1139 31 +0.01081 0.076343 0 1 0.111523 -0.86908 3787 30 +0.013018 0.092442 0 1 0.07966 -0.876618 6143 28 +0.01081 0.109872 0 1 0.093586 -0.88244 1260 28 +0.014264 0.076343 0 1 0.093586 -0.88244 4526 28 +0.014264 0.076343 0 1 0.07966 -0.876618 1153 28 +0.014264 0.076343 6 1 0.111523 -0.890924 1122 27 +0.013018 0.129441 6 1 0.101886 -0.896382 2415 28 +0.013018 0.129441 0 1 0.140196 -0.89835 2428 29 +0.014264 0.076343 6 1 0.123692 -0.890924 1426 29 +0.013018 0.109872 6 1 0.123692 -0.896382 1165 31 +0.011836 0.076343 0 1 0.140196 -0.88244 1633 29 +0.011836 0.061265 0 1 0.140196 -0.86908 1931 28 +0.01081 0.076343 0 1 0.093586 -0.845996 4900 27 +0.014264 0.076343 0 1 0.086308 -0.876618 1606 27 +0.011836 0.092442 0 1 0.093586 -0.876618 2275 28 +0.014264 0.061265 0 1 0.093586 -0.86908 4810 27 +0.014264 0.061265 6 1 0.073808 -0.827536 6839 28 +0.01081 0.076343 6 1 0.111523 -0.859355 1352 28 +0.013018 0.061265 6 1 0.07966 -0.845996 1730 28 +0.014264 0.076343 6 1 0.073808 -0.86908 2218 27 +0.014264 0.076343 0 1 0.086308 -0.86908 4036 28 +0.013018 0.061265 0 1 0.086308 -0.845996 4245 27 +0.011836 0.076343 0 1 0.086308 -0.845996 5003 29 +0.02733 0.044902 0 1 0.06393 -0.845996 2642 27 +0.033646 0.02677 6 1 0.06393 -0.845996 1392 28 +0.02733 0.02677 0 1 0.07966 -0.845996 3339 27 +0.02733 0.02677 0 1 0.086308 -0.827536 8185 27 +0.033646 0.02677 6 1 0.06393 -0.827536 1317 28 +0.011836 0.044902 0 1 0.111523 -0.845996 1049 27 +0.02733 0.02677 6 1 0.167595 -0.890924 1047 27 +0.01568 0.076343 0 1 0.111523 -0.896382 1039 27 +0.018999 0.076343 0 1 0.07966 -0.896382 1164 28 +0.01568 0.061265 0 1 0.073808 -0.859355 3115 27 +0.017229 0.044902 0 1 0.07966 -0.859355 1543 27 +0.014264 0.092442 0 1 0.101886 -0.890924 5654 27 +0.014264 0.092442 6 1 0.068607 -0.876618 1590 32 +0.014264 0.109872 0 1 0.073808 -0.893946 1408 28 +0.014264 0.092442 0 1 0.086308 -0.887208 1286 28 +0.017229 0.092442 6 1 0.068607 -0.887208 4369 28 +0.01568 0.092442 0 1 0.07966 -0.893946 1477 29 +0.01568 0.092442 0 1 0.093586 -0.896382 1063 30 +0.01568 0.129441 6 1 0.093586 -0.89835 3463 28 +0.014264 0.129441 6 1 0.123692 -0.89835 2080 28 +0.01568 0.061265 0 1 0.086308 -0.876618 1024 27 +0.02733 0.061265 0 1 0.06393 -0.845996 7657 27 +0.023678 0.02677 1 1 0.167595 -0.88244 1020 27 +0.023678 0.02677 0 1 0.111523 -0.859355 2028 27 +0.021055 0.02677 0 1 0.140196 -0.86908 1084 27 +0.011836 0.109872 0 1 0.093586 -0.88244 2534 27 +0.013018 0.109872 6 1 0.068607 -0.88244 1040 30 +0.011836 0.109872 6 1 0.068607 -0.876618 1114 27 +0.023678 0.109872 0 1 0.06393 -0.896382 1011 27 +0.014264 0.076343 0 1 0.167595 -0.893946 1008 27 +0.01568 0.061265 0 1 0.101886 -0.876618 3022 27 +0.018999 0.044902 0 1 0.140196 -0.88244 1510 27 +0.013018 0.044902 0 1 0.567647 -0.86908 1068 27 +0.013018 0.061265 0 1 0.086308 -0.827536 6039 27 +0.011836 0.129441 0 1 0.093586 -0.88244 5027 27 +0.01081 0.129441 0 1 0.073808 -0.876618 1249 31 +0.01081 0.152582 6 1 0.068607 -0.876618 2425 28 +0.023678 0.02677 6 1 0.111523 -0.859355 1004 27 +0.023678 0.02677 6 1 0.140196 -0.86908 1901 28 +0.018999 0.02677 0 1 0.101886 -0.549937 13041 27 +0.01568 0.02677 6 1 0.111523 -0.549937 1872 28 +0.013018 0.129441 0 1 0.073808 -0.88244 2004 27 +0.017229 0.109872 0 1 0.111523 -0.896382 14476 27 +0.018999 0.092442 6 1 0.086308 -0.89835 1109 30 +0.01568 0.129441 0 1 0.123692 -0.89835 1705 29 +0.017229 0.092442 0 1 0.073808 -0.890924 1806 28 +0.01568 0.076343 0 1 0.073808 -0.86908 4671 27 +0.017229 0.076343 6 1 0.073808 -0.876618 3052 27 +0.01568 0.129441 0 1 0.073808 -0.890924 7972 27 +0.023678 0.109872 0 1 0.06393 -0.893946 1058 30 +0.01568 0.129441 0 1 0.093586 -0.896382 2149 29 +0.017229 0.109872 6 1 0.068607 -0.890924 1047 27 +0.033646 0.044902 0 1 0.123692 -0.89835 1487 27 +0.021055 0.02677 0 1 0.123692 -0.549937 17209 27 +0.021055 0.02677 6 1 0.093586 -0.549937 1469 29 +0.023678 0.02677 0 1 0.073808 -0.549937 1752 28 +0.02733 0.02677 0 1 0.093586 -0.827536 4683 27 +0.023678 0.02677 0 1 0.111523 -0.845996 1614 29 +0.014264 0.044902 0 1 0.068607 -0.549937 2454 27 +0.013018 0.044902 0 1 0.073808 -0.549937 1541 27 +0.023678 0.044902 0 1 0.140196 -0.887208 9308 27 +0.023678 0.044902 0 1 0.567647 -0.887208 2927 27 +0.013018 0.061265 0 1 0.140196 -0.859355 6795 27 +0.011836 0.061265 0 1 0.123692 -0.845996 2297 29 +0.01568 0.061265 0 1 0.111523 -0.876618 1297 28 +0.013018 0.076343 0 1 0.111523 -0.88244 1097 27 +0.011836 0.076343 0 1 0.093586 -0.549937 29578 27 +0.013018 0.044902 0 1 0.093586 -0.549937 3275 29 +0.01081 0.061265 0 1 0.111523 -0.827536 1447 29 +0.01081 0.044902 0 1 0.167595 -0.549937 1285 31 +0.013018 0.044902 0 1 0.140196 -0.845996 1278 28 +0.01081 0.076343 0 1 0.111523 -0.827536 2051 27 +0.011836 0.092442 0 1 0.101886 -0.845996 34839 27 +0.01081 0.129441 6 1 0.068607 -0.86908 2065 33 +0.011836 0.109872 6 1 0.06393 -0.859355 1983 28 +0.013018 0.092442 6 1 0.06393 -0.845996 2469 28 +0.01081 0.092442 0 1 0.123692 -0.845996 5103 28 +0.014264 0.092442 0 1 0.123692 -0.893946 1210 28 +0.013018 0.092442 0 1 0.073808 -0.86908 1581 27 +0.013018 0.109872 6 1 0.06393 -0.859355 2024 27 +0.017229 0.044902 0 1 0.086308 -0.549937 28653 27 +0.021055 0.044902 0 1 0.06393 -0.549937 2648 28 +0.014264 0.044902 0 1 0.093586 -0.549937 2461 28 +0.017229 0.061265 0 1 0.06393 -0.549937 2514 27 +0.01081 0.152582 6 1 0.06393 -0.859355 1444 27 +0.017229 0.061265 0 1 0.073808 -0.845996 7660 27 +0.017229 0.076343 0 1 0.068607 -0.86908 1491 29 +0.017229 0.061265 0 1 0.068607 -0.827536 2620 27 +0.017229 0.076343 0 1 0.06393 -0.549937 8336 27 +0.013018 0.061265 0 1 0.086308 -0.549937 3826 27 +0.014264 0.061265 0 1 0.068607 -0.549937 1110 27 +0.017229 0.061265 0 1 0.068607 -0.549937 2954 27 +0.02733 0.02677 0 1 0.123692 -0.827536 12879 27 +0.02733 0.02677 0 1 0.140196 -0.86908 1370 28 +0.02733 0.02677 1 1 0.101886 -0.845996 2489 27 +0.018999 0.044902 0 1 0.086308 -0.549937 20961 27 +0.021055 0.044902 0 1 0.073808 -0.86908 1409 28 +0.018999 0.044902 0 1 0.101886 -0.86908 1670 27 +0.021055 0.044902 0 1 0.068607 -0.827536 2947 27 +0.023678 0.044902 0 1 0.068607 -0.859355 2171 27 +0.023678 0.044902 0 1 0.068607 -0.845996 1053 27 +0.023678 0.044902 0 1 0.101886 -0.876618 6413 27 +0.023678 0.044902 0 1 0.123692 -0.88244 1318 28 +0.014264 0.109872 0 1 0.086308 -0.887208 3809 27 +0.01081 0.28403 0 1 0.167595 -0.896382 6171 27 +0.013018 0.109872 0 1 0.567647 -0.896382 1083 27 +0.021055 0.076343 0 1 0.093586 -0.86908 97622 27 +0.018999 0.076343 0 1 0.06393 -0.845996 1832 33 +0.017229 0.076343 0 1 0.101886 -0.890924 1240 31 +0.018999 0.076343 0 1 0.06393 -0.827536 1184 31 +0.02733 0.076343 0 1 0.06393 -0.890924 1083 30 +0.017229 0.076343 0 1 0.111523 -0.890924 1076 30 +0.021055 0.092442 0 1 0.06393 -0.887208 1073 30 +0.017229 0.076343 0 1 0.101886 -0.887208 1435 29 +0.018999 0.061265 0 1 0.101886 -0.88244 1727 29 +0.021055 0.061265 0 1 0.123692 -0.890924 3950 29 +0.023678 0.076343 0 1 0.06393 -0.876618 1374 28 +0.01568 0.076343 0 1 0.140196 -0.890924 1301 28 +0.02733 0.076343 0 1 0.086308 -0.89835 1881 28 +0.02733 0.076343 0 1 0.06393 -0.876618 1244 28 +0.018999 0.061265 0 1 0.167595 -0.890924 1793 28 +0.018999 0.092442 0 1 0.073808 -0.890924 1731 28 +0.018999 0.092442 0 1 0.093586 -0.896382 1384 28 +0.017229 0.076343 0 1 0.567647 -0.896382 1107 27 +0.02733 0.076343 0 1 0.093586 -0.89835 1093 27 +0.021055 0.061265 0 1 0.068607 -0.827536 6891 27 +0.01568 0.061265 0 1 0.167595 -0.88244 1545 27 +0.013018 0.076343 0 1 0.167595 -0.88244 1054 27 +0.017229 0.109872 0 1 0.07966 -0.893946 1543 27 +0.017229 0.109872 0 1 0.140196 -0.89835 1534 27 +0.018999 0.061265 0 1 0.073808 -0.859355 1003 27 +0.021055 0.109872 6 1 0.073808 -0.89835 1475 27 +0.033646 0.044902 0 1 0.068607 -0.890924 1421 27 +0.018999 0.076343 0 1 0.07966 -0.859355 17921 27 +0.013018 0.092442 0 1 0.073808 -0.859355 1900 30 +0.017229 0.061265 0 1 0.086308 -0.859355 2731 28 +0.013018 0.076343 6 1 0.073808 -0.827536 5001 27 +0.013018 0.076343 6 1 0.07966 -0.845996 1153 28 +0.013018 0.076343 6 1 0.07966 -0.549937 5274 27 +0.023678 0.044902 0 1 0.086308 -0.827536 24809 27 +0.02733 0.044902 0 1 0.06393 -0.827536 1094 27 +0.021055 0.061265 0 1 0.111523 -0.859355 41107 27 +0.021055 0.061265 0 1 0.123692 -0.88244 2219 27 +0.01568 0.044902 0 1 0.093586 -0.827536 1601 27 +0.023678 0.044902 0 1 0.101886 -0.86908 1553 27 +0.018999 0.061265 0 1 0.140196 -0.88244 1026 27 +0.023678 0.044902 0 1 0.093586 -0.827536 9351 27 +0.021055 0.044902 0 1 0.101886 -0.845996 3493 27 +0.014264 0.061265 0 1 0.111523 -0.827536 17133 27 +0.01568 0.061265 0 1 0.07966 -0.845996 1055 30 +0.02733 0.044902 0 1 0.073808 -0.845996 9100 27 +0.02733 0.044902 0 1 0.068607 -0.827536 1266 28 +0.033646 0.044902 0 1 0.07966 -0.893946 1487 27 +0.02733 0.044902 0 1 0.101886 -0.890924 2984 27 +0.02733 0.044902 0 1 0.07966 -0.859355 3353 27 +0.023678 0.076343 0 1 0.07966 -0.88244 12056 27 +0.02733 0.061265 0 1 0.07966 -0.893946 1598 29 +0.023678 0.092442 0 1 0.068607 -0.893946 1339 28 +0.02733 0.061265 0 1 0.093586 -0.893946 2601 28 +0.023678 0.061265 0 1 0.086308 -0.88244 1603 29 +0.033646 0.061265 0 1 0.068607 -0.890924 1749 28 +0.023678 0.092442 0 1 0.068607 -0.890924 1122 27 +0.023678 0.061265 0 1 0.068607 -0.86908 1454 27 +0.023678 0.061265 0 1 0.068607 -0.827536 4715 27 +0.033646 0.044902 0 1 0.06393 -0.827536 1848 27 +0.01568 0.092442 6 1 0.068607 -0.876618 2271 27 +0.017229 0.061265 0 1 0.093586 -0.845996 5425 27 +0.018999 0.061265 0 1 0.086308 -0.845996 3753 27 +0.021055 0.044902 0 1 0.101886 -0.827536 3607 27 +0.01081 0.152582 0 1 0.086308 -0.887208 2704 27 +0.033646 0.076343 0 1 0.07966 -0.896382 2699 27 +0.017229 0.02677 0 1 0.167595 -0.827536 2249 27 +0.021055 0.02677 6 1 0.140196 -0.859355 1044 27 +0.018999 0.02677 0 1 0.140196 -0.549937 1762 29 +0.021055 0.02677 6 1 0.567647 -0.86908 1379 27 +0.018999 0.061265 0 1 0.123692 -0.859355 8993 27 +0.014264 0.044902 0 1 0.123692 -0.827536 1229 31 +0.021055 0.044902 0 1 0.123692 -0.859355 1530 29 +0.014264 0.044902 0 1 0.167595 -0.845996 1307 28 +0.021055 0.044902 0 1 0.123692 -0.845996 4734 27 +0.023678 0.044902 0 1 0.111523 -0.845996 5332 27 +0.018999 0.044902 0 1 0.167595 -0.845996 6164 27 +0.018999 0.061265 0 1 0.140196 -0.86908 2441 27 +0.021055 0.061265 0 1 0.140196 -0.86908 5025 27 +0.023678 0.044902 0 1 0.140196 -0.876618 1325 28 +0.023678 0.061265 0 1 0.140196 -0.896382 1918 27 +0.023678 0.076343 6 1 0.101886 -0.89835 1208 28 +0.02733 0.044902 0 1 0.140196 -0.88244 8242 27 +0.02733 0.044902 0 1 0.093586 -0.876618 1332 28 +0.033646 0.044902 0 1 0.111523 -0.893946 2149 27 +1.14252 0.044902 0 1 0.101886 -0.896382 1857 27 +0.023678 0.061265 0 1 0.101886 -0.887208 2288 27 +0.02733 0.061265 0 1 0.093586 -0.890924 1589 27 +0.023678 0.061265 0 1 0.123692 -0.890924 1452 27 +0.023678 0.076343 0 1 0.093586 -0.887208 3777 27 +0.023678 0.076343 0 1 0.101886 -0.890924 3661 27 +0.021055 0.076343 0 1 0.101886 -0.86908 12693 27 +0.01568 0.076343 0 1 0.101886 -0.827536 50624 27 +0.017229 0.076343 0 1 0.086308 -0.859355 1126 31 +0.013018 0.076343 0 1 0.086308 -0.549937 1054 30 +0.01568 0.076343 0 1 0.068607 -0.549937 2636 28 +0.018999 0.076343 0 1 0.086308 -0.859355 1276 28 +0.013018 0.076343 0 1 0.111523 -0.845996 3312 27 +0.011836 0.092442 0 1 0.123692 -0.876618 2250 28 +0.018999 0.061265 0 1 0.086308 -0.827536 8615 27 +0.011836 0.092442 0 1 0.111523 -0.859355 1069 27 +0.014264 0.076343 0 1 0.111523 -0.859355 2104 27 +0.014264 0.076343 0 1 0.167595 -0.88244 1071 30 +0.017229 0.076343 0 1 0.068607 -0.549937 4045 27 +0.017229 0.076343 0 1 0.073808 -0.845996 1239 28 +0.013018 0.092442 0 1 0.086308 -0.859355 4517 27 +0.017229 0.076343 0 1 0.111523 -0.859355 7990 27 +0.018999 0.076343 0 1 0.567647 -0.887208 9685 27 +0.023678 0.076343 0 1 0.111523 -0.896382 1204 31 +0.018999 0.092442 0 1 0.140196 -0.896382 3408 27 +0.02733 0.076343 0 1 0.111523 -0.896382 3344 27 +0.02733 0.061265 0 1 0.140196 -0.893946 2903 28 +0.02733 0.061265 0 1 0.123692 -0.890924 1413 28 +0.021055 0.061265 0 1 0.111523 -0.827536 34606 27 +0.023678 0.061265 0 1 0.073808 -0.845996 3966 27 +0.013018 0.152582 6 1 0.101886 -0.893946 14364 27 +0.011836 0.180841 6 1 0.07966 -0.896382 1038 30 +0.011836 0.152582 6 1 0.086308 -0.890924 1661 29 +0.011836 0.180841 6 1 0.111523 -0.89835 1418 29 +0.013018 0.180841 6 1 0.06393 -0.890924 1256 28 +0.011836 0.129441 0 1 0.101886 -0.887208 2886 28 +0.01081 0.129441 0 1 0.111523 -0.887208 1395 28 +0.01081 0.152582 0 1 0.140196 -0.893946 1332 28 +0.01081 0.129441 0 1 0.567647 -0.890924 1217 28 +0.01081 0.129441 0 1 0.567647 -0.887208 1190 28 +0.011836 0.152582 0 1 0.093586 -0.887208 3797 27 +0.011836 0.219974 6 1 0.111523 -0.89835 1495 27 +0.011836 0.219974 6 1 0.093586 -0.896382 1530 27 +0.014264 0.219974 6 1 0.07966 -0.89835 2430 27 +0.014264 0.180841 6 1 0.093586 -0.89835 2031 27 +0.014264 0.152582 6 1 0.073808 -0.890924 2918 27 +0.01568 0.180841 6 1 0.06393 -0.893946 1084 27 +0.014264 0.152582 6 1 0.086308 -0.893946 2323 27 +0.01568 0.152582 0 1 0.07966 -0.896382 1425 27 +0.011836 0.152582 6 1 0.07966 -0.88244 2760 27 +0.01081 0.152582 6 1 0.093586 -0.88244 1291 28 +0.01568 0.152582 6 1 0.101886 -0.89835 1831 27 +0.017229 0.152582 0 1 0.101886 -0.89835 4202 27 +0.017229 0.152582 6 1 0.073808 -0.896382 1478 29 +0.023678 0.129441 0 1 0.06393 -0.893946 1665 27 +0.018999 0.129441 0 1 0.068607 -0.893946 1584 27 +0.021055 0.152582 0 1 0.068607 -0.896382 1908 27 +0.014264 0.092442 0 1 0.101886 -0.827536 78084 27 +0.01081 0.092442 0 1 0.07966 -0.549937 3058 32 +0.01081 0.092442 0 1 0.123692 -0.827536 1931 30 +0.011836 0.092442 0 1 0.068607 -0.549937 1831 28 +0.01568 0.092442 0 1 0.068607 -0.827536 8429 27 +0.013018 0.092442 6 1 0.06393 -0.549937 1092 27 +0.01568 0.092442 6 1 0.073808 -0.859355 4340 27 +0.017229 0.044902 6 1 0.07966 -0.549937 1178 28 +0.018999 0.061265 6 1 0.07966 -0.845996 1196 28 +0.02733 0.044902 6 1 0.068607 -0.827536 1246 28 +0.02733 0.044902 6 1 0.111523 -0.890924 1105 27 +0.021055 0.044902 6 1 0.101886 -0.859355 2295 28 +0.01568 0.044902 6 1 0.167595 -0.86908 1277 28 +0.01081 0.092442 6 1 0.123692 -0.845996 1225 28 +0.018999 0.061265 6 1 0.101886 -0.876618 1168 28 +0.013018 0.061265 6 1 0.123692 -0.845996 1813 28 +0.02733 0.044902 1 1 0.086308 -0.86908 1658 27 +0.01081 0.109872 6 1 0.123692 -0.88244 1091 27 +0.017229 0.092442 6 1 0.06393 -0.549937 9528 27 +0.017229 0.092442 6 1 0.068607 -0.876618 1199 28 +0.021055 0.092442 0 1 0.06393 -0.876618 2071 27 +0.023678 0.092442 6 1 0.06393 -0.88244 1178 28 +0.021055 0.061265 6 1 0.07966 -0.827536 1331 28 +0.021055 0.061265 6 1 0.111523 -0.876618 1721 28 +0.02733 0.061265 6 1 0.111523 -0.890924 1198 31 +0.01568 0.092442 0 1 0.086308 -0.859355 9739 27 +0.018999 0.092442 0 1 0.07966 -0.890924 1336 28 +0.017229 0.092442 0 1 0.093586 -0.893946 1137 28 +0.017229 0.092442 0 1 0.086308 -0.876618 6885 27 +0.018999 0.092442 6 1 0.073808 -0.876618 3986 28 +0.017229 0.092442 6 1 0.073808 -0.859355 4112 27 +0.017229 0.092442 6 1 0.068607 -0.845996 1377 28 +0.018999 0.092442 0 1 0.086308 -0.890924 1013 27 +0.018999 0.092442 0 1 0.111523 -0.893946 2867 28 +0.01568 0.109872 0 1 0.101886 -0.893946 2090 27 +0.01568 0.109872 0 1 0.086308 -0.890924 1020 27 +0.018999 0.092442 0 1 0.123692 -0.893946 1013 27 +0.01568 0.109872 0 1 0.123692 -0.893946 2922 27 +0.014264 0.092442 0 1 0.123692 -0.88244 3893 27 +0.014264 0.092442 0 1 0.111523 -0.859355 3870 27 +0.014264 0.092442 6 1 0.111523 -0.876618 1563 27 +0.018999 0.076343 6 1 0.101886 -0.876618 1129 28 +0.02733 0.076343 6 1 0.07966 -0.893946 1174 28 +0.01568 0.076343 6 1 0.101886 -0.859355 1049 27 +0.014264 0.076343 6 1 0.167595 -0.887208 1016 27 +0.013018 0.092442 6 1 0.140196 -0.887208 1080 27 +0.017229 0.109872 6 1 0.07966 -0.88244 12773 27 +0.01568 0.109872 6 1 0.06393 -0.876618 1125 28 +0.01568 0.129441 6 1 0.06393 -0.88244 1603 27 +0.017229 0.129441 6 1 0.073808 -0.890924 1496 27 +0.01081 0.076343 6 1 0.123692 -0.549937 2877 27 +0.017229 0.109872 6 1 0.068607 -0.876618 3314 27 +0.013018 0.109872 0 1 0.111523 -0.887208 2820 27 +0.023678 0.076343 6 1 0.086308 -0.88244 1392 27 +0.01081 0.152582 6 1 0.111523 -0.887208 1853 27 +0.017229 0.092442 6 1 0.101886 -0.88244 7832 27 +0.01568 0.092442 6 1 0.101886 -0.876618 1681 32 +0.01568 0.109872 6 1 0.093586 -0.887208 3250 28 +0.01568 0.092442 6 1 0.093586 -0.86908 1240 28 +0.014264 0.109872 0 1 0.111523 -0.887208 1940 27 +0.01568 0.129441 6 1 0.06393 -0.859355 10592 27 +0.017229 0.109872 6 1 0.07966 -0.876618 8224 27 +0.011836 0.109872 6 1 0.086308 -0.876618 1248 28 +0.01081 0.109872 6 1 0.101886 -0.876618 1046 30 +0.01081 0.152582 6 1 0.07966 -0.876618 1535 27 +0.011836 0.129441 6 1 0.093586 -0.859355 38622 27 +0.01081 0.109872 6 1 0.101886 -0.859355 1409 28 +0.013018 0.109872 6 1 0.068607 -0.859355 1795 28 +0.014264 0.109872 6 1 0.068607 -0.859355 1758 28 +0.014264 0.109872 6 1 0.073808 -0.86908 1724 28 +0.01081 0.152582 6 1 0.068607 -0.859355 1126 28 +0.013018 0.129441 1 1 0.07966 -0.876618 2781 27 +0.013018 0.129441 6 1 0.068607 -0.859355 1795 28 +0.014264 0.129441 6 1 0.068607 -0.86908 2299 28 +0.011836 0.109872 6 1 0.068607 -0.845996 3612 27 +0.01081 0.109872 0 1 0.086308 -0.845996 2909 28 +0.01081 0.109872 0 1 0.086308 -0.549937 10899 27 +0.011836 0.109872 6 1 0.06393 -0.549937 2052 27 +0.013018 0.109872 6 1 0.06393 -0.845996 1004 27 +0.014264 0.129441 6 1 0.068607 -0.859355 1003 27 +0.014264 0.109872 6 1 0.068607 -0.845996 3464 27 +0.01081 0.109872 6 1 0.140196 -0.859355 5554 27 +0.013018 0.092442 0 1 0.167595 -0.88244 1092 30 +0.01081 0.109872 0 1 0.123692 -0.549937 13126 27 +0.01081 0.109872 0 1 0.140196 -0.827536 2498 28 +0.01081 0.092442 0 1 0.167595 -0.845996 1119 27 +0.018999 0.061265 0 1 0.167595 -0.86908 2369 27 +0.013018 0.061265 0 1 0.567647 -0.845996 1637 27 +0.011836 0.109872 0 1 0.068607 -0.549937 2299 27 +0.01081 0.109872 6 1 0.123692 -0.549937 1371 27 +0.011836 0.129441 0 1 0.111523 -0.887208 1365 27 +0.013018 0.152582 6 1 0.111523 -0.896382 1416 27 +0.018999 0.109872 0 1 0.073808 -0.88244 4963 27 +0.018999 0.152582 6 1 0.06393 -0.890924 1649 27 +0.018999 0.129441 6 1 0.06393 -0.88244 1693 28 +0.021055 0.109872 0 1 0.068607 -0.890924 1054 27 +0.018999 0.152582 0 1 0.073808 -0.890924 6310 27 +0.021055 0.129441 0 1 0.068607 -0.890924 1038 27 +0.01568 0.092442 0 1 0.123692 -0.88244 3129 27 +0.018999 0.129441 6 1 0.06393 -0.876618 1784 26 +0.017229 0.129441 0 1 0.123692 -0.89835 929 30 +0.017229 0.129441 6 1 0.06393 -0.86908 1483 27 +0.01081 0.076343 6 1 0.167595 -0.827536 981 27 +0.018999 0.092442 0 1 0.140196 -0.893946 949 27 +0.018999 0.061265 6 1 0.123692 -0.876618 947 27 +0.011836 0.109872 0 1 0.111523 -0.88244 942 27 +0.011836 0.129441 6 1 0.567647 -0.896382 906 27 +0.011836 0.129441 0 1 0.123692 -0.887208 1344 28 +0.014264 0.109872 6 1 0.123692 -0.890924 1011 27 +0.013018 0.129441 0 1 0.123692 -0.893946 990 27 +0.013018 0.152582 6 1 0.111523 -0.893946 976 27 +0.011836 0.152582 0 1 0.111523 -0.887208 2280 27 +0.01568 0.180841 6 1 0.086308 -0.89835 906 27 +0.033646 0.044902 0 1 0.093586 -0.890924 1338 26 +0.011836 0.152582 6 1 0.093586 -0.86908 15162 26 +0.011836 0.152582 6 1 0.068607 -0.859355 1416 32 +0.01081 0.152582 6 1 0.07966 -0.859355 1522 29 +0.013018 0.152582 6 1 0.068607 -0.859355 5245 27 +0.01568 0.152582 0 1 0.068607 -0.887208 1835 28 +0.013018 0.152582 1 1 0.073808 -0.876618 1676 27 +0.017229 0.129441 6 1 0.068607 -0.88244 1645 27 +0.013018 0.152582 6 1 0.086308 -0.887208 2157 27 +0.013018 0.152582 1 1 0.086308 -0.876618 6369 27 +0.013018 0.109872 0 1 0.101886 -0.88244 1173 31 +0.014264 0.109872 6 1 0.086308 -0.876618 1616 27 +0.01568 0.109872 6 1 0.093586 -0.88244 2551 27 +0.01568 0.109872 6 1 0.086308 -0.876618 957 27 +0.014264 0.109872 6 1 0.093586 -0.859355 17946 27 +0.013018 0.129441 1 1 0.086308 -0.86908 3047 28 +0.01568 0.109872 6 1 0.07966 -0.859355 6733 27 +0.017229 0.109872 6 1 0.073808 -0.859355 5179 28 +0.018999 0.152582 6 1 0.06393 -0.876618 4482 27 +0.018999 0.152582 0 1 0.068607 -0.887208 1292 28 +0.014264 0.152582 6 1 0.06393 -0.859355 1244 28 +0.02733 0.092442 6 1 0.068607 -0.896382 886 26 +0.02733 0.109872 6 1 0.06393 -0.893946 897 30 +0.018999 0.092442 6 1 0.101886 -0.890924 1328 26 +0.018999 0.076343 0 1 0.06393 -0.549937 3090 26 +0.021055 0.076343 0 1 0.068607 -0.827536 9220 26 +0.018999 0.076343 0 1 0.073808 -0.845996 1304 26 +0.033646 0.076343 0 1 0.086308 -0.896382 869 26 +0.033646 0.044902 0 1 0.073808 -0.86908 6510 26 +0.033646 0.02677 0 1 0.07966 -0.86908 1337 28 +0.033646 0.02677 0 1 0.093586 -0.876618 2240 29 +0.033646 0.02677 0 1 0.111523 -0.876618 2910 27 +0.017229 0.061265 0 1 0.567647 -0.859355 3035 26 +0.018999 0.044902 0 1 0.567647 -0.845996 959 27 +0.01568 0.044902 0 1 0.093586 -0.549937 867 26 +0.014264 0.076343 0 1 0.167595 -0.827536 21210 26 +0.013018 0.092442 0 1 0.167595 -0.876618 1111 30 +0.014264 0.076343 6 1 0.167595 -0.876618 851 29 +0.01568 0.076343 0 1 0.111523 -0.827536 2024 27 +0.01568 0.061265 0 1 0.140196 -0.845996 974 27 +0.017229 0.076343 0 1 0.123692 -0.876618 1453 27 +0.01568 0.076343 0 1 0.167595 -0.876618 944 27 +0.017229 0.129441 6 1 0.068607 -0.86908 3026 26 +0.018999 0.076343 0 1 0.086308 -0.845996 5609 26 +0.02733 0.076343 6 1 0.101886 -0.890924 4746 26 +0.033646 0.076343 0 1 0.068607 -0.890924 942 27 +0.02733 0.076343 0 1 0.093586 -0.88244 13376 26 +0.023678 0.076343 6 1 0.086308 -0.86908 12411 26 +0.023678 0.061265 0 1 0.093586 -0.876618 868 29 +0.02733 0.044902 0 1 0.093586 -0.86908 854 26 +0.017229 0.061265 0 1 0.073808 -0.549937 4256 26 +0.014264 0.076343 0 1 0.140196 -0.549937 25334 26 +0.01568 0.044902 6 1 0.101886 -0.549937 1894 28 +0.021055 0.076343 0 1 0.06393 -0.549937 3396 26 +0.014264 0.129441 6 1 0.123692 -0.890924 8480 26 +0.01568 0.129441 6 1 0.111523 -0.896382 1164 28 +0.014264 0.152582 6 1 0.086308 -0.890924 1033 27 +0.014264 0.129441 6 1 0.140196 -0.896382 1008 27 +0.018999 0.129441 0 1 0.07966 -0.890924 5586 27 +0.01568 0.129441 0 1 0.07966 -0.86908 11964 27 +0.014264 0.129441 1 1 0.073808 -0.859355 2199 29 +0.017229 0.152582 0 1 0.07966 -0.890924 2293 27 +0.014264 0.152582 6 1 0.111523 -0.896382 1828 27 +0.014264 0.129441 1 1 0.086308 -0.86908 3623 27 +0.021055 0.109872 0 1 0.07966 -0.896382 1771 26 +0.021055 0.092442 6 1 0.086308 -0.890924 3557 26 +0.021055 0.109872 0 1 0.073808 -0.890924 855 29 +0.021055 0.092442 6 1 0.111523 -0.89835 1229 28 +0.021055 0.092442 6 1 0.073808 -0.887208 1002 27 +0.018999 0.129441 0 1 0.111523 -0.896382 9850 26 +0.018999 0.129441 0 1 0.123692 -0.89835 915 30 +0.021055 0.109872 0 1 0.086308 -0.896382 835 29 +0.021055 0.109872 0 1 0.101886 -0.89835 937 27 +0.033646 0.061265 0 1 0.111523 -0.896382 1692 26 +0.01081 0.092442 0 1 0.167595 -0.549937 840 26 +0.018999 0.076343 0 1 0.093586 -0.827536 16774 26 +0.017229 0.076343 0 1 0.073808 -0.549937 3308 27 +0.017229 0.076343 0 1 0.101886 -0.827536 2796 27 +0.018999 0.076343 6 1 0.101886 -0.859355 2293 27 +0.023678 0.044902 0 1 0.140196 -0.859355 3352 26 +0.023678 0.044902 0 1 0.123692 -0.845996 995 27 +0.023678 0.061265 0 1 0.123692 -0.86908 9384 26 +0.02733 0.061265 0 1 0.123692 -0.887208 1736 26 +0.011836 0.129441 0 1 0.123692 -0.549937 126890 26 +0.01081 0.129441 0 1 0.567647 -0.876618 1334 31 +0.013018 0.092442 0 1 0.140196 -0.86908 1027 30 +0.01081 0.152582 6 1 0.06393 -0.827536 1447 29 +0.011836 0.129441 6 1 0.093586 -0.549937 1682 27 +0.011836 0.076343 6 1 0.123692 -0.549937 1092 27 +0.01081 0.152582 1 1 0.101886 -0.876618 1413 27 +0.013018 0.152582 6 1 0.06393 -0.845996 2651 26 +0.013018 0.129441 6 1 0.068607 -0.845996 1180 28 +0.01081 0.152582 1 1 0.123692 -0.86908 6365 26 +0.01081 0.152582 0 1 0.567647 -0.876618 2335 27 +0.013018 0.092442 0 1 0.111523 -0.549937 10582 26 +0.014264 0.092442 0 1 0.068607 -0.549937 1309 26 +0.013018 0.092442 0 1 0.123692 -0.827536 2119 26 +0.013018 0.109872 0 1 0.093586 -0.549937 24548 26 +0.013018 0.152582 6 1 0.06393 -0.827536 3279 27 +0.01568 0.109872 6 1 0.07966 -0.827536 28257 26 +0.01568 0.092442 0 1 0.086308 -0.845996 1479 29 +0.014264 0.109872 6 1 0.06393 -0.549937 1191 28 +0.014264 0.109872 0 1 0.086308 -0.845996 1592 27 +0.014264 0.129441 6 1 0.06393 -0.827536 2302 27 +0.014264 0.152582 6 1 0.06393 -0.845996 891 26 +0.014264 0.109872 0 1 0.093586 -0.827536 5712 26 +0.01568 0.109872 0 1 0.093586 -0.845996 13376 26 +0.01568 0.092442 0 1 0.111523 -0.859355 5038 26 +0.01568 0.092442 0 1 0.101886 -0.845996 1528 27 +0.01081 0.152582 6 1 0.073808 -0.827536 3738 26 +0.011836 0.152582 6 1 0.068607 -0.845996 915 30 +0.013018 0.152582 6 1 0.068607 -0.845996 1071 27 +0.01081 0.152582 0 1 0.123692 -0.827536 23247 26 +0.011836 0.152582 0 1 0.093586 -0.845996 10544 27 +0.011836 0.152582 0 1 0.101886 -0.859355 4543 27 +0.013018 0.152582 0 1 0.101886 -0.88244 7337 26 +0.014264 0.129441 0 1 0.093586 -0.88244 1610 27 +0.014264 0.129441 6 1 0.101886 -0.887208 856 29 +0.011836 0.152582 1 1 0.111523 -0.88244 1015 27 +0.014264 0.129441 6 1 0.111523 -0.887208 1364 27 +0.01081 0.180841 6 1 0.07966 -0.827536 14962 26 +0.01081 0.180841 6 1 0.06393 -0.549937 1066 27 +0.011836 0.180841 6 1 0.068607 -0.88244 1382 27 +0.011836 0.180841 6 1 0.07966 -0.88244 2607 26 +0.014264 0.180841 6 1 0.073808 -0.893946 1541 27 +0.013018 0.180841 6 1 0.093586 -0.896382 956 30 +0.013018 0.180841 6 1 0.068607 -0.88244 1333 26 +0.014264 0.219974 6 1 0.07966 -0.896382 1324 26 +0.011836 0.129441 1 1 0.111523 -0.549937 2117 26 +0.01081 0.152582 1 1 0.123692 -0.827536 946 27 +0.014264 0.219974 6 1 0.068607 -0.893946 830 26 +0.011836 0.219974 6 1 0.068607 -0.887208 920 27 +0.021055 0.076343 0 1 0.111523 -0.859355 15291 26 +0.018999 0.076343 0 1 0.123692 -0.876618 1283 28 +0.021055 0.076343 6 1 0.101886 -0.859355 1046 27 +0.02733 0.076343 0 1 0.123692 -0.88244 20120 26 +0.023678 0.076343 0 1 0.140196 -0.893946 1620 32 +0.021055 0.076343 0 1 0.140196 -0.887208 835 29 +0.02733 0.076343 0 1 0.140196 -0.893946 1123 27 +0.023678 0.076343 0 1 0.123692 -0.876618 4883 26 +0.017229 0.061265 1 1 0.101886 -0.827536 1239 26 +0.01568 0.092442 6 1 0.101886 -0.845996 998 27 +0.02733 0.061265 0 1 0.093586 -0.86908 8652 26 +0.02733 0.061265 0 1 0.101886 -0.876618 1585 27 +0.02733 0.076343 0 1 0.093586 -0.876618 4176 26 +0.017229 0.109872 0 1 0.123692 -0.893946 2873 26 +0.018999 0.109872 0 1 0.101886 -0.893946 1687 27 +0.017229 0.109872 6 1 0.086308 -0.887208 1364 27 +0.017229 0.109872 6 1 0.086308 -0.845996 25376 26 +0.017229 0.129441 0 1 0.07966 -0.86908 6758 26 +0.018999 0.152582 0 1 0.073808 -0.887208 2591 26 +1.14252 0.02677 0 1 0.06393 -0.845996 2869 26 +1.14252 0.02677 0 1 0.068607 -0.876618 1284 28 +1.14252 0.044902 0 1 0.06393 -0.876618 911 27 +1.14252 0.044902 0 1 0.111523 -0.896382 819 26 +0.018999 0.044902 0 1 0.101886 -0.549937 4504 26 +0.02733 0.044902 0 1 0.07966 -0.845996 1227 26 +0.013018 0.109872 6 1 0.111523 -0.876618 2041 26 +0.013018 0.152582 0 1 0.111523 -0.88244 3094 26 +0.014264 0.152582 0 1 0.111523 -0.887208 7757 26 +0.017229 0.152582 0 1 0.07966 -0.887208 1288 26 +0.017229 0.152582 6 1 0.06393 -0.86908 1221 26 +0.02733 0.02677 1 1 0.140196 -0.876618 814 26 +0.021055 0.061265 0 1 0.123692 -0.845996 3650 26 +0.018999 0.061265 0 1 0.140196 -0.845996 1801 27 +0.013018 0.109872 0 1 0.111523 -0.827536 10107 26 +0.018999 0.129441 0 1 0.167595 -0.887208 105073 26 +0.013018 0.109872 0 1 0.167595 -0.88244 1313 31 +0.017229 0.109872 0 1 0.567647 -0.893946 971 30 +0.01568 0.109872 0 1 0.567647 -0.887208 805 29 +0.021055 0.092442 6 1 0.086308 -0.887208 1291 28 +0.017229 0.129441 0 1 0.567647 -0.893946 994 27 +0.021055 0.109872 0 1 0.140196 -0.89835 1967 27 +0.01568 0.129441 6 1 0.140196 -0.890924 1945 27 +0.017229 0.092442 6 1 0.111523 -0.88244 1146 28 +0.018999 0.076343 6 1 0.123692 -0.876618 987 27 +0.013018 0.152582 0 1 0.140196 -0.890924 5094 27 +0.014264 0.152582 6 1 0.123692 -0.896382 913 30 +0.013018 0.152582 0 1 0.123692 -0.88244 3410 27 +0.013018 0.129441 0 1 0.167595 -0.88244 1169 28 +0.013018 0.109872 0 1 0.123692 -0.845996 3123 26 +0.017229 0.152582 0 1 0.101886 -0.887208 18643 26 +0.018999 0.152582 0 1 0.093586 -0.893946 4805 27 +0.01568 0.152582 0 1 0.111523 -0.887208 4058 27 +0.023678 0.076343 6 1 0.123692 -0.887208 2173 26 +0.017229 0.152582 0 1 0.111523 -0.896382 1303 26 +0.018999 0.109872 0 1 0.567647 -0.887208 1733 26 +0.014264 0.092442 0 1 0.140196 -0.86908 2142 26 +0.014264 0.129441 0 1 0.140196 -0.88244 5513 26 +0.014264 0.109872 0 1 0.123692 -0.86908 5192 27 +0.014264 0.109872 0 1 0.140196 -0.86908 2583 26 +0.013018 0.109872 0 1 0.167595 -0.86908 1291 26 +0.018999 0.152582 0 1 0.07966 -0.887208 1253 26 +0.018999 0.152582 0 1 0.093586 -0.887208 4154 26 +0.021055 0.129441 0 1 0.111523 -0.89835 2864 26 +0.021055 0.152582 6 1 0.086308 -0.89835 1222 28 +0.021055 0.129441 0 1 0.073808 -0.890924 1171 28 +0.021055 0.129441 0 1 0.086308 -0.896382 910 27 +0.021055 0.129441 0 1 0.07966 -0.893946 933 27 +0.021055 0.109872 0 1 0.086308 -0.890924 1753 26 +0.021055 0.129441 0 1 0.140196 -0.89835 1225 26 +0.017229 0.109872 0 1 0.093586 -0.845996 12996 26 +0.017229 0.129441 0 1 0.093586 -0.88244 4217 27 +0.017229 0.129441 0 1 0.111523 -0.859355 112793 26 +0.01568 0.109872 1 1 0.111523 -0.86908 1066 30 +0.01568 0.109872 1 1 0.101886 -0.845996 4103 28 +0.013018 0.129441 0 1 0.123692 -0.86908 1709 28 +0.017229 0.109872 0 1 0.101886 -0.845996 4058 27 +0.017229 0.129441 6 1 0.06393 -0.845996 2000 27 +0.01568 0.129441 0 1 0.140196 -0.876618 10736 27 +0.017229 0.109872 0 1 0.123692 -0.88244 1508 29 +0.01568 0.109872 0 1 0.140196 -0.86908 4067 27 +0.017229 0.076343 0 1 0.123692 -0.859355 2121 27 +0.01568 0.076343 0 1 0.167595 -0.859355 1015 27 +0.01568 0.076343 0 1 0.140196 -0.845996 1326 26 +0.01568 0.152582 6 1 0.06393 -0.845996 1708 26 +0.01568 0.076343 1 1 0.111523 -0.827536 1677 26 +0.018999 0.076343 6 1 0.111523 -0.859355 855 29 +0.014264 0.076343 6 1 0.123692 -0.827536 1006 27 +0.014264 0.129441 0 1 0.101886 -0.827536 44734 26 +0.014264 0.109872 0 1 0.101886 -0.549937 19057 26 +0.017229 0.129441 0 1 0.07966 -0.845996 9043 26 +0.01568 0.129441 1 1 0.073808 -0.827536 4817 26 +0.018999 0.076343 0 1 0.123692 -0.845996 8106 26 +0.021055 0.076343 0 1 0.123692 -0.86908 1073 27 +0.017229 0.076343 0 1 0.111523 -0.827536 1334 26 +0.021055 0.076343 0 1 0.123692 -0.859355 1221 26 +0.013018 0.219974 6 1 0.123692 -0.896382 10119 26 +0.014264 0.219974 0 1 0.101886 -0.89835 1548 27 +0.014264 0.219974 0 1 0.111523 -0.89835 1025 27 +0.014264 0.180841 6 1 0.111523 -0.896382 1957 27 +0.018999 0.109872 0 1 0.073808 -0.845996 21348 26 +0.021055 0.092442 6 1 0.068607 -0.859355 5074 27 +0.023678 0.092442 0 1 0.068607 -0.88244 1053 27 +0.021055 0.092442 0 1 0.06393 -0.845996 1047 27 +0.021055 0.092442 6 1 0.073808 -0.876618 1529 27 +0.021055 0.092442 0 1 0.068607 -0.845996 1267 26 +0.018999 0.092442 0 1 0.093586 -0.845996 19093 26 +0.018999 0.109872 0 1 0.07966 -0.88244 860 29 +0.021055 0.092442 0 1 0.07966 -0.86908 3921 26 +0.018999 0.092442 6 1 0.111523 -0.86908 7903 26 +0.018999 0.092442 0 1 0.101886 -0.845996 3710 27 +0.018999 0.129441 0 1 0.06393 -0.859355 1618 26 +0.01568 0.129441 0 1 0.101886 -0.845996 6838 26 +1.14252 0.02677 1 1 0.123692 -0.896382 1198 26 +0.033646 0.02677 1 1 0.093586 -0.876618 998 27 +0.02733 0.02677 0 1 0.073808 -0.549937 5176 26 +0.02733 0.076343 0 1 0.093586 -0.86908 7156 26 +0.023678 0.076343 0 1 0.101886 -0.86908 1291 26 +0.023678 0.076343 0 1 0.111523 -0.86908 1273 26 +0.021055 0.092442 0 1 0.101886 -0.859355 23437 26 +0.021055 0.092442 6 1 0.101886 -0.86908 837 26 +0.021055 0.129441 0 1 0.140196 -0.893946 17231 26 +0.021055 0.109872 0 1 0.101886 -0.890924 1629 27 +0.021055 0.129441 6 1 0.086308 -0.890924 1920 27 +0.021055 0.092442 0 1 0.123692 -0.887208 2831 27 +0.018999 0.109872 6 1 0.111523 -0.887208 845 26 +0.017229 0.109872 6 1 0.140196 -0.890924 892 26 +0.018999 0.129441 6 1 0.140196 -0.896382 1202 28 +0.021055 0.109872 6 1 0.140196 -0.896382 839 29 +0.02733 0.076343 6 1 0.140196 -0.896382 1123 27 +0.021055 0.092442 0 1 0.123692 -0.88244 2786 26 +0.021055 0.092442 0 1 0.111523 -0.876618 1256 26 +0.013018 0.02677 6 2 0.068607 -0.876618 1190 26 +0.02733 0.044902 0 1 0.101886 -0.859355 3922 26 +0.02733 0.044902 0 1 0.086308 -0.845996 1313 26 +0.02733 0.076343 0 1 0.101886 -0.876618 1171 26 +0.017229 0.180841 0 1 0.111523 -0.89835 4676 26 +0.014264 0.180841 6 1 0.123692 -0.896382 1168 26 +0.02733 0.061265 0 1 0.111523 -0.876618 1556 26 +0.01081 0.180841 0 1 0.123692 -0.827536 41482 26 +0.01081 0.180841 1 1 0.123692 -0.845996 878 29 +0.01081 0.180841 0 1 0.167595 -0.890924 947 27 +0.011836 0.180841 0 1 0.086308 -0.859355 11829 26 +0.013018 0.180841 6 1 0.06393 -0.86908 820 29 +0.011836 0.180841 6 1 0.111523 -0.887208 5134 27 +0.011836 0.219974 6 1 0.093586 -0.893946 1837 27 +0.011836 0.180841 6 1 0.093586 -0.876618 1789 27 +0.01081 0.219974 0 1 0.101886 -0.887208 3471 26 +0.011836 0.219974 0 1 0.086308 -0.887208 1769 28 +0.011836 0.28403 6 1 0.068607 -0.859355 6423 26 +0.011836 0.219974 6 1 0.073808 -0.876618 1084 30 +0.01081 0.219974 0 1 0.07966 -0.86908 1475 27 +0.01081 0.219974 0 1 0.07966 -0.859355 976 27 +0.01081 0.28403 6 1 0.073808 -0.859355 831 29 +0.011836 0.180841 0 1 0.167595 -0.893946 2078 26 +0.011836 0.180841 0 1 0.093586 -0.845996 9577 26 +0.011836 0.180841 6 1 0.073808 -0.827536 5786 26 +0.013018 0.152582 6 1 0.068607 -0.827536 1337 26 +0.013018 0.180841 6 1 0.068607 -0.827536 5868 26 +0.01081 0.219974 0 1 0.111523 -0.887208 1560 26 +0.023678 0.109872 6 1 0.068607 -0.890924 1548 26 +0.02733 0.061265 0 1 0.068607 -0.827536 4639 26 +0.017229 0.129441 1 1 0.073808 -0.827536 12747 26 +0.017229 0.092442 0 1 0.068607 -0.549937 3358 26 +0.017229 0.109872 0 1 0.07966 -0.827536 3923 26 +0.013018 0.129441 0 1 0.123692 -0.859355 1156 26 +0.021055 0.092442 0 1 0.111523 -0.86908 1540 26 +0.013018 0.180841 0 1 0.123692 -0.88244 21944 26 +0.014264 0.180841 6 1 0.111523 -0.893946 2761 27 +0.014264 0.180841 0 1 0.123692 -0.893946 1345 27 +0.014264 0.180841 6 1 0.101886 -0.890924 3338 26 +0.01568 0.180841 0 1 0.068607 -0.890924 838 29 +0.01568 0.180841 0 1 0.093586 -0.890924 5736 26 +0.017229 0.180841 6 1 0.093586 -0.896382 2064 26 +0.013018 0.180841 0 1 0.140196 -0.893946 1215 26 +0.01568 0.180841 6 1 0.06393 -0.86908 2813 26 +0.014264 0.28403 6 1 0.06393 -0.887208 960 27 +0.014264 0.219974 6 1 0.06393 -0.876618 934 27 +0.014264 0.180841 6 1 0.567647 -0.89835 2771 26 +0.01568 0.109872 6 1 0.167595 -0.890924 939 27 +0.013018 0.180841 0 1 0.167595 -0.893946 922 27 +0.014264 0.180841 0 1 0.167595 -0.896382 1398 27 +0.014264 0.219974 0 1 0.140196 -0.89835 2047 26 +0.013018 0.219974 0 1 0.068607 -0.86908 1541 26 +0.014264 0.152582 0 1 0.123692 -0.876618 23457 26 +0.01568 0.152582 0 1 0.068607 -0.876618 1079 27 +0.014264 0.219974 6 1 0.068607 -0.88244 1389 27 +0.014264 0.152582 6 1 0.068607 -0.827536 5183 26 +0.01568 0.152582 0 1 0.086308 -0.88244 2567 26 +0.011836 0.152582 1 1 0.111523 -0.859355 2948 26 +0.013018 0.152582 0 1 0.111523 -0.86908 7439 26 +0.013018 0.152582 1 1 0.073808 -0.859355 1044 27 +0.013018 0.152582 1 1 0.07966 -0.845996 4193 26 +0.013018 0.180841 1 1 0.073808 -0.86908 1221 26 +0.013018 0.180841 1 1 0.073808 -0.859355 810 26 +0.014264 0.152582 1 1 0.07966 -0.859355 4351 26 +0.014264 0.152582 1 1 0.073808 -0.845996 1300 26 +0.014264 0.152582 0 1 0.111523 -0.86908 6508 26 +0.013018 0.180841 0 1 0.101886 -0.86908 11525 26 +0.011836 0.180841 0 1 0.111523 -0.876618 1081 27 +0.013018 0.180841 0 1 0.093586 -0.845996 18190 26 +0.013018 0.152582 0 1 0.111523 -0.859355 3659 26 +0.01568 0.152582 0 1 0.093586 -0.845996 38522 26 +0.014264 0.152582 0 1 0.101886 -0.859355 2091 28 +0.01568 0.152582 0 1 0.093586 -0.827536 52916 26 +0.01568 0.092442 0 1 0.101886 -0.827536 1775 28 +0.011836 0.180841 6 1 0.07966 -0.827536 1653 27 +0.011836 0.152582 0 1 0.101886 -0.827536 4347 26 +0.017229 0.092442 0 1 0.101886 -0.827536 5911 26 +0.017229 0.109872 0 1 0.086308 -0.827536 2324 28 +0.018999 0.092442 0 1 0.093586 -0.827536 10663 26 +0.018999 0.092442 0 1 0.06393 -0.549937 1736 28 +0.018999 0.109872 0 1 0.068607 -0.827536 2799 27 +0.021055 0.092442 0 1 0.068607 -0.827536 2834 26 +0.021055 0.092442 0 1 0.06393 -0.549937 1836 27 +0.017229 0.129441 0 1 0.086308 -0.827536 7209 26 +0.017229 0.129441 0 1 0.101886 -0.845996 5670 26 +0.01568 0.152582 0 1 0.101886 -0.859355 7705 26 +0.01568 0.152582 0 1 0.111523 -0.876618 3232 26 +0.014264 0.092442 6 1 0.111523 -0.827536 3069 26 +0.014264 0.109872 1 1 0.111523 -0.845996 1716 26 +0.014264 0.109872 0 1 0.111523 -0.827536 1805 27 +0.017229 0.092442 0 1 0.111523 -0.827536 6542 26 +0.017229 0.152582 0 1 0.101886 -0.859355 34854 26 +0.021055 0.044902 0 1 0.073808 -0.549937 3444 26 +0.02733 0.061265 0 1 0.101886 -0.86908 1147 26 +0.033646 0.044902 6 1 0.101886 -0.890924 1145 26 +0.033646 0.076343 6 1 0.101886 -0.89835 901 27 +1.14252 0.044902 1 1 0.140196 -0.89835 1277 26 +0.033646 0.076343 6 1 0.068607 -0.887208 1610 26 +0.017229 0.076343 0 1 0.093586 -0.549937 18648 26 +0.02733 0.076343 0 1 0.111523 -0.845996 96019 26 +0.02733 0.061265 1 1 0.086308 -0.859355 1397 28 +0.021055 0.092442 0 1 0.073808 -0.827536 4702 27 +0.021055 0.076343 0 1 0.07966 -0.827536 1779 26 +0.033646 0.061265 6 1 0.068607 -0.88244 869 26 +0.033646 0.061265 6 1 0.06393 -0.859355 1978 27 +0.021055 0.092442 0 1 0.07966 -0.845996 1711 26 +0.023678 0.092442 0 1 0.06393 -0.845996 3401 26 +0.021055 0.076343 0 1 0.093586 -0.827536 3777 26 +0.02733 0.076343 0 1 0.123692 -0.876618 2681 26 +0.02733 0.061265 0 1 0.123692 -0.86908 1823 27 +0.02733 0.044902 0 1 0.123692 -0.859355 942 27 +0.017229 0.129441 0 1 0.093586 -0.827536 5680 26 +0.02733 0.02677 0 1 0.086308 -0.549937 7184 26 +0.013018 0.092442 0 1 0.167595 -0.827536 4537 26 +0.013018 0.109872 0 1 0.140196 -0.859355 1016 30 +0.01568 0.092442 0 1 0.140196 -0.845996 6294 26 +0.014264 0.092442 0 1 0.123692 -0.827536 1045 27 +0.014264 0.109872 0 1 0.123692 -0.845996 2285 27 +0.014264 0.092442 0 1 0.140196 -0.549937 5152 26 +0.033646 0.061265 0 1 0.101886 -0.890924 3776 26 +0.018999 0.109872 0 1 0.101886 -0.827536 52833 26 +0.018999 0.076343 0 1 0.111523 -0.827536 1533 27 +0.017229 0.109872 0 1 0.111523 -0.827536 8791 26 +0.017229 0.129441 0 1 0.111523 -0.845996 9011 27 +0.014264 0.129441 1 1 0.111523 -0.845996 1351 27 +0.017229 0.129441 1 1 0.101886 -0.876618 809 26 +0.018999 0.129441 0 1 0.101886 -0.859355 34964 26 +0.018999 0.129441 0 1 0.111523 -0.88244 2812 28 +0.018999 0.109872 0 1 0.123692 -0.88244 1172 28 +0.018999 0.129441 0 1 0.068607 -0.827536 5138 26 +0.018999 0.152582 0 1 0.073808 -0.88244 1234 26 +0.018999 0.076343 0 1 0.123692 -0.827536 7664 26 +0.01568 0.076343 0 1 0.140196 -0.827536 1531 27 +0.017229 0.044902 0 1 0.167595 -0.827536 850 29 +0.01568 0.092442 0 1 0.123692 -0.827536 1323 26 +0.021055 0.044902 0 1 0.123692 -0.827536 852 26 +0.01568 0.076343 1 1 0.123692 -0.827536 818 26 +0.017229 0.061265 1 1 0.123692 -0.827536 997 27 +0.021055 0.044902 6 1 0.140196 -0.86908 1068 27 +0.014264 0.180841 0 1 0.093586 -0.845996 30168 26 +0.014264 0.180841 1 1 0.093586 -0.859355 856 26 +0.01568 0.180841 0 1 0.073808 -0.86908 4282 26 +0.01568 0.180841 0 1 0.07966 -0.876618 2180 26 +0.014264 0.219974 0 1 0.068607 -0.859355 2706 26 +0.013018 0.219974 0 1 0.073808 -0.859355 3524 26 +0.014264 0.219974 0 1 0.07966 -0.887208 2638 26 +0.014264 0.180841 0 1 0.101886 -0.86908 5663 26 +0.014264 0.180841 0 1 0.123692 -0.887208 3896 26 +0.014264 0.180841 0 1 0.111523 -0.88244 1362 28 +0.01081 0.219974 0 1 0.093586 -0.86908 3768 26 +0.01081 0.219974 0 1 0.111523 -0.88244 1433 27 +0.01081 0.219974 0 1 0.086308 -0.859355 812 26 +0.01081 0.180841 0 1 0.167595 -0.827536 19178 26 +0.014264 0.109872 0 1 0.167595 -0.859355 3638 26 +0.014264 0.092442 0 1 0.167595 -0.827536 895 27 +0.01568 0.092442 0 1 0.167595 -0.859355 1336 26 +0.018999 0.092442 0 1 0.167595 -0.88244 3047 26 +0.018999 0.076343 0 1 0.140196 -0.876618 978 27 +0.017229 0.076343 0 1 0.140196 -0.859355 1155 28 +0.018999 0.076343 6 1 0.140196 -0.88244 835 26 +0.018999 0.109872 0 1 0.140196 -0.88244 1603 26 +0.017229 0.129441 0 1 0.140196 -0.876618 8433 26 +0.018999 0.129441 0 1 0.140196 -0.88244 2824 26 +0.017229 0.109872 6 1 0.140196 -0.88244 1951 26 +0.014264 0.092442 0 1 0.167595 -0.549937 2341 26 +0.01568 0.044902 0 1 0.167595 -0.549937 1581 26 +0.017229 0.092442 0 1 0.567647 -0.876618 1942 26 +0.014264 0.180841 0 1 0.140196 -0.88244 13260 26 +0.013018 0.180841 0 1 0.167595 -0.890924 1091 27 +0.011836 0.180841 0 1 0.167595 -0.88244 1236 26 +0.014264 0.152582 0 1 0.167595 -0.887208 1433 29 +0.02733 0.044902 0 1 0.123692 -0.845996 1126 26 +0.021055 0.092442 0 1 0.101886 -0.845996 6380 26 +0.011836 0.129441 0 1 0.140196 -0.859355 1121 26 +0.018999 0.129441 0 1 0.140196 -0.845996 139073 26 +0.018999 0.092442 0 1 0.111523 -0.827536 2291 28 +0.021055 0.092442 0 1 0.123692 -0.86908 2606 27 +0.014264 0.109872 0 1 0.167595 -0.845996 1322 26 +0.018999 0.092442 0 1 0.123692 -0.827536 3733 26 +0.018999 0.076343 0 1 0.167595 -0.859355 2432 26 +0.011836 0.129441 0 1 0.167595 -0.827536 4354 26 +0.014264 0.109872 0 1 0.167595 -0.827536 6224 26 +0.017229 0.109872 0 1 0.123692 -0.827536 4403 26 +0.01568 0.129441 0 1 0.123692 -0.827536 17145 26 +0.013018 0.129441 0 1 0.140196 -0.827536 1324 26 +0.014264 0.129441 0 1 0.140196 -0.827536 1588 26 +0.021055 0.092442 0 1 0.111523 -0.845996 4193 26 +0.021055 0.092442 0 1 0.123692 -0.859355 1820 27 +0.021055 0.109872 0 1 0.111523 -0.845996 66288 26 +0.021055 0.109872 0 1 0.06393 -0.827536 1214 31 +0.021055 0.152582 6 1 0.06393 -0.887208 1327 26 +0.017229 0.092442 0 1 0.140196 -0.827536 3721 26 +0.033646 0.02677 0 1 0.123692 -0.827536 33457 26 +1.14252 0.02677 0 1 0.07966 -0.845996 10336 26 +1.14252 0.02677 0 1 0.068607 -0.827536 2365 26 +0.023678 0.092442 0 1 0.111523 -0.876618 29365 26 +0.023678 0.092442 0 1 0.140196 -0.893946 2816 28 +0.023678 0.109872 6 1 0.07966 -0.893946 2209 27 +0.023678 0.109872 6 1 0.07966 -0.890924 1076 27 +0.023678 0.129441 6 1 0.07966 -0.89835 842 26 +0.02733 0.092442 6 1 0.093586 -0.893946 5158 26 +0.033646 0.092442 6 1 0.07966 -0.89835 805 29 +0.02733 0.092442 6 1 0.07966 -0.890924 1703 26 +0.02733 0.092442 0 1 0.073808 -0.88244 3054 26 +0.023678 0.109872 0 1 0.101886 -0.896382 3106 26 +0.023678 0.109872 6 1 0.140196 -0.89835 2119 27 +0.02733 0.109872 6 1 0.093586 -0.89835 1634 26 +0.023678 0.109872 0 1 0.101886 -0.890924 4538 26 +0.011836 0.180841 0 1 0.123692 -0.845996 21171 26 +0.013018 0.152582 0 1 0.123692 -0.86908 1305 26 +0.014264 0.180841 0 1 0.101886 -0.845996 14904 26 +0.011836 0.219974 0 1 0.167595 -0.88244 23011 26 +0.014264 0.219974 6 1 0.167595 -0.89835 1096 27 +0.01081 0.28403 0 1 0.167595 -0.890924 5176 26 +0.011836 0.219974 0 1 0.086308 -0.86908 2615 26 +0.011836 0.219974 0 1 0.093586 -0.876618 880 26 +0.01568 0.076343 0 1 0.101886 -0.549937 2226 26 +0.013018 0.180841 0 1 0.111523 -0.876618 1479 26 +0.021055 0.109872 0 1 0.123692 -0.86908 7016 26 +0.021055 0.109872 0 1 0.140196 -0.890924 1281 26 +0.021055 0.061265 0 1 0.068607 -0.549937 3687 26 +0.011836 0.219974 0 1 0.086308 -0.859355 1837 26 +0.023678 0.044902 0 1 0.567647 -0.876618 1836 26 +1.14252 0.02677 0 1 0.086308 -0.845996 4773 26 +1.14252 0.044902 0 1 0.111523 -0.893946 2223 26 +1.14252 0.061265 6 1 0.073808 -0.890924 2782 26 +1.14252 0.076343 0 1 0.06393 -0.887208 914 27 +0.01568 0.092442 0 1 0.086308 -0.549937 5505 26 +0.01568 0.109872 0 1 0.07966 -0.549937 7055 26 +0.018999 0.129441 0 1 0.101886 -0.827536 17900 26 +0.018999 0.152582 0 1 0.06393 -0.859355 1452 26 +0.018999 0.152582 0 1 0.068607 -0.86908 1512 26 +0.021055 0.129441 0 1 0.111523 -0.845996 79302 26 +0.021055 0.152582 6 1 0.06393 -0.86908 1749 29 +0.021055 0.152582 0 1 0.06393 -0.859355 813 26 +0.021055 0.129441 0 1 0.140196 -0.876618 19720 26 +0.021055 0.129441 0 1 0.123692 -0.86908 2789 27 +0.021055 0.152582 0 1 0.068607 -0.86908 3173 26 +0.021055 0.152582 0 1 0.073808 -0.887208 1679 26 +0.014264 0.129441 0 1 0.093586 -0.549937 19552 26 +0.01568 0.129441 0 1 0.06393 -0.549937 1326 26 +0.013018 0.129441 0 1 0.101886 -0.549937 1911 26 +0.021055 0.152582 0 1 0.111523 -0.89835 3601 26 +0.023678 0.152582 6 1 0.093586 -0.89835 3075 26 +0.023678 0.129441 0 1 0.093586 -0.893946 4738 26 +0.023678 0.180841 6 1 0.068607 -0.896382 2396 27 +0.023678 0.129441 6 1 0.073808 -0.890924 1227 26 +0.023678 0.152582 6 1 0.093586 -0.896382 3999 26 +0.021055 0.152582 0 1 0.111523 -0.896382 3553 26 +0.018999 0.152582 0 1 0.101886 -0.887208 3653 27 +0.021055 0.152582 0 1 0.086308 -0.890924 2689 26 +0.018999 0.152582 6 1 0.101886 -0.887208 1130 26 +0.01568 0.152582 1 1 0.111523 -0.876618 1000 27 +0.013018 0.180841 6 1 0.140196 -0.890924 894 27 +0.01568 0.152582 1 1 0.093586 -0.845996 865 26 +0.017229 0.152582 1 1 0.101886 -0.86908 844 26 +0.011836 0.152582 1 1 0.111523 -0.827536 2779 26 +0.021055 0.129441 1 1 0.086308 -0.86908 1140 26 +0.021055 0.152582 6 1 0.101886 -0.893946 2263 26 +0.021055 0.152582 0 1 0.111523 -0.893946 3275 26 +0.017229 0.152582 0 1 0.167595 -0.890924 16022 26 +0.017229 0.152582 1 1 0.567647 -0.89835 1009 30 +0.018999 0.152582 6 1 0.123692 -0.89835 880 29 +0.018999 0.152582 6 1 0.123692 -0.896382 1203 28 +0.02733 0.044902 1 1 0.167595 -0.893946 1024 27 +0.021055 0.152582 0 1 0.123692 -0.89835 919 27 +0.018999 0.152582 0 1 0.111523 -0.890924 1373 27 +0.017229 0.061265 1 1 0.567647 -0.876618 826 26 +0.014264 0.180841 6 1 0.567647 -0.896382 1173 26 +0.018999 0.152582 0 1 0.123692 -0.893946 1140 26 +0.018999 0.152582 0 1 0.123692 -0.890924 1509 26 +0.01568 0.152582 0 1 0.167595 -0.887208 2593 26 +0.02733 0.152582 0 1 0.093586 -0.89835 3998 26 +0.033646 0.152582 6 1 0.07966 -0.89835 2697 27 +0.033646 0.129441 0 1 0.06393 -0.893946 1664 26 +0.033646 0.109872 0 1 0.068607 -0.893946 1478 26 +0.02733 0.180841 6 1 0.068607 -0.896382 1387 28 +0.02733 0.109872 0 1 0.073808 -0.890924 1727 26 +0.033646 0.129441 0 1 0.06393 -0.890924 1057 27 +0.033646 0.109872 0 1 0.07966 -0.896382 1529 26 +0.02733 0.129441 0 1 0.068607 -0.88244 8430 26 +0.02733 0.109872 6 1 0.06393 -0.876618 1909 28 +0.033646 0.129441 6 1 0.06393 -0.887208 1148 28 +0.02733 0.152582 6 1 0.06393 -0.88244 2585 26 +0.02733 0.152582 6 1 0.068607 -0.890924 1332 28 +0.02733 0.180841 6 1 0.06393 -0.893946 969 27 +0.023678 0.180841 6 1 0.06393 -0.890924 985 27 +0.023678 0.129441 6 1 0.06393 -0.86908 2094 26 +0.017229 0.180841 6 1 0.086308 -0.893946 1593 26 +0.017229 0.180841 6 1 0.068607 -0.887208 822 26 +0.023678 0.180841 6 1 0.06393 -0.887208 934 27 +0.02733 0.109872 0 1 0.06393 -0.859355 4048 26 +0.017229 0.180841 0 1 0.07966 -0.88244 4033 26 +0.011836 0.180841 0 1 0.123692 -0.827536 14769 26 +0.013018 0.180841 0 1 0.093586 -0.827536 8109 26 +0.021055 0.044902 0 1 0.101886 -0.549937 6479 26 +0.01568 0.129441 0 1 0.073808 -0.549937 3589 26 +0.014264 0.180841 0 1 0.093586 -0.827536 10391 26 +0.023678 0.092442 0 1 0.111523 -0.859355 21454 26 +0.023678 0.092442 1 1 0.086308 -0.859355 1088 27 +0.023678 0.109872 1 1 0.073808 -0.859355 7586 26 +0.02733 0.044902 0 1 0.086308 -0.827536 4285 26 +0.033646 0.044902 0 1 0.073808 -0.827536 6148 26 +0.033646 0.044902 0 1 0.07966 -0.845996 4269 26 +0.033646 0.061265 0 1 0.086308 -0.88244 4189 26 +1.14252 0.044902 0 1 0.07966 -0.887208 1105 26 +1.14252 0.044902 6 1 0.073808 -0.88244 1094 26 +1.14252 0.044902 0 1 0.073808 -0.86908 2218 26 +0.014264 0.219974 0 1 0.07966 -0.859355 7492 26 +0.011836 0.152582 6 1 0.073808 -0.549937 4277 26 +0.01081 0.152582 6 1 0.086308 -0.549937 2213 27 +0.011836 0.180841 6 1 0.068607 -0.549937 1911 26 +0.023678 0.109872 0 1 0.086308 -0.845996 28451 26 +0.023678 0.092442 0 1 0.068607 -0.827536 5416 26 +0.023678 0.109872 0 1 0.06393 -0.827536 1258 28 +0.023678 0.092442 0 1 0.073808 -0.827536 4844 26 +0.02733 0.109872 0 1 0.06393 -0.845996 2183 26 +0.02733 0.076343 0 1 0.068607 -0.827536 2485 26 +0.033646 0.076343 0 1 0.06393 -0.859355 2125 25 +0.033646 0.02677 0 1 0.140196 -0.88244 726 29 +0.023678 0.129441 6 1 0.101886 -0.89835 692 28 +1.14252 0.02677 1 1 0.567647 -0.89835 667 28 +0.023678 1.75492 6 1 0.06393 -0.89835 786 26 +0.01568 0.28403 6 1 0.06393 -0.887208 805 26 +0.01568 0.219974 0 1 0.06393 -0.86908 838 26 +0.017229 0.219974 6 1 0.06393 -0.88244 830 26 +0.021055 0.061265 0 1 0.140196 -0.859355 769 26 +0.023678 0.092442 6 1 0.101886 -0.88244 764 26 +0.014264 0.129441 1 1 0.07966 -0.549937 764 26 +0.014264 0.061265 6 1 0.123692 -0.549937 1182 26 +0.021055 0.152582 0 1 0.07966 -0.887208 756 26 +0.011836 0.109872 0 1 0.567647 -0.859355 712 26 +0.014264 0.109872 0 1 0.567647 -0.86908 837 26 +0.013018 0.129441 0 1 0.567647 -0.876618 871 26 +0.017229 0.129441 0 1 0.567647 -0.887208 856 26 +1.14252 0.092442 0 1 0.068607 -0.896382 710 26 +1.14252 0.180841 6 1 0.068607 -0.89835 1184 26 +1.14252 0.109872 6 1 0.06393 -0.890924 778 26 +0.018999 0.076343 0 1 0.101886 -0.549937 24771 25 +0.018999 0.109872 0 1 0.068607 -0.549937 9281 26 +0.01568 0.180841 1 1 0.073808 -0.859355 2468 25 +0.023678 0.109872 0 1 0.111523 -0.86908 22197 25 +0.023678 0.109872 0 1 0.123692 -0.896382 662 28 +0.023678 0.109872 0 1 0.093586 -0.859355 2344 27 +0.023678 0.109872 0 1 0.123692 -0.893946 830 26 +0.023678 0.109872 0 1 0.093586 -0.845996 5204 26 +0.023678 0.092442 0 1 0.101886 -0.845996 2604 26 +0.023678 0.129441 0 1 0.111523 -0.887208 16068 26 +0.02733 0.129441 0 1 0.101886 -0.896382 6626 26 +0.02733 0.109872 0 1 0.140196 -0.896382 7713 26 +0.02733 0.129441 0 1 0.111523 -0.89835 771 29 +0.02733 0.129441 0 1 0.111523 -0.896382 963 27 +0.02733 0.092442 6 1 0.111523 -0.893946 1833 27 +0.02733 0.129441 0 1 0.073808 -0.887208 1923 26 +0.02733 0.152582 6 1 0.086308 -0.896382 1483 26 +0.02733 0.129441 0 1 0.111523 -0.893946 7614 26 +0.02733 0.109872 6 1 0.111523 -0.893946 756 26 +0.02733 0.109872 0 1 0.101886 -0.88244 22126 26 +0.02733 0.092442 0 1 0.111523 -0.887208 1799 30 +0.02733 0.092442 0 1 0.101886 -0.876618 6462 26 +0.023678 0.109872 0 1 0.101886 -0.845996 6050 26 +0.023678 0.129441 0 1 0.093586 -0.86908 18448 25 +0.023678 0.129441 0 1 0.101886 -0.88244 1872 28 +0.023678 0.129441 1 1 0.086308 -0.86908 839 26 +0.021055 0.129441 0 1 0.073808 -0.827536 8098 25 +0.023678 0.109872 0 1 0.068607 -0.827536 1576 26 +0.01568 0.152582 0 1 0.111523 -0.86908 2112 25 +0.018999 0.180841 6 1 0.093586 -0.896382 3510 25 +0.023678 0.180841 6 1 0.073808 -0.896382 1026 27 +0.021055 0.180841 6 1 0.093586 -0.89835 1484 26 +0.018999 0.180841 0 1 0.111523 -0.896382 6712 25 +0.01568 0.180841 0 1 0.111523 -0.88244 13874 26 +0.01568 0.180841 0 1 0.093586 -0.86908 7480 26 +0.01568 0.180841 0 1 0.086308 -0.859355 3178 26 +0.01081 0.219974 6 1 0.06393 -0.827536 701 25 +0.033646 0.076343 0 1 0.101886 -0.896382 701 25 +0.01081 0.219974 0 1 0.093586 -0.859355 1051 25 +0.014264 0.180841 0 1 0.140196 -0.827536 137266 25 +0.014264 0.152582 1 1 0.111523 -0.845996 718 29 +0.01568 0.152582 0 1 0.111523 -0.859355 2681 27 +0.011836 0.152582 0 1 0.567647 -0.876618 761 26 +0.011836 0.152582 0 1 0.167595 -0.845996 1729 26 +0.014264 0.180841 1 1 0.111523 -0.86908 743 26 +0.014264 0.180841 1 1 0.140196 -0.88244 2669 26 +0.01081 0.152582 1 1 0.167595 -0.827536 2830 25 +0.01568 0.092442 6 1 0.567647 -0.88244 727 29 +0.01081 0.180841 1 1 0.167595 -0.845996 1019 27 +0.011836 0.129441 6 1 0.567647 -0.876618 927 27 +0.01568 0.109872 6 1 0.140196 -0.876618 799 26 +0.013018 0.129441 1 1 0.167595 -0.876618 655 28 +0.01568 0.092442 6 1 0.123692 -0.845996 1078 27 +0.014264 0.109872 1 1 0.123692 -0.845996 711 29 +0.014264 0.129441 1 1 0.123692 -0.845996 894 27 +0.014264 0.129441 1 1 0.140196 -0.86908 1074 27 +0.014264 0.180841 1 1 0.123692 -0.859355 1887 27 +0.013018 0.152582 1 1 0.167595 -0.876618 1678 26 +0.011836 0.129441 1 1 0.123692 -0.549937 794 26 +0.013018 0.152582 1 1 0.567647 -0.88244 794 26 +0.013018 0.152582 0 1 0.167595 -0.859355 2263 26 +0.017229 0.152582 0 1 0.567647 -0.893946 746 26 +0.017229 0.129441 1 1 0.167595 -0.893946 720 26 +0.01568 0.152582 0 1 0.140196 -0.845996 26638 25 +0.01568 0.152582 0 1 0.101886 -0.827536 3756 26 +0.017229 0.152582 0 1 0.140196 -0.88244 9185 26 +0.01568 0.152582 0 1 0.167595 -0.88244 2454 25 +0.01568 0.129441 1 1 0.167595 -0.88244 1088 27 +0.021055 0.129441 0 1 0.140196 -0.859355 19600 25 +0.023678 0.129441 0 1 0.111523 -0.88244 2100 25 +0.017229 0.129441 0 1 0.140196 -0.827536 14696 25 +0.011836 1.75492 0 1 0.073808 -0.887208 699 25 +0.01081 0.180841 0 1 0.123692 -0.549937 13975 25 +0.023678 0.02677 0 1 0.111523 -0.549937 3838 25 +0.013018 0.219974 0 1 0.111523 -0.890924 4524 25 +0.033646 0.109872 6 1 0.101886 -0.89835 2782 25 +0.033646 0.092442 0 1 0.093586 -0.896382 845 26 +0.021055 0.109872 6 1 0.140196 -0.890924 1725 25 +0.017229 0.076343 6 2 0.068607 -0.89835 690 25 +0.033646 0.076343 6 1 0.073808 -0.890924 688 25 +0.033646 0.076343 0 1 0.07966 -0.890924 709 25 +0.021055 0.076343 0 1 0.111523 -0.827536 3778 25 +0.023678 0.076343 0 1 0.101886 -0.827536 16341 25 +0.011836 0.129441 1 1 0.567647 -0.845996 3432 25 +0.01568 0.076343 6 1 0.140196 -0.845996 1396 28 +0.013018 0.092442 6 1 0.167595 -0.845996 738 29 +0.017229 0.044902 6 1 0.140196 -0.827536 833 26 +0.013018 0.152582 0 1 0.567647 -0.86908 814 26 +0.011836 0.180841 1 1 0.140196 -0.845996 1174 26 +0.02733 0.044902 0 1 0.101886 -0.549937 33264 25 +0.021055 0.129441 0 1 0.123692 -0.827536 83177 25 +0.023678 0.092442 0 1 0.101886 -0.827536 10376 26 +0.021055 0.152582 0 1 0.073808 -0.88244 684 25 +0.023678 0.152582 6 1 0.093586 -0.893946 2731 25 +0.017229 0.180841 0 1 0.093586 -0.86908 19798 25 +0.017229 0.180841 0 1 0.068607 -0.859355 1421 29 +0.017229 0.180841 0 1 0.068607 -0.827536 12256 26 +0.021055 0.152582 0 1 0.06393 -0.845996 1924 26 +0.01568 0.180841 0 1 0.086308 -0.845996 5097 26 +0.01568 0.180841 0 1 0.073808 -0.827536 1504 27 +0.017229 0.180841 0 1 0.073808 -0.827536 7010 25 +0.017229 0.152582 0 1 0.07966 -0.845996 1896 26 +0.01568 0.219974 0 1 0.06393 -0.827536 4488 25 +0.013018 0.219974 0 1 0.068607 -0.845996 1496 26 +0.011836 0.219974 6 1 0.073808 -0.845996 1220 26 +0.01081 0.219974 6 1 0.073808 -0.827536 1165 28 +0.011836 0.219974 0 1 0.093586 -0.845996 9352 25 +0.021055 0.180841 0 1 0.068607 -0.86908 7874 25 +0.018999 0.180841 0 1 0.093586 -0.890924 4996 26 +0.018999 0.180841 1 1 0.073808 -0.88244 1178 28 +0.018999 0.180841 0 1 0.07966 -0.887208 731 29 +0.018999 0.180841 0 1 0.101886 -0.890924 4602 25 +0.017229 0.180841 0 1 0.111523 -0.890924 2447 25 +0.01568 0.129441 1 1 0.093586 -0.827536 680 25 +0.033646 0.061265 0 1 0.093586 -0.887208 1019 25 +0.02733 0.02677 1 1 0.167595 -0.876618 1013 25 +0.021055 0.180841 0 1 0.101886 -0.88244 55688 25 +0.021055 0.152582 0 1 0.111523 -0.887208 5037 26 +0.023678 0.180841 6 1 0.086308 -0.896382 1898 26 +0.018999 0.180841 0 1 0.111523 -0.887208 6583 26 +0.018999 0.180841 0 1 0.111523 -0.88244 6799 26 +0.033646 0.180841 0 1 0.07966 -0.89835 1054 25 +0.02733 0.180841 6 1 0.07966 -0.896382 744 29 +0.023678 0.180841 0 1 0.07966 -0.88244 11712 25 +0.023678 0.180841 0 1 0.086308 -0.890924 2502 26 +0.018999 0.152582 0 1 0.101886 -0.845996 53884 25 +0.021055 0.152582 0 1 0.101886 -0.876618 8100 26 +0.021055 0.152582 0 1 0.073808 -0.86908 1034 27 +0.018999 0.180841 0 1 0.086308 -0.86908 7484 26 +0.021055 0.180841 0 1 0.073808 -0.876618 765 29 +0.021055 0.180841 0 1 0.073808 -0.86908 1001 27 +0.021055 0.152582 0 1 0.086308 -0.845996 17726 25 +0.021055 0.180841 0 1 0.073808 -0.845996 12007 25 +0.018999 0.180841 0 1 0.06393 -0.827536 2136 26 +0.018999 0.152582 0 1 0.101886 -0.827536 30886 25 +0.021055 0.152582 0 1 0.07966 -0.827536 6937 26 +0.021055 0.180841 0 1 0.068607 -0.827536 3471 25 +0.018999 0.180841 0 1 0.140196 -0.859355 248555 25 +0.01568 0.180841 6 1 0.123692 -0.887208 736 29 +0.018999 0.152582 0 1 0.167595 -0.896382 1084 27 +0.01568 0.180841 0 1 0.123692 -0.845996 14334 26 +0.021055 0.180841 0 1 0.07966 -0.859355 4148 25 +0.021055 0.180841 0 1 0.086308 -0.876618 1539 27 +0.017229 0.180841 0 1 0.111523 -0.827536 65188 25 +0.018999 0.152582 0 1 0.123692 -0.845996 13297 25 +0.017229 0.152582 0 1 0.140196 -0.845996 3293 26 +0.018999 0.152582 0 1 0.111523 -0.827536 5299 25 +0.018999 0.180841 1 1 0.086308 -0.86908 687 25 +0.018999 0.180841 0 1 0.167595 -0.89835 1714 25 +0.023678 0.180841 0 1 0.07966 -0.876618 6153 25 +0.017229 0.219974 0 1 0.167595 -0.89835 10930 25 +0.01568 0.219974 6 1 0.086308 -0.896382 1242 26 +0.023678 0.219974 0 1 0.073808 -0.896382 2779 26 +0.018999 0.219974 6 1 0.086308 -0.89835 702 28 +0.033646 0.219974 6 1 0.073808 -0.89835 885 26 +0.018999 0.28403 6 1 0.06393 -0.890924 767 26 +0.023678 0.219974 0 1 0.06393 -0.876618 3387 26 +0.021055 0.219974 0 1 0.06393 -0.86908 1127 26 +0.01568 0.219974 0 1 0.123692 -0.890924 25506 25 +0.01568 0.219974 0 1 0.073808 -0.88244 1276 28 +0.021055 0.219974 0 1 0.073808 -0.893946 1318 26 +0.017229 0.219974 0 1 0.111523 -0.890924 12179 26 +0.018999 0.219974 0 1 0.07966 -0.893946 739 29 +0.01568 0.219974 0 1 0.07966 -0.876618 2631 26 +0.021055 0.219974 0 1 0.086308 -0.893946 3729 26 +0.021055 0.219974 0 1 0.06393 -0.827536 5432 25 +0.02733 0.129441 0 1 0.101886 -0.890924 3707 25 +0.02733 0.152582 0 1 0.07966 -0.890924 1979 26 +0.023678 0.219974 0 1 0.07966 -0.896382 672 25 +0.023678 0.152582 0 1 0.07966 -0.827536 45686 25 +0.023678 0.129441 0 1 0.093586 -0.859355 5130 26 +0.023678 0.129441 0 1 0.086308 -0.845996 2782 27 +0.023678 0.180841 0 1 0.06393 -0.827536 3111 26 +0.023678 0.180841 0 1 0.068607 -0.86908 757 29 +0.023678 0.180841 0 1 0.073808 -0.86908 970 27 +0.023678 0.152582 0 1 0.086308 -0.859355 8760 26 +0.023678 0.152582 0 1 0.093586 -0.859355 18042 25 +0.023678 0.129441 0 1 0.140196 -0.876618 49937 25 +0.023678 0.061265 0 1 0.567647 -0.887208 2639 27 +0.021055 0.076343 0 1 0.167595 -0.890924 753 29 +0.02733 0.076343 0 1 0.167595 -0.896382 1303 26 +0.02733 0.092442 0 1 0.167595 -0.89835 824 29 +0.033646 0.061265 0 1 0.167595 -0.89835 944 27 +0.023678 0.129441 0 1 0.167595 -0.89835 1734 26 +0.023678 0.109872 6 1 0.123692 -0.890924 747 26 +0.023678 0.061265 0 1 0.140196 -0.86908 747 26 +0.021055 0.109872 0 1 0.167595 -0.890924 2227 26 +0.023678 0.092442 0 1 0.167595 -0.88244 6432 26 +0.023678 0.129441 0 1 0.167595 -0.890924 6030 26 +0.023678 0.061265 0 1 0.167595 -0.876618 791 26 +0.023678 0.092442 0 1 0.140196 -0.86908 5493 25 +0.033646 0.076343 0 1 0.086308 -0.88244 4691 25 +0.011836 0.152582 0 1 0.167595 -0.827536 1005 25 +0.018999 0.076343 0 1 0.123692 -0.549937 17371 25 +0.017229 0.044902 0 1 0.167595 -0.549937 848 26 +0.017229 0.076343 0 1 0.140196 -0.549937 2486 26 +0.018999 0.044902 0 1 0.140196 -0.549937 1055 25 +0.017229 0.219974 0 1 0.101886 -0.876618 47755 25 +0.01081 0.219974 0 1 0.101886 -0.86908 1000 27 +0.013018 0.219974 0 1 0.111523 -0.887208 960 27 +0.018999 0.219974 0 1 0.068607 -0.876618 1237 26 +0.013018 0.219974 0 1 0.123692 -0.887208 1212 26 +0.018999 0.219974 0 1 0.073808 -0.88244 1202 26 +0.014264 0.219974 0 1 0.086308 -0.859355 4689 26 +0.01568 0.219974 0 1 0.086308 -0.86908 3353 26 +0.014264 0.219974 0 1 0.086308 -0.845996 7644 26 +0.014264 0.219974 0 1 0.068607 -0.827536 2168 26 +0.014264 0.219974 0 1 0.093586 -0.845996 10727 26 +0.018999 0.219974 0 1 0.068607 -0.827536 7828 26 +0.01568 0.219974 0 1 0.073808 -0.859355 767 29 +0.017229 0.219974 0 1 0.073808 -0.86908 704 25 +0.023678 0.219974 0 1 0.068607 -0.88244 2086 25 +0.023678 0.219974 0 1 0.073808 -0.890924 984 27 +0.018999 0.219974 0 1 0.07966 -0.86908 6171 25 +0.014264 0.219974 0 1 0.101886 -0.859355 12504 25 +0.011836 0.219974 0 1 0.101886 -0.845996 3681 25 +0.011836 0.219974 0 1 0.07966 -0.827536 2992 25 +0.014264 0.219974 0 1 0.073808 -0.827536 2013 25 +0.01081 0.219974 0 1 0.093586 -0.549937 7020 25 +0.011836 0.219974 0 1 0.068607 -0.549937 895 27 +0.01081 0.219974 0 1 0.101886 -0.827536 2018 25 +1.14252 0.02677 0 1 0.101886 -0.845996 9258 25 +1.14252 0.02677 1 1 0.101886 -0.88244 1070 27 +1.14252 0.02677 0 1 0.111523 -0.887208 694 25 +0.023678 0.109872 0 1 0.093586 -0.827536 6281 25 +0.021055 0.180841 0 1 0.093586 -0.86908 6931 25 +0.023678 0.180841 0 1 0.068607 -0.845996 1977 25 +0.033646 0.076343 0 1 0.093586 -0.890924 988 25 +0.02733 0.152582 0 1 0.093586 -0.890924 4603 25 +0.021055 0.02677 0 1 0.140196 -0.549937 1314 25 +0.02733 0.02677 0 1 0.140196 -0.845996 1739 26 +0.02733 0.044902 0 1 0.140196 -0.845996 4248 25 +0.021055 0.044902 0 1 0.140196 -0.827536 667 28 +0.021055 0.061265 0 1 0.140196 -0.845996 871 26 +0.021055 0.076343 0 1 0.140196 -0.845996 1130 26 +0.021055 0.061265 0 1 0.140196 -0.827536 1769 25 +0.018999 0.061265 0 1 0.140196 -0.549937 783 26 +0.033646 0.02677 0 1 0.140196 -0.845996 2671 25 +0.014264 0.180841 1 1 0.167595 -0.893946 657 25 +0.014264 0.152582 1 1 0.567647 -0.88244 1171 26 +0.02733 0.076343 0 1 0.140196 -0.88244 3608 25 +0.02733 0.076343 0 1 0.167595 -0.890924 1569 26 +0.021055 0.180841 0 1 0.123692 -0.89835 2296 25 +0.02733 0.092442 0 1 0.167595 -0.887208 8526 25 +0.02733 0.109872 0 1 0.167595 -0.896382 1157 26 +0.02733 0.044902 0 1 0.567647 -0.887208 693 25 +0.02733 0.109872 0 1 0.07966 -0.845996 26533 25 +0.02733 0.092442 1 1 0.073808 -0.859355 688 28 +0.02733 0.092442 0 1 0.068607 -0.827536 2672 26 +0.02733 0.092442 0 1 0.111523 -0.859355 18189 26 +0.02733 0.092442 0 1 0.093586 -0.845996 4713 26 +0.02733 0.092442 0 1 0.073808 -0.827536 4885 25 +0.02733 0.092442 0 1 0.093586 -0.827536 19148 25 +0.02733 0.129441 6 1 0.06393 -0.86908 1336 25 +0.02733 0.061265 0 1 0.101886 -0.827536 1997 25 +0.02733 0.109872 0 1 0.086308 -0.86908 2987 25 +0.02733 0.109872 0 1 0.093586 -0.876618 1660 25 +0.021055 0.076343 0 1 0.07966 -0.549937 10805 25 +0.021055 0.092442 0 1 0.068607 -0.549937 2223 26 +0.018999 0.219974 0 1 0.093586 -0.876618 12421 25 +0.018999 0.219974 0 1 0.167595 -0.89835 5606 25 +0.021055 0.219974 0 1 0.111523 -0.89835 2613 26 +0.021055 0.219974 0 1 0.123692 -0.89835 1444 26 +0.021055 0.219974 0 1 0.101886 -0.896382 2765 25 +0.01568 0.219974 0 1 0.101886 -0.86908 4246 25 +0.013018 0.109872 0 1 0.123692 -0.549937 2286 25 +0.018999 0.092442 0 1 0.167595 -0.845996 7802 25 +0.01568 0.076343 0 1 0.167595 -0.827536 785 26 +0.017229 0.076343 0 1 0.167595 -0.827536 999 25 +0.021055 0.152582 0 1 0.123692 -0.845996 59347 25 +0.021055 0.152582 0 1 0.140196 -0.876618 11776 25 +0.02733 0.109872 0 1 0.140196 -0.88244 17184 25 +0.02733 0.129441 0 1 0.111523 -0.890924 1458 27 +0.02733 0.109872 0 1 0.167595 -0.893946 753 26 +0.02733 0.092442 0 1 0.123692 -0.876618 1637 25 +0.018999 0.129441 0 1 0.068607 -0.549937 7129 25 +0.017229 0.180841 0 1 0.140196 -0.845996 13603 25 +0.013018 0.219974 0 1 0.567647 -0.876618 32167 25 +0.013018 0.219974 6 1 0.567647 -0.893946 914 30 +0.01081 0.180841 1 1 0.567647 -0.845996 1408 25 +0.01081 0.180841 0 1 0.567647 -0.827536 1421 26 +0.014264 0.061265 0 1 0.567647 -0.827536 659 28 +0.01568 0.061265 6 1 0.567647 -0.845996 1054 25 +0.01568 0.219974 0 1 0.111523 -0.876618 10485 25 +0.017229 0.219974 0 1 0.111523 -0.887208 1883 26 +0.014264 0.219974 0 1 0.140196 -0.876618 12987 25 +0.017229 0.219974 0 1 0.111523 -0.88244 2378 25 +0.018999 0.044902 1 1 0.167595 -0.859355 676 25 +0.017229 0.180841 0 1 0.567647 -0.890924 7528 25 +0.018999 0.180841 0 1 0.167595 -0.896382 875 29 +0.01568 0.219974 0 1 0.167595 -0.896382 2273 26 +0.02733 0.061265 0 1 0.068607 -0.549937 8039 25 +0.02733 0.092442 0 1 0.06393 -0.549937 7762 25 +0.033646 0.061265 6 1 0.111523 -0.893946 964 25 +0.033646 0.076343 1 1 0.086308 -0.88244 984 27 +0.023678 0.180841 0 1 0.073808 -0.859355 1285 25 +0.017229 0.109872 0 1 0.123692 -0.549937 55226 25 +0.017229 0.092442 0 1 0.140196 -0.549937 2228 26 +0.014264 0.219974 0 1 0.167595 -0.876618 8639 25 +0.01568 0.180841 0 1 0.167595 -0.887208 852 26 +0.014264 0.129441 0 1 0.167595 -0.859355 1195 26 +0.014264 0.180841 1 1 0.167595 -0.876618 1901 26 +0.01568 0.180841 0 1 0.167595 -0.88244 1089 26 +0.01568 0.180841 0 1 0.167595 -0.876618 3313 25 +0.01568 0.129441 0 1 0.567647 -0.876618 898 30 +0.017229 0.180841 0 1 0.167595 -0.876618 10286 25 +0.02733 0.129441 0 1 0.123692 -0.876618 45111 25 +0.02733 0.129441 0 1 0.140196 -0.89835 863 29 +0.02733 0.129441 0 1 0.167595 -0.89835 705 28 +0.02733 0.129441 0 1 0.086308 -0.86908 5412 26 +0.02733 0.129441 0 1 0.140196 -0.887208 5607 25 +0.02733 0.129441 0 1 0.167595 -0.893946 1888 26 +0.02733 0.109872 0 1 0.101886 -0.86908 4396 25 +0.02733 0.109872 0 1 0.111523 -0.86908 2680 25 +0.02733 0.02677 1 1 0.123692 -0.859355 638 25 +0.018999 0.129441 0 1 0.167595 -0.859355 15278 25 +0.01568 0.129441 0 1 0.567647 -0.86908 969 27 +0.01568 0.109872 1 1 0.167595 -0.86908 1159 26 +0.023678 0.109872 0 1 0.167595 -0.88244 3423 25 +0.018999 0.109872 0 1 0.167595 -0.827536 16174 25 +0.018999 0.092442 6 1 0.140196 -0.86908 2323 25 +0.021055 0.109872 6 1 0.140196 -0.887208 1048 25 +0.017229 0.129441 0 1 0.167595 -0.827536 8944 25 +0.014264 0.129441 1 1 0.567647 -0.86908 655 25 +0.014264 0.152582 0 1 0.567647 -0.86908 1307 25 +0.017229 0.152582 0 1 0.167595 -0.845996 12885 25 +0.017229 0.180841 0 1 0.167595 -0.86908 6800 25 +0.011836 0.180841 1 1 0.567647 -0.86908 731 26 +0.021055 0.129441 0 1 0.167595 -0.86908 10620 25 +0.023678 0.076343 0 1 0.167595 -0.86908 2518 26 +0.02733 0.02677 1 1 0.167595 -0.86908 734 26 +0.023678 0.129441 0 1 0.167595 -0.876618 6923 25 +1.14252 0.044902 0 1 0.06393 -0.827536 1909 25 +0.018999 0.219974 0 1 0.111523 -0.88244 16539 25 +0.018999 0.219974 6 1 0.123692 -0.893946 8310 25 +0.017229 0.219974 1 1 0.167595 -0.89835 638 28 +0.021055 0.219974 6 1 0.123692 -0.896382 6881 25 +0.021055 0.129441 1 1 0.567647 -0.89835 1529 26 +0.023678 0.129441 6 1 0.123692 -0.893946 647 25 +0.018999 0.180841 6 1 0.140196 -0.896382 639 25 +0.021055 0.152582 0 1 0.167595 -0.89835 636 25 +0.011836 0.28403 0 1 0.167595 -0.89835 2225 25 +0.018999 0.28403 6 1 0.086308 -0.89835 2565 25 +0.018999 0.28403 0 1 0.068607 -0.890924 1226 26 +0.01568 0.28403 0 1 0.073808 -0.887208 1726 28 +0.014264 0.28403 6 1 0.086308 -0.893946 1988 25 +0.017229 0.28403 6 1 0.086308 -0.896382 1021 25 +0.021055 0.28403 0 1 0.068607 -0.890924 636 25 +0.033646 0.044902 0 1 0.123692 -0.845996 24780 25 +0.033646 0.061265 0 1 0.101886 -0.88244 2120 28 +0.033646 0.044902 1 1 0.086308 -0.86908 645 28 +0.033646 0.061265 0 1 0.123692 -0.887208 3180 27 +0.033646 0.061265 0 1 0.167595 -0.896382 1182 26 +0.033646 0.044902 6 1 0.140196 -0.893946 841 26 +0.033646 0.061265 0 1 0.101886 -0.859355 17154 25 +0.033646 0.061265 0 1 0.073808 -0.845996 3232 25 +0.033646 0.076343 0 1 0.086308 -0.859355 10639 25 +0.033646 0.076343 0 1 0.073808 -0.845996 3182 25 +0.033646 0.076343 0 1 0.068607 -0.827536 4771 25 +0.018999 0.129441 1 1 0.073808 -0.827536 635 25 +0.011836 0.152582 0 1 0.111523 -0.549937 8248 25 +0.033646 0.02677 0 1 0.140196 -0.827536 2535 25 +0.02733 0.180841 6 1 0.111523 -0.896382 22797 25 +0.023678 0.152582 6 1 0.111523 -0.893946 2810 27 +0.02733 0.219974 6 1 0.086308 -0.89835 1319 26 +0.023678 0.219974 6 1 0.093586 -0.89835 729 26 +0.023678 0.180841 0 1 0.101886 -0.890924 6775 25 +0.023678 0.152582 0 1 0.111523 -0.890924 1646 25 +0.023678 0.152582 0 1 0.111523 -0.859355 47770 25 +0.023678 0.129441 0 1 0.101886 -0.845996 7598 25 +0.033646 0.061265 0 1 0.101886 -0.827536 21103 25 +0.033646 0.076343 0 1 0.086308 -0.827536 8282 25 +0.013018 0.180841 0 1 0.093586 -0.549937 23268 25 +0.014264 0.180841 0 1 0.07966 -0.549937 10369 26 +0.023678 0.219974 6 1 0.086308 -0.893946 1886 25 +0.021055 0.180841 0 1 0.093586 -0.859355 5655 25 +0.02733 0.152582 6 1 0.093586 -0.890924 941 25 +0.023678 0.180841 6 1 0.101886 -0.890924 726 26 +0.021055 0.152582 6 1 0.123692 -0.890924 972 25 +0.021055 0.092442 0 1 0.140196 -0.827536 5003 25 +0.021055 0.129441 0 1 0.140196 -0.845996 6035 25 +0.023678 0.129441 0 1 0.093586 -0.827536 7499 25 +1.14252 0.044902 0 1 0.073808 -0.859355 1247 25 +0.021055 0.109872 0 1 0.140196 -0.827536 2805 25 +0.021055 0.076343 0 1 0.111523 -0.549937 19323 25 +0.021055 0.109872 0 1 0.093586 -0.549937 52896 25 +0.018999 0.076343 0 1 0.167595 -0.549937 4667 25 +0.023678 0.152582 0 1 0.101886 -0.845996 12124 25 +0.021055 0.219974 0 1 0.093586 -0.890924 3414 25 +0.021055 0.219974 0 1 0.086308 -0.88244 4513 25 +0.011836 0.180841 1 1 0.167595 -0.845996 2482 25 +0.02733 0.152582 0 1 0.101886 -0.893946 1241 25 +0.02733 0.092442 0 1 0.101886 -0.845996 2791 25 +0.021055 0.180841 0 1 0.101886 -0.845996 38067 25 +1.14252 0.044902 0 1 0.111523 -0.890924 1237 25 +1.14252 0.044902 0 1 0.086308 -0.88244 1154 26 +0.021055 0.180841 6 1 0.111523 -0.893946 1545 25 +0.023678 0.129441 0 1 0.101886 -0.827536 8647 25 +0.021055 0.180841 0 1 0.111523 -0.859355 19763 25 +0.021055 0.219974 0 1 0.111523 -0.890924 6626 25 +0.023678 0.180841 6 1 0.111523 -0.890924 4416 25 +0.021055 0.219974 0 1 0.073808 -0.86908 2469 25 +0.023678 0.219974 0 1 0.073808 -0.876618 2125 25 +0.018999 0.180841 0 1 0.111523 -0.845996 5555 25 +0.023678 0.129441 0 1 0.167595 -0.86908 15725 25 +0.02733 0.180841 0 1 0.086308 -0.887208 11389 25 +0.02733 0.180841 0 1 0.06393 -0.876618 1282 25 +0.02733 0.152582 6 1 0.06393 -0.86908 665 25 +0.02733 0.152582 0 1 0.068607 -0.86908 2000 25 +0.023678 0.180841 0 1 0.111523 -0.88244 15567 25 +0.023678 0.180841 0 1 0.101886 -0.859355 29950 25 +0.023678 0.180841 0 1 0.07966 -0.845996 3602 25 +0.02733 0.152582 0 1 0.07966 -0.86908 6221 25 +0.02733 0.152582 0 1 0.086308 -0.88244 1395 27 +0.02733 0.02677 1 1 0.086308 -0.549937 2148 25 +0.021055 0.129441 1 1 0.101886 -0.86908 1534 25 +0.018999 0.152582 1 1 0.111523 -0.876618 1324 26 +0.018999 0.129441 1 1 0.123692 -0.876618 1035 27 +0.021055 0.129441 1 1 0.111523 -0.876618 846 26 +0.021055 0.092442 1 1 0.111523 -0.859355 1423 26 +0.021055 0.061265 6 1 0.111523 -0.845996 1457 26 +0.021055 0.092442 1 1 0.140196 -0.876618 1369 25 +0.021055 0.129441 1 1 0.123692 -0.876618 798 26 +0.021055 0.109872 1 1 0.140196 -0.876618 835 26 +0.023678 0.076343 1 1 0.123692 -0.876618 1502 26 +0.023678 0.044902 6 1 0.101886 -0.845996 689 25 +0.021055 0.044902 6 1 0.101886 -0.827536 641 25 +0.021055 0.02677 6 1 0.123692 -0.827536 697 25 +0.021055 0.180841 1 1 0.101886 -0.88244 958 25 +0.017229 0.092442 6 1 0.123692 -0.845996 950 25 +0.017229 0.092442 1 1 0.111523 -0.827536 1000 25 +0.021055 0.092442 1 1 0.111523 -0.827536 5257 25 +0.023678 0.092442 1 1 0.086308 -0.845996 758 26 +0.023678 0.129441 1 1 0.068607 -0.827536 815 26 +0.023678 0.076343 1 1 0.06393 -0.549937 665 25 +0.021055 0.02677 1 1 0.111523 -0.549937 950 25 +0.017229 0.044902 6 1 0.111523 -0.549937 671 25 +0.023678 0.129441 1 1 0.111523 -0.876618 2155 25 +0.023678 0.129441 1 1 0.123692 -0.88244 1012 25 +0.018999 0.061265 0 1 0.567647 -0.845996 920 25 +0.018999 0.076343 0 1 0.567647 -0.859355 1267 25 +0.01568 0.129441 0 1 0.567647 -0.859355 1740 25 +0.017229 0.219974 0 1 0.086308 -0.845996 17457 25 +0.017229 0.219974 0 1 0.073808 -0.827536 2470 25 +0.018999 0.219974 0 1 0.073808 -0.859355 945 25 +0.011836 0.219974 0 1 0.140196 -0.827536 54172 25 +0.013018 0.219974 0 1 0.111523 -0.86908 1890 33 +0.01081 0.219974 0 1 0.111523 -0.549937 3244 26 +0.013018 0.219974 0 1 0.111523 -0.859355 2427 25 +0.01081 0.219974 0 1 0.167595 -0.859355 1696 25 +0.01081 0.219974 0 1 0.567647 -0.827536 4520 25 +0.014264 0.219974 0 1 0.140196 -0.86908 11527 25 +0.01568 0.219974 0 1 0.123692 -0.887208 1835 25 +0.023678 0.044902 1 1 0.167595 -0.86908 1529 25 +0.017229 0.129441 0 1 0.073808 -0.549937 2134 25 +0.023678 0.109872 0 1 0.140196 -0.827536 70411 25 +0.023678 0.129441 0 1 0.111523 -0.845996 4707 27 +0.023678 0.044902 0 1 0.111523 -0.549937 1554 27 +0.02733 0.092442 0 1 0.111523 -0.845996 2902 26 +0.023678 0.129441 0 1 0.111523 -0.827536 5371 25 +0.033646 0.044902 0 1 0.111523 -0.827536 2920 25 +0.02733 0.061265 0 1 0.111523 -0.827536 1888 25 +0.023678 0.129441 0 1 0.123692 -0.827536 14393 25 +0.02733 0.076343 0 1 0.111523 -0.827536 4892 25 +0.02733 0.044902 0 1 0.167595 -0.86908 1218 25 +0.023678 0.02677 0 1 0.567647 -0.845996 1820 25 +0.023678 0.044902 0 1 0.167595 -0.859355 790 26 +0.021055 0.061265 0 1 0.167595 -0.845996 1591 25 +0.023678 0.044902 0 1 0.167595 -0.827536 2389 25 +0.021055 0.061265 0 1 0.167595 -0.827536 760 26 +0.023678 0.02677 0 1 0.567647 -0.827536 659 25 +0.033646 0.02677 0 1 0.167595 -0.845996 3987 25 +0.033646 0.02677 0 1 0.167595 -0.827536 1521 25 +0.018999 0.219974 0 1 0.123692 -0.887208 9401 25 +0.011836 0.180841 0 1 0.123692 -0.549937 7580 25 +0.013018 0.152582 0 1 0.123692 -0.549937 10033 25 +0.01081 0.219974 1 1 0.567647 -0.876618 907 25 +0.033646 0.109872 0 1 0.167595 -0.896382 15100 25 +0.033646 0.076343 0 1 0.140196 -0.890924 5813 25 +0.033646 0.076343 6 1 0.123692 -0.893946 1032 25 +0.033646 0.109872 6 1 0.111523 -0.896382 644 25 +1.14252 0.129441 6 1 0.068607 -0.896382 677 25 +0.02733 0.152582 0 1 0.07966 -0.859355 9955 25 +0.02733 0.129441 6 1 0.06393 -0.845996 1306 26 +0.02733 0.129441 0 1 0.093586 -0.827536 58186 25 +0.02733 0.109872 0 1 0.101886 -0.845996 6440 25 +0.02733 0.109872 0 1 0.111523 -0.859355 3203 26 +0.02733 0.152582 0 1 0.086308 -0.845996 15542 25 +0.02733 0.152582 0 1 0.06393 -0.827536 1120 26 +0.02733 0.152582 0 1 0.093586 -0.876618 5656 25 +0.02733 0.180841 0 1 0.101886 -0.887208 12716 25 +0.02733 0.180841 6 1 0.101886 -0.890924 767 26 +0.02733 0.152582 0 1 0.101886 -0.88244 2398 25 +0.033646 0.092442 0 1 0.086308 -0.827536 37944 25 +0.033646 0.092442 0 1 0.093586 -0.890924 1225 28 +0.033646 0.109872 0 1 0.086308 -0.893946 1284 26 +0.033646 0.129441 6 1 0.06393 -0.88244 846 26 +0.033646 0.092442 0 1 0.101886 -0.88244 8460 25 +0.033646 0.129441 0 1 0.06393 -0.876618 990 25 +0.033646 0.109872 0 1 0.086308 -0.887208 4248 25 +0.033646 0.109872 0 1 0.111523 -0.890924 7108 25 +0.033646 0.109872 0 1 0.093586 -0.887208 1007 27 +0.033646 0.092442 0 1 0.123692 -0.893946 727 26 +0.021055 0.129441 0 1 0.068607 -0.549937 4191 25 +0.01568 0.219974 0 1 0.140196 -0.845996 103613 25 +0.01568 0.219974 0 1 0.167595 -0.893946 1008 30 +0.017229 0.219974 0 1 0.123692 -0.88244 2917 26 +0.02733 0.109872 0 1 0.123692 -0.859355 14904 25 +0.02733 0.076343 0 1 0.123692 -0.827536 9286 25 +0.02733 0.044902 0 1 0.140196 -0.827536 1037 27 +0.033646 0.044902 0 1 0.123692 -0.827536 1539 25 +0.02733 0.092442 0 1 0.123692 -0.845996 2985 25 +0.021055 0.219974 0 1 0.07966 -0.859355 6557 25 +0.021055 0.219974 0 1 0.068607 -0.845996 883 26 +0.023678 0.219974 0 1 0.068607 -0.845996 3912 25 +0.023678 0.219974 0 1 0.06393 -0.827536 783 29 +0.023678 0.152582 0 1 0.111523 -0.845996 5958 25 +0.017229 0.152582 0 1 0.123692 -0.827536 8334 25 +0.01568 0.180841 0 1 0.123692 -0.827536 4947 25 +1.14252 0.061265 0 1 0.073808 -0.86908 4167 25 +0.021055 0.076343 0 1 0.167595 -0.827536 2375 25 +0.02733 0.180841 0 1 0.093586 -0.876618 11868 25 +0.02733 0.129441 0 1 0.101886 -0.845996 10978 25 +0.021055 0.152582 0 1 0.123692 -0.827536 31058 25 +0.023678 0.152582 0 1 0.093586 -0.827536 8382 25 +0.013018 0.219974 0 1 0.167595 -0.845996 11779 25 +0.014264 0.219974 0 1 0.167595 -0.86908 1869 26 +0.014264 0.180841 0 1 0.167595 -0.859355 1428 26 +0.01568 0.180841 0 1 0.167595 -0.859355 2046 25 +0.011836 0.219974 0 1 0.567647 -0.845996 2560 25 +0.017229 0.129441 0 1 0.093586 -0.549937 17666 25 +0.01568 0.129441 0 1 0.167595 -0.549937 31090 25 +0.01081 0.152582 0 1 0.140196 -0.549937 771 29 +0.013018 0.152582 0 1 0.140196 -0.549937 2593 26 +0.017229 0.109872 0 1 0.140196 -0.549937 1843 26 +0.011836 0.109872 1 1 0.140196 -0.549937 1103 26 +0.01568 0.180841 0 1 0.07966 -0.549937 12962 25 +0.017229 0.152582 0 1 0.06393 -0.549937 1342 25 +0.017229 0.152582 0 1 0.073808 -0.549937 3754 25 +0.021055 0.152582 0 1 0.068607 -0.549937 7248 25 +0.01568 0.152582 0 1 0.111523 -0.549937 25762 25 +0.014264 0.180841 0 1 0.093586 -0.549937 5090 25 +0.011836 0.219974 0 1 0.140196 -0.549937 19735 25 +0.017229 0.152582 0 1 0.093586 -0.549937 10643 25 +0.01568 0.180841 0 1 0.140196 -0.827536 7655 25 +0.01568 0.152582 0 1 0.167595 -0.827536 4790 25 +0.033646 0.092442 6 1 0.123692 -0.893946 882 25 +0.023678 0.129441 0 1 0.140196 -0.859355 3818 25 +0.01081 0.28403 0 1 0.167595 -0.887208 3524 25 +0.018999 0.152582 0 1 0.140196 -0.827536 16439 25 +0.017229 0.152582 0 1 0.167595 -0.827536 2704 25 +0.014264 0.180841 0 1 0.111523 -0.549937 12585 25 +0.013018 0.180841 0 1 0.123692 -0.549937 2788 25 +0.01568 0.219974 0 1 0.140196 -0.827536 74581 25 +0.013018 0.219974 0 1 0.111523 -0.549937 13085 25 +0.01568 0.219974 0 1 0.06393 -0.549937 1141 26 +0.017229 0.219974 0 1 0.086308 -0.827536 4515 25 +0.02733 0.28403 0 1 0.068607 -0.887208 4655 25 +0.023678 0.152582 0 1 0.123692 -0.86908 19484 25 +0.023678 0.180841 0 1 0.123692 -0.893946 6963 25 +0.023678 0.152582 0 1 0.167595 -0.89835 1896 25 +0.021055 0.180841 0 1 0.123692 -0.890924 2182 25 +0.021055 0.180841 0 1 0.123692 -0.859355 21203 25 +0.033646 0.044902 0 1 0.140196 -0.845996 4637 25 +0.021055 0.061265 0 1 0.123692 -0.549937 2606 25 +0.033646 0.061265 0 1 0.123692 -0.827536 17074 25 +0.033646 0.109872 0 1 0.111523 -0.876618 31570 25 +0.033646 0.109872 0 1 0.068607 -0.845996 5090 25 +0.02733 0.219974 0 1 0.06393 -0.845996 4339 25 +0.02733 0.109872 0 1 0.140196 -0.845996 37807 25 +0.02733 0.061265 0 1 0.167595 -0.876618 1079 27 +0.02733 0.061265 0 1 0.167595 -0.86908 761 26 +0.033646 0.061265 0 1 0.140196 -0.876618 2204 25 +0.02733 0.061265 0 1 0.167595 -0.827536 9519 25 +0.011836 0.28403 0 1 0.111523 -0.893946 2016 25 +0.021055 0.180841 0 1 0.101886 -0.827536 34809 25 +0.018999 0.180841 0 1 0.167595 -0.876618 14382 25 +0.021055 0.152582 0 1 0.167595 -0.890924 2918 25 +0.021055 0.152582 0 1 0.167595 -0.88244 3200 25 +0.023678 0.129441 1 1 0.086308 -0.845996 1723 25 +0.023678 0.109872 1 1 0.086308 -0.827536 1550 25 +0.023678 0.044902 1 1 0.111523 -0.827536 1194 26 +0.02733 0.044902 1 1 0.093586 -0.827536 1260 25 +0.021055 0.129441 1 1 0.093586 -0.845996 901 25 +0.023678 0.061265 1 1 0.101886 -0.827536 892 25 +0.023678 0.109872 1 1 0.123692 -0.86908 3585 25 +0.023678 0.109872 1 1 0.093586 -0.827536 1392 25 +0.023678 0.129441 1 1 0.101886 -0.859355 1651 26 +0.021055 0.129441 1 1 0.111523 -0.859355 1461 26 +0.017229 0.152582 1 1 0.123692 -0.86908 1252 25 +0.018999 0.152582 1 1 0.111523 -0.859355 1266 25 +0.01568 0.180841 1 1 0.167595 -0.88244 2174 25 +0.021055 0.092442 1 1 0.123692 -0.827536 4653 25 +0.018999 0.076343 6 1 0.140196 -0.845996 1372 27 +0.021055 0.061265 6 1 0.140196 -0.845996 948 27 +0.018999 0.092442 6 1 0.140196 -0.845996 1292 25 +0.02733 0.092442 1 1 0.07966 -0.845996 880 25 +0.023678 0.152582 1 1 0.073808 -0.827536 1147 25 +0.021055 0.152582 1 1 0.101886 -0.859355 689 25 +0.023678 0.152582 1 1 0.086308 -0.845996 873 25 +0.023678 0.180841 1 1 0.101886 -0.88244 682 25 +0.018999 0.061265 6 1 0.07966 -0.549937 860 25 +0.017229 0.180841 6 1 0.06393 -0.549937 1433 25 +0.017229 0.180841 0 1 0.123692 -0.827536 5983 25 +0.021055 0.129441 1 1 0.101886 -0.845996 854 25 +0.017229 0.219974 0 1 0.111523 -0.86908 11377 25 +0.018999 0.219974 0 1 0.111523 -0.876618 6285 25 +0.017229 0.219974 0 1 0.093586 -0.827536 9502 25 +1.14252 0.02677 0 1 0.111523 -0.845996 4266 25 +0.013018 0.129441 0 1 0.567647 -0.549937 3691 25 +0.014264 0.129441 0 1 0.567647 -0.827536 1867 25 +0.01568 0.180841 0 1 0.111523 -0.549937 15899 25 +0.021055 0.061265 1 1 0.167595 -0.845996 2552 25 +0.018999 0.02677 6 1 0.567647 -0.827536 643 25 +0.014264 0.044902 6 1 0.567647 -0.549937 859 26 +0.018999 0.129441 1 1 0.167595 -0.893946 643 25 +0.023678 0.109872 1 1 0.167595 -0.896382 1009 25 +0.018999 0.129441 1 1 0.567647 -0.893946 907 25 +1.14252 0.044902 0 1 0.086308 -0.827536 16139 25 +1.14252 0.02677 0 1 0.093586 -0.827536 1629 26 +1.14252 0.061265 0 1 0.07966 -0.86908 2671 25 +1.14252 0.044902 0 1 0.093586 -0.845996 4128 25 +1.14252 0.044902 0 1 0.101886 -0.88244 930 25 +0.021055 0.129441 1 1 0.123692 -0.859355 1982 25 +0.018999 0.219974 0 1 0.086308 -0.827536 15563 25 +0.021055 0.219974 0 1 0.086308 -0.859355 5631 25 +0.023678 0.152582 0 1 0.140196 -0.887208 7064 25 +0.021055 0.219974 6 1 0.123692 -0.893946 2535 24 +0.017229 0.28403 0 1 0.073808 -0.887208 543 27 +1.14252 0.061265 1 1 0.086308 -0.896382 514 27 +0.02733 0.061265 1 1 0.093586 -0.845996 620 25 +0.02733 0.092442 1 1 0.093586 -0.859355 1245 25 +0.033646 0.092442 1 1 0.093586 -0.88244 1039 25 +0.02733 0.180841 1 1 0.086308 -0.88244 894 25 +0.02733 0.109872 1 1 0.086308 -0.845996 1127 26 +0.02733 0.109872 1 1 0.073808 -0.827536 749 26 +0.014264 0.02677 6 2 0.073808 -0.890924 592 25 +0.018999 0.28403 6 1 0.086308 -0.893946 2658 25 +0.021055 0.28403 6 1 0.086308 -0.896382 1430 26 +1.14252 0.02677 1 1 0.07966 -0.86908 590 25 +0.021055 0.076343 1 1 0.140196 -0.845996 588 25 +0.033646 0.129441 1 1 0.07966 -0.88244 7004 25 +0.013018 0.180841 1 1 0.167595 -0.86908 576 25 +0.018999 0.109872 6 1 0.068607 -0.549937 575 25 +1.14252 0.076343 0 1 0.06393 -0.876618 572 25 +0.033646 0.152582 6 1 0.07966 -0.893946 2275 25 +0.033646 0.129441 0 1 0.068607 -0.845996 5654 25 +0.033646 0.152582 0 1 0.06393 -0.845996 3430 25 +0.01081 0.152582 1 1 0.140196 -0.549937 564 25 +0.023678 0.219974 6 1 0.093586 -0.896382 842 24 +0.023678 0.092442 1 1 0.140196 -0.876618 1964 24 +0.02733 0.092442 6 1 0.140196 -0.893946 621 28 +0.033646 0.076343 6 1 0.140196 -0.893946 730 26 +0.017229 0.180841 0 1 0.567647 -0.876618 6994 24 +0.02733 0.092442 0 1 0.111523 -0.827536 6674 24 +1.14252 0.076343 0 1 0.073808 -0.88244 2224 24 +1.14252 0.109872 6 1 0.068607 -0.890924 878 26 +0.02733 0.02677 0 1 0.123692 -0.549937 3330 24 +0.023678 0.02677 0 1 0.140196 -0.549937 624 25 +0.021055 0.152582 0 1 0.167595 -0.876618 2218 24 +0.02733 0.152582 0 1 0.140196 -0.893946 10512 24 +0.02733 0.180841 0 1 0.111523 -0.893946 1842 25 +0.02733 0.180841 0 1 0.123692 -0.893946 5831 25 +0.023678 0.044902 0 1 0.167595 -0.549937 4966 24 +0.021055 0.061265 0 1 0.140196 -0.549937 1124 24 +0.013018 0.28403 0 1 0.167595 -0.89835 2477 24 +0.01568 0.28403 6 1 0.093586 -0.89835 603 25 +0.013018 0.219974 0 1 0.567647 -0.845996 3849 24 +0.014264 0.152582 0 1 0.567647 -0.845996 797 26 +0.014264 0.152582 0 1 0.567647 -0.827536 1528 25 +0.023678 0.152582 0 1 0.123692 -0.827536 32965 24 +0.023678 0.180841 0 1 0.140196 -0.859355 129015 24 +0.021055 0.219974 0 1 0.167595 -0.89835 4271 25 +0.02733 0.180841 0 1 0.140196 -0.89835 1774 25 +0.021055 0.180841 0 1 0.167595 -0.876618 12584 25 +0.02733 0.180841 0 1 0.123692 -0.887208 20249 24 +0.02733 0.152582 0 1 0.140196 -0.890924 2358 25 +0.023678 0.180841 0 1 0.123692 -0.845996 49146 24 +0.021055 0.180841 0 1 0.123692 -0.827536 29626 24 +0.023678 0.180841 0 1 0.111523 -0.827536 30055 24 +0.033646 0.092442 0 1 0.111523 -0.827536 53230 24 +0.033646 0.109872 0 1 0.101886 -0.859355 17719 25 +0.033646 0.129441 0 1 0.07966 -0.859355 6918 25 +1.14252 0.076343 0 1 0.06393 -0.859355 1371 24 +1.14252 0.061265 0 1 0.06393 -0.827536 1416 25 +0.017229 0.219974 0 1 0.101886 -0.827536 12579 24 +0.02733 0.152582 0 1 0.101886 -0.845996 26217 24 +0.021055 0.219974 0 1 0.167595 -0.887208 67412 24 +0.018999 0.219974 0 1 0.567647 -0.896382 4054 25 +0.018999 0.180841 0 1 0.567647 -0.893946 739 26 +0.017229 0.219974 1 1 0.140196 -0.893946 617 25 +0.017229 0.219974 0 1 0.140196 -0.876618 10314 25 +0.017229 0.219974 0 1 0.140196 -0.86908 8971 25 +0.017229 0.219974 0 1 0.140196 -0.859355 15125 25 +0.033646 0.109872 0 1 0.123692 -0.893946 1091 24 +0.018999 0.180841 0 1 0.167595 -0.86908 5182 24 +0.018999 0.28403 0 1 0.111523 -0.89835 5708 24 +0.014264 0.28403 0 1 0.167595 -0.89835 2049 25 +0.02733 0.152582 0 1 0.086308 -0.827536 9785 24 +0.018999 0.219974 0 1 0.123692 -0.845996 76625 24 +0.018999 0.219974 0 1 0.111523 -0.827536 23647 25 +0.021055 0.219974 0 1 0.093586 -0.86908 6491 25 +0.021055 0.219974 0 1 0.101886 -0.859355 16829 24 +0.021055 0.219974 0 1 0.111523 -0.876618 7321 25 +0.021055 0.219974 0 1 0.140196 -0.876618 28479 24 +0.021055 0.28403 6 1 0.101886 -0.89835 1357 24 +0.014264 0.109872 0 1 0.567647 -0.549937 542 24 +0.023678 0.061265 6 1 0.123692 -0.859355 541 24 +0.02733 0.061265 1 1 0.111523 -0.845996 3184 25 +0.02733 0.076343 1 1 0.101886 -0.859355 508 27 +0.02733 0.061265 1 1 0.140196 -0.887208 758 26 +0.033646 0.061265 1 1 0.111523 -0.887208 710 26 +0.033646 0.061265 1 1 0.140196 -0.890924 684 25 +0.02733 0.076343 1 1 0.140196 -0.887208 655 25 +0.02733 0.076343 1 1 0.111523 -0.859355 786 26 +0.02733 0.044902 1 1 0.140196 -0.876618 593 25 +0.033646 0.044902 1 1 0.140196 -0.88244 1434 25 +0.033646 0.02677 1 1 0.111523 -0.86908 620 25 +0.02733 0.092442 1 1 0.123692 -0.887208 553 24 +0.023678 0.092442 1 1 0.111523 -0.827536 2178 24 +0.023678 0.129441 1 1 0.101886 -0.845996 539 27 +0.02733 0.076343 1 1 0.111523 -0.845996 566 25 +1.14252 0.076343 0 1 0.073808 -0.876618 811 24 +0.02733 0.129441 0 1 0.111523 -0.859355 7566 24 +0.018999 0.109872 0 1 0.101886 -0.549937 6749 24 +0.017229 0.129441 0 1 0.140196 -0.549937 14037 24 +0.018999 0.152582 0 1 0.567647 -0.86908 8632 24 +0.017229 0.180841 0 1 0.567647 -0.86908 2040 25 +0.018999 0.180841 0 1 0.567647 -0.890924 567 25 +0.01568 0.152582 0 1 0.567647 -0.859355 556 24 +0.033646 0.109872 0 1 0.140196 -0.876618 32871 24 +0.033646 0.092442 1 1 0.123692 -0.890924 604 25 +0.02733 0.152582 0 1 0.093586 -0.827536 4842 24 +0.023678 0.219974 0 1 0.07966 -0.859355 7799 24 +0.01081 0.28403 0 1 0.123692 -0.827536 31437 24 +0.011836 0.28403 6 1 0.07966 -0.88244 726 26 +0.011836 0.28403 0 1 0.086308 -0.876618 1736 25 +0.01081 0.28403 1 1 0.567647 -0.88244 3965 25 +0.01081 0.28403 1 1 0.140196 -0.876618 1199 25 +0.011836 0.28403 6 1 0.567647 -0.896382 2049 25 +0.01081 0.28403 0 1 0.567647 -0.876618 1437 25 +0.01568 0.28403 0 1 0.086308 -0.890924 1657 24 +0.011836 0.28403 0 1 0.567647 -0.88244 16342 24 +0.011836 0.28403 0 1 0.093586 -0.876618 539 27 +0.013018 0.28403 0 1 0.167595 -0.890924 11121 24 +0.014264 0.28403 0 1 0.111523 -0.890924 4866 25 +0.014264 0.28403 0 1 0.123692 -0.896382 715 26 +0.01568 0.28403 6 1 0.101886 -0.896382 973 25 +0.014264 0.28403 0 1 0.123692 -0.893946 917 25 +0.014264 0.28403 6 1 0.093586 -0.887208 2407 25 +0.023678 0.061265 0 1 0.101886 -0.549937 12344 24 +0.023678 0.092442 0 1 0.567647 -0.890924 1877 24 +0.02733 0.076343 0 1 0.567647 -0.893946 708 25 +0.021055 0.076343 0 1 0.567647 -0.86908 1374 24 +0.021055 0.044902 0 1 0.567647 -0.827536 931 25 +0.01568 0.092442 0 1 0.567647 -0.827536 925 25 +0.021055 0.109872 0 1 0.101886 -0.549937 8044 24 +0.023678 0.28403 6 1 0.086308 -0.896382 1608 24 +0.017229 0.092442 0 1 0.167595 -0.549937 803 24 +0.021055 0.129441 0 1 0.07966 -0.549937 11758 24 +0.011836 0.28403 6 1 0.07966 -0.845996 2667 24 +0.011836 0.28403 0 1 0.093586 -0.86908 1266 25 +0.033646 0.180841 6 1 0.073808 -0.896382 533 24 +0.014264 0.28403 0 1 0.06393 -0.859355 1064 24 +0.018999 0.219974 0 1 0.140196 -0.859355 13025 24 +0.033646 0.044902 0 1 0.167595 -0.859355 3189 24 +0.014264 0.092442 6 1 0.111523 -0.549937 1327 24 +0.013018 0.180841 1 1 0.093586 -0.549937 1259 25 +0.011836 0.152582 1 1 0.140196 -0.549937 1200 25 +0.021055 0.109872 0 1 0.167595 -0.827536 8756 24 +0.021055 0.129441 0 1 0.167595 -0.859355 2141 24 +0.033646 0.152582 6 1 0.101886 -0.893946 14051 24 +0.033646 0.129441 6 1 0.111523 -0.89835 972 30 +0.033646 0.109872 6 1 0.111523 -0.890924 581 25 +0.033646 0.129441 0 1 0.101886 -0.88244 11113 25 +0.033646 0.129441 0 1 0.086308 -0.86908 3110 25 +0.033646 0.129441 0 1 0.086308 -0.859355 2200 24 +0.021055 0.152582 0 1 0.07966 -0.549937 11907 24 +0.014264 0.180841 1 1 0.167595 -0.859355 3174 24 +0.013018 0.180841 1 1 0.140196 -0.845996 959 25 +0.018999 0.129441 1 1 0.167595 -0.859355 11470 24 +0.021055 0.109872 1 1 0.140196 -0.86908 540 27 +0.021055 0.129441 1 1 0.140196 -0.86908 1436 27 +0.018999 0.129441 1 1 0.140196 -0.845996 4225 25 +0.021055 0.109872 1 1 0.123692 -0.845996 523 27 +0.017229 0.129441 1 1 0.123692 -0.827536 3390 25 +0.013018 0.152582 1 1 0.111523 -0.549937 880 26 +0.018999 0.109872 1 1 0.123692 -0.827536 635 25 +0.021055 0.109872 1 1 0.140196 -0.859355 614 25 +0.021055 0.109872 1 1 0.167595 -0.88244 1444 25 +0.017229 0.152582 1 1 0.567647 -0.890924 866 25 +0.021055 0.109872 1 1 0.167595 -0.876618 563 24 +0.021055 0.076343 1 1 0.167595 -0.845996 1192 25 +0.01568 0.109872 1 1 0.167595 -0.845996 715 26 +0.017229 0.129441 1 1 0.140196 -0.827536 3533 24 +0.018999 0.076343 1 1 0.140196 -0.827536 522 27 +0.013018 0.152582 1 1 0.140196 -0.549937 2270 25 +0.023678 0.129441 1 1 0.111523 -0.845996 1593 24 +0.01568 0.180841 1 1 0.167595 -0.859355 3980 24 +0.018999 0.180841 1 1 0.111523 -0.876618 651 25 +0.018999 0.180841 1 1 0.111523 -0.859355 1257 25 +0.018999 0.180841 1 1 0.167595 -0.876618 9825 24 +0.018999 0.180841 1 1 0.123692 -0.86908 648 28 +0.018999 0.152582 1 1 0.567647 -0.890924 531 27 +0.018999 0.180841 1 1 0.123692 -0.859355 985 27 +0.021055 0.152582 1 1 0.123692 -0.86908 1273 25 +0.021055 0.152582 6 1 0.140196 -0.890924 585 25 +0.023678 0.152582 1 1 0.167595 -0.89835 840 26 +0.021055 0.152582 1 1 0.123692 -0.859355 583 25 +0.023678 0.180841 1 1 0.111523 -0.88244 843 24 +0.013018 0.180841 0 1 0.567647 -0.827536 4494 24 +0.011836 0.219974 0 1 0.167595 -0.827536 2226 24 +1.14252 0.092442 0 1 0.06393 -0.876618 793 24 +1.14252 0.092442 0 1 0.068607 -0.88244 588 25 +0.01568 0.152582 0 1 0.140196 -0.549937 11325 24 +0.033646 0.129441 0 1 0.167595 -0.89835 2897 24 +0.033646 0.152582 0 1 0.140196 -0.89835 3741 24 +0.033646 0.152582 6 1 0.123692 -0.89835 856 25 +0.033646 0.109872 6 1 0.140196 -0.896382 1227 25 +0.023678 0.219974 0 1 0.07966 -0.827536 15524 24 +0.02733 0.219974 0 1 0.073808 -0.845996 15229 24 +0.023678 0.109872 0 1 0.567647 -0.896382 525 24 +0.021055 0.129441 1 1 0.567647 -0.896382 554 24 +0.021055 0.129441 1 1 0.167595 -0.887208 606 25 +0.021055 0.152582 1 1 0.167595 -0.890924 630 25 +0.033646 0.076343 0 1 0.140196 -0.86908 4198 24 +0.033646 0.076343 0 1 0.123692 -0.859355 2016 25 +0.01081 0.02677 6 3 0.06393 -0.549937 522 24 +0.013018 0.02677 6 2 0.068607 -0.859355 844 24 +0.018999 0.092442 0 1 0.567647 -0.845996 1825 24 +0.017229 0.28403 0 1 0.167595 -0.896382 19010 24 +0.021055 0.180841 0 1 0.167595 -0.859355 23928 24 +0.018999 0.219974 0 1 0.167595 -0.859355 45217 24 +0.023678 0.152582 0 1 0.167595 -0.86908 14477 24 +0.02733 0.180841 0 1 0.167595 -0.896382 10608 24 +0.023678 0.180841 0 1 0.167595 -0.893946 1845 26 +0.02733 0.152582 0 1 0.167595 -0.893946 1561 24 +0.023678 0.219974 0 1 0.093586 -0.890924 3108 24 +0.02733 0.219974 6 1 0.086308 -0.890924 3763 24 +0.02733 0.219974 6 1 0.093586 -0.896382 1610 25 +0.02733 0.219974 0 1 0.07966 -0.876618 2465 24 +0.018999 0.219974 6 1 0.068607 -0.827536 540 24 +0.023678 0.219974 1 1 0.07966 -0.86908 882 25 +0.021055 0.180841 1 1 0.111523 -0.86908 740 26 +0.013018 0.219974 1 1 0.140196 -0.845996 4339 24 +0.01568 0.219974 1 1 0.111523 -0.859355 1366 25 +0.013018 0.219974 1 1 0.567647 -0.887208 590 25 +0.01568 0.219974 1 1 0.123692 -0.859355 1145 25 +0.018999 0.219974 6 1 0.123692 -0.887208 777 26 +0.014264 0.219974 1 1 0.140196 -0.86908 575 25 +0.017229 0.219974 1 1 0.167595 -0.890924 1519 25 +0.023678 0.180841 0 1 0.567647 -0.896382 4402 24 +0.021055 0.180841 0 1 0.567647 -0.890924 3357 24 +0.023678 0.109872 0 1 0.567647 -0.890924 621 28 +0.021055 0.109872 0 1 0.567647 -0.88244 1068 27 +0.021055 0.152582 0 1 0.567647 -0.88244 2364 25 +0.033646 0.152582 6 1 0.06393 -0.859355 516 24 +0.02733 0.180841 0 1 0.123692 -0.86908 73706 24 +0.02733 0.180841 1 1 0.086308 -0.86908 1080 24 +0.02733 0.129441 1 1 0.093586 -0.86908 640 25 +0.02733 0.152582 0 1 0.140196 -0.86908 25084 24 +0.02733 0.152582 0 1 0.111523 -0.859355 5262 24 +0.021055 0.219974 0 1 0.101886 -0.827536 26542 24 +0.023678 0.219974 0 1 0.086308 -0.827536 14825 24 +0.02733 0.219974 0 1 0.086308 -0.88244 2424 24 +0.021055 0.219974 0 1 0.140196 -0.845996 100997 24 +0.023678 0.219974 0 1 0.123692 -0.86908 83035 24 +0.023678 0.219974 6 1 0.111523 -0.890924 679 28 +0.023678 0.219974 0 1 0.093586 -0.859355 3518 26 +0.02733 0.219974 0 1 0.123692 -0.89835 4578 24 +0.02733 0.219974 6 1 0.101886 -0.896382 1291 25 +0.02733 0.219974 0 1 0.101886 -0.88244 14848 24 +0.023678 0.152582 0 1 0.167595 -0.859355 11336 24 +0.02733 0.092442 0 1 0.167595 -0.859355 8924 24 +0.02733 0.092442 0 1 0.167595 -0.845996 6205 24 +0.023678 0.129441 0 1 0.167595 -0.845996 14856 24 +0.01081 0.219974 1 1 0.123692 -0.549937 1030 24 +0.013018 0.219974 1 1 0.140196 -0.827536 2589 25 +0.013018 0.180841 1 1 0.123692 -0.549937 905 27 +0.033646 0.092442 0 1 0.140196 -0.859355 12873 24 +0.033646 0.061265 0 1 0.140196 -0.845996 1701 28 +0.014264 0.219974 0 1 0.167595 -0.827536 13615 24 +0.01568 0.180841 0 1 0.167595 -0.827536 5511 24 +0.01568 0.219974 0 1 0.167595 -0.845996 4124 24 +0.014264 0.180841 0 1 0.567647 -0.827536 2187 24 +0.033646 0.129441 0 1 0.123692 -0.859355 72340 24 +0.033646 0.129441 0 1 0.167595 -0.896382 2245 26 +0.033646 0.129441 0 1 0.140196 -0.893946 1463 25 +0.02733 0.129441 0 1 0.140196 -0.859355 4404 24 +0.033646 0.180841 0 1 0.140196 -0.896382 20002 24 +0.033646 0.219974 0 1 0.086308 -0.89835 709 25 +0.033646 0.219974 0 1 0.111523 -0.89835 3203 25 +0.033646 0.152582 0 1 0.167595 -0.896382 2915 24 +0.033646 0.180841 0 1 0.167595 -0.89835 1944 24 +0.033646 0.152582 0 1 0.073808 -0.887208 1535 24 +0.023678 0.152582 0 1 0.167595 -0.827536 69455 24 +0.033646 0.129441 1 1 0.111523 -0.890924 766 24 +0.02733 0.129441 6 1 0.123692 -0.890924 761 26 +0.033646 0.152582 1 1 0.111523 -0.893946 1847 24 +1.14252 0.02677 0 1 0.111523 -0.827536 3571 24 +1.14252 0.061265 6 1 0.111523 -0.89835 765 24 +1.14252 0.061265 0 1 0.111523 -0.896382 820 24 +1.14252 0.061265 0 1 0.093586 -0.88244 3104 24 +1.14252 0.061265 0 1 0.086308 -0.876618 601 25 +0.02733 0.180841 0 1 0.068607 -0.827536 2291 24 +0.023678 0.180841 0 1 0.140196 -0.827536 50711 24 +0.01081 0.02677 6 3 0.068607 -0.549937 507 24 +0.021055 0.061265 1 1 0.086308 -0.549937 1520 24 +0.02733 0.152582 0 1 0.167595 -0.845996 108611 24 +0.033646 0.129441 0 1 0.167595 -0.890924 9654 24 +0.033646 0.061265 0 1 0.167595 -0.88244 1115 26 +0.033646 0.109872 0 1 0.167595 -0.876618 11851 24 +0.033646 0.076343 0 1 0.167595 -0.86908 2165 25 +0.033646 0.061265 0 1 0.167595 -0.859355 1128 26 +0.033646 0.076343 0 1 0.06393 -0.549937 6828 24 +0.013018 0.28403 0 1 0.167595 -0.887208 5052 24 +0.01568 0.28403 0 1 0.06393 -0.549937 3533 24 +0.011836 0.28403 6 1 0.073808 -0.827536 696 25 +0.013018 0.28403 6 1 0.068607 -0.827536 1285 24 +0.01568 0.28403 6 1 0.068607 -0.876618 668 25 +0.023678 0.180841 0 1 0.068607 -0.549937 27983 24 +0.02733 0.092442 0 1 0.068607 -0.549937 4620 25 +0.023678 0.109872 0 1 0.086308 -0.549937 28050 24 +0.023678 0.092442 0 1 0.093586 -0.549937 6917 25 +0.021055 0.219974 0 1 0.068607 -0.549937 7860 24 +0.023678 0.219974 0 1 0.06393 -0.549937 1073 24 +0.01568 0.219974 0 1 0.093586 -0.549937 16329 24 +0.02733 0.109872 0 1 0.123692 -0.827536 16873 24 +0.02733 0.076343 0 1 0.093586 -0.549937 21907 24 +0.02733 0.061265 0 1 0.101886 -0.549937 2787 25 +0.013018 0.180841 0 1 0.167595 -0.549937 7045 24 +0.01081 0.219974 0 1 0.167595 -0.549937 1079 26 +0.01568 0.152582 0 1 0.167595 -0.549937 3073 24 +1.14252 0.061265 0 1 0.073808 -0.827536 5020 24 +1.14252 0.061265 0 1 0.07966 -0.845996 1787 24 +0.01568 0.28403 0 1 0.123692 -0.890924 8513 24 +0.01568 0.28403 6 1 0.093586 -0.887208 1520 24 +0.01568 0.180841 0 1 0.167595 -0.549937 20524 24 +0.018999 0.152582 0 1 0.140196 -0.549937 96530 24 +0.021055 0.092442 1 1 0.086308 -0.549937 2746 24 +0.018999 0.129441 1 1 0.073808 -0.549937 503 24 +0.018999 0.152582 0 1 0.567647 -0.845996 9972 24 +0.01568 0.180841 0 1 0.567647 -0.845996 1781 25 +0.017229 0.180841 0 1 0.567647 -0.859355 1123 24 +0.033646 0.109872 0 1 0.123692 -0.827536 60071 24 +0.02733 0.180841 0 1 0.140196 -0.876618 20666 24 +0.033646 0.076343 0 1 0.140196 -0.845996 2239 24 +0.033646 0.129441 0 1 0.086308 -0.827536 15907 24 +0.033646 0.129441 0 1 0.093586 -0.845996 3458 25 +0.033646 0.152582 0 1 0.06393 -0.827536 1080 24 +0.011836 0.28403 0 1 0.140196 -0.876618 4702 24 +0.011836 0.28403 0 1 0.111523 -0.86908 2317 25 +0.017229 0.219974 0 1 0.086308 -0.549937 14796 24 +0.021055 0.180841 0 1 0.073808 -0.549937 4483 24 +0.033646 0.129441 0 1 0.101886 -0.845996 4435 24 +0.033646 0.109872 0 1 0.140196 -0.859355 6646 24 +0.023678 0.219974 0 1 0.123692 -0.845996 51105 24 +1.14252 0.180841 0 1 0.073808 -0.89835 737 24 +1.14252 0.092442 0 1 0.073808 -0.890924 580 28 +0.017229 0.219974 1 1 0.123692 -0.86908 982 24 +0.023678 0.109872 0 1 0.123692 -0.549937 62057 24 +0.02733 0.061265 0 1 0.111523 -0.549937 4350 24 +0.033646 0.109872 0 1 0.167595 -0.86908 4389 24 +1.14252 0.02677 0 1 0.123692 -0.827536 7070 24 +1.14252 0.02677 1 1 0.123692 -0.887208 597 25 +0.014264 0.129441 1 1 0.111523 -0.549937 973 24 +0.02733 0.219974 0 1 0.167595 -0.896382 24562 24 +0.023678 0.219974 0 1 0.567647 -0.89835 1872 25 +0.023678 0.219974 0 1 0.140196 -0.893946 3194 24 +0.023678 0.219974 0 1 0.167595 -0.893946 3118 24 +0.01568 0.152582 1 1 0.111523 -0.827536 972 24 +0.014264 0.180841 1 1 0.111523 -0.549937 1667 24 +0.01568 0.219974 1 1 0.093586 -0.827536 626 28 +0.021055 0.180841 1 1 0.07966 -0.827536 828 24 +0.018999 0.152582 1 1 0.093586 -0.827536 640 28 +0.023678 0.152582 1 1 0.086308 -0.827536 551 27 +1.14252 0.061265 0 1 0.086308 -0.86908 729 24 +0.033646 0.152582 0 1 0.086308 -0.827536 38062 24 +0.011836 0.28403 0 1 0.167595 -0.827536 64414 24 +0.01081 0.28403 0 1 0.567647 -0.86908 559 24 +0.02733 0.219974 0 1 0.140196 -0.88244 63805 24 +0.02733 0.219974 6 1 0.111523 -0.893946 508 24 +0.02733 0.180841 0 1 0.140196 -0.827536 208267 24 +0.02733 0.219974 0 1 0.101886 -0.859355 31595 24 +0.02733 0.129441 0 1 0.167595 -0.827536 12251 24 +0.02733 0.219974 0 1 0.101886 -0.845996 16280 24 +0.02733 0.219974 1 1 0.093586 -0.876618 1704 24 +0.023678 0.180841 1 1 0.111523 -0.876618 610 25 +0.023678 0.180841 1 1 0.123692 -0.86908 5870 24 +0.02733 0.180841 6 1 0.123692 -0.890924 1555 24 +0.02733 0.152582 1 1 0.123692 -0.887208 1322 24 +0.02733 0.180841 1 1 0.123692 -0.887208 528 24 +0.033646 0.129441 1 1 0.111523 -0.887208 1255 24 +0.033646 0.180841 6 1 0.123692 -0.896382 1227 24 +0.023678 0.219974 6 1 0.123692 -0.887208 1460 24 +0.02733 0.219974 1 1 0.123692 -0.887208 1483 24 +0.014264 0.109872 1 1 0.167595 -0.827536 1205 24 +0.021055 0.219974 0 1 0.111523 -0.827536 8673 24 +0.021055 0.219974 0 1 0.167595 -0.876618 9870 24 +0.023678 0.076343 0 1 0.140196 -0.549937 5051 24 +0.021055 0.109872 0 1 0.140196 -0.549937 5600 24 +0.011836 0.180841 6 2 0.073808 -0.89835 721 24 +0.033646 0.129441 0 1 0.167595 -0.88244 9369 24 +0.023678 0.180841 0 1 0.167595 -0.859355 24715 24 +0.023678 0.219974 0 1 0.167595 -0.887208 8296 24 +0.017229 0.092442 1 1 0.093586 -0.549937 719 24 +0.033646 0.076343 0 1 0.140196 -0.827536 5990 24 +0.023678 0.180841 0 1 0.167595 -0.845996 21558 24 +0.017229 0.180841 0 1 0.167595 -0.827536 3951 25 +0.018999 0.180841 0 1 0.167595 -0.827536 5274 24 +0.02733 0.109872 0 1 0.068607 -0.549937 4532 24 +0.033646 0.092442 0 1 0.140196 -0.827536 6900 24 +0.017229 0.28403 0 1 0.101886 -0.887208 8564 24 +0.017229 0.28403 0 1 0.111523 -0.893946 1223 24 +0.021055 0.109872 0 1 0.567647 -0.86908 1665 24 +0.02733 0.129441 1 1 0.140196 -0.887208 3567 24 +0.023678 0.129441 1 1 0.140196 -0.876618 1331 25 +0.023678 0.152582 1 1 0.140196 -0.890924 626 25 +0.023678 0.129441 1 1 0.167595 -0.887208 2757 24 +0.02733 0.129441 1 1 0.167595 -0.896382 1457 24 +0.033646 0.152582 0 1 0.140196 -0.86908 87248 24 +0.033646 0.152582 0 1 0.167595 -0.893946 1987 26 +0.033646 0.129441 0 1 0.167595 -0.876618 3018 24 +0.033646 0.129441 0 1 0.167595 -0.86908 3846 24 +0.013018 0.28403 1 1 0.073808 -0.827536 1898 24 +0.02733 0.180841 0 1 0.167595 -0.88244 13517 24 +0.023678 0.219974 0 1 0.101886 -0.827536 12798 24 +0.021055 0.219974 0 1 0.123692 -0.827536 27482 24 +0.017229 0.219974 0 1 0.140196 -0.827536 7969 24 +0.013018 0.28403 0 1 0.167595 -0.88244 7799 24 +0.013018 0.28403 1 1 0.07966 -0.86908 761 26 +0.023678 0.180841 1 1 0.111523 -0.827536 14632 24 +0.02733 0.180841 1 1 0.068607 -0.827536 554 24 +0.023678 0.219974 1 1 0.086308 -0.845996 968 24 +0.017229 0.180841 1 1 0.140196 -0.845996 4258 24 +0.017229 0.152582 1 1 0.167595 -0.859355 719 26 +0.017229 0.152582 1 1 0.140196 -0.827536 1700 25 +0.018999 0.152582 1 1 0.167595 -0.86908 800 24 +0.017229 0.180841 1 1 0.123692 -0.827536 793 24 +0.01568 0.180841 1 1 0.140196 -0.827536 698 25 +0.021055 0.180841 1 1 0.567647 -0.89835 708 24 +0.017229 0.180841 1 1 0.567647 -0.890924 557 24 +0.011836 0.28403 0 1 0.567647 -0.827536 10121 24 +0.013018 0.219974 0 1 0.567647 -0.827536 1229 24 +0.011836 0.28403 1 1 0.567647 -0.845996 7242 24 +0.011836 0.219974 1 1 0.167595 -0.827536 1421 24 +0.011836 0.129441 1 1 0.167595 -0.549937 740 24 +0.033646 0.152582 6 1 0.140196 -0.89835 705 24 +0.02733 0.152582 1 1 0.140196 -0.893946 510 24 +0.033646 0.152582 1 1 0.140196 -0.896382 567 25 +0.017229 0.28403 0 1 0.093586 -0.88244 6797 24 +0.014264 0.28403 1 1 0.101886 -0.88244 1144 25 +0.021055 0.28403 6 1 0.06393 -0.876618 822 24 +0.021055 0.28403 0 1 0.06393 -0.827536 3694 24 +0.023678 0.28403 6 1 0.06393 -0.86908 680 25 +0.018999 0.28403 1 1 0.093586 -0.859355 60140 24 +0.018999 0.28403 0 1 0.073808 -0.845996 3865 25 +0.01568 0.28403 1 1 0.07966 -0.845996 2363 25 +0.013018 0.28403 1 1 0.086308 -0.827536 2939 25 +0.018999 0.28403 0 1 0.073808 -0.827536 4719 24 +0.01568 0.28403 1 1 0.07966 -0.827536 1978 25 +0.014264 0.28403 1 1 0.086308 -0.827536 2465 25 +0.01568 0.28403 0 1 0.073808 -0.549937 3819 24 +0.021055 0.28403 0 1 0.068607 -0.876618 508 24 +0.014264 0.28403 1 1 0.093586 -0.845996 3034 24 +0.017229 0.28403 0 1 0.068607 -0.549937 985 24 +0.021055 0.28403 0 1 0.093586 -0.890924 4174 24 +0.023678 0.28403 0 1 0.07966 -0.890924 1095 24 +0.021055 0.28403 0 1 0.068607 -0.859355 735 24 +0.023678 0.28403 0 1 0.068607 -0.86908 924 25 +0.013018 0.28403 1 1 0.101886 -0.827536 9934 24 +0.014264 0.28403 1 1 0.101886 -0.86908 2738 25 +0.021055 0.28403 0 1 0.07966 -0.859355 5560 24 +0.023678 0.28403 0 1 0.07966 -0.876618 2833 24 +0.013018 0.28403 0 1 0.167595 -0.876618 7038 24 +0.013018 0.28403 0 1 0.111523 -0.86908 1648 24 +0.033646 0.044902 1 1 0.111523 -0.86908 702 24 +0.02733 0.092442 0 1 0.101886 -0.549937 22421 24 +0.017229 0.28403 0 1 0.07966 -0.845996 934 24 +1.14252 0.061265 0 1 0.167595 -0.89835 934 24 +0.033646 0.109872 0 1 0.06393 -0.549937 3735 24 +0.033646 0.180841 0 1 0.068607 -0.845996 7221 24 +0.033646 0.180841 6 1 0.07966 -0.893946 776 26 +0.033646 0.180841 0 1 0.123692 -0.893946 7427 24 +0.033646 0.180841 0 1 0.093586 -0.890924 3020 24 +0.033646 0.180841 0 1 0.073808 -0.876618 1708 25 +0.021055 0.28403 0 1 0.086308 -0.887208 698 24 +0.018999 0.219974 0 1 0.567647 -0.86908 25550 24 +0.014264 0.219974 0 1 0.567647 -0.845996 1988 24 +0.017229 0.219974 0 1 0.567647 -0.859355 3325 24 +0.014264 0.219974 1 1 0.567647 -0.88244 1219 24 +0.018999 0.180841 0 1 0.567647 -0.859355 1649 24 +0.02733 0.28403 6 1 0.07966 -0.893946 1392 24 +0.021055 0.219974 0 1 0.567647 -0.896382 926 24 +0.017229 0.219974 0 1 0.567647 -0.845996 10646 24 +0.018999 0.152582 0 1 0.167595 -0.549937 14347 24 +0.021055 0.180841 0 1 0.07966 -0.549937 6478 24 +0.023678 0.219974 0 1 0.167595 -0.876618 20119 24 +0.033646 0.180841 0 1 0.111523 -0.86908 50609 24 +0.033646 0.180841 0 1 0.086308 -0.859355 5077 25 +0.033646 0.152582 1 1 0.093586 -0.86908 5084 24 +0.033646 0.076343 1 1 0.07966 -0.859355 774 24 +1.14252 0.02677 6 1 0.073808 -0.845996 822 26 +0.033646 0.02677 1 1 0.111523 -0.845996 1435 26 +0.033646 0.180841 6 1 0.068607 -0.859355 518 24 +0.033646 0.109872 1 1 0.111523 -0.86908 5938 24 +0.02733 0.152582 1 1 0.111523 -0.88244 602 28 +0.02733 0.092442 1 1 0.123692 -0.88244 527 24 +0.02733 0.109872 1 1 0.101886 -0.859355 509 24 +0.02733 0.152582 1 1 0.093586 -0.827536 4507 24 +0.033646 0.152582 1 1 0.07966 -0.859355 551 24 +0.02733 0.109872 1 1 0.101886 -0.827536 1832 24 +0.02733 0.180841 1 1 0.086308 -0.827536 701 24 +0.021055 0.28403 0 1 0.068607 -0.827536 1154 24 +0.018999 0.219974 0 1 0.167595 -0.827536 37600 24 +0.014264 0.219974 0 1 0.567647 -0.827536 1613 24 +0.014264 0.28403 1 1 0.101886 -0.845996 4377 24 +0.02733 0.219974 0 1 0.07966 -0.827536 5753 24 +1.14252 0.076343 0 1 0.111523 -0.890924 7584 24 +1.14252 0.152582 0 1 0.07966 -0.89835 781 29 +1.14252 0.092442 0 1 0.101886 -0.89835 806 26 +1.14252 0.109872 0 1 0.093586 -0.89835 638 25 +1.14252 0.076343 0 1 0.07966 -0.876618 1345 24 +1.14252 0.061265 0 1 0.123692 -0.890924 2090 24 +1.14252 0.044902 1 1 0.140196 -0.896382 871 25 +1.14252 0.076343 0 1 0.093586 -0.88244 2048 24 +0.021055 0.219974 0 1 0.140196 -0.827536 12177 24 +0.021055 0.152582 0 1 0.123692 -0.549937 61750 24 +0.021055 0.129441 1 1 0.111523 -0.549937 19404 24 +0.021055 0.044902 1 1 0.123692 -0.549937 1555 25 +0.01568 0.092442 1 1 0.123692 -0.549937 849 26 +0.017229 0.044902 1 1 0.167595 -0.549937 1031 25 +0.01568 0.076343 1 1 0.140196 -0.549937 607 25 +0.017229 0.180841 1 1 0.07966 -0.549937 511 24 +0.01568 0.076343 1 1 0.567647 -0.827536 691 24 +0.017229 0.109872 1 1 0.167595 -0.827536 1846 24 +0.011836 0.129441 1 1 0.567647 -0.549937 508 24 +0.02733 0.180841 0 1 0.167595 -0.876618 5506 24 +0.021055 0.129441 0 1 0.140196 -0.549937 4817 24 +0.021055 0.180841 0 1 0.086308 -0.549937 9159 24 +0.023678 0.061265 1 1 0.101886 -0.549937 3205 24 +0.023678 0.076343 1 1 0.086308 -0.549937 669 25 +0.023678 0.02677 1 1 0.123692 -0.549937 957 24 +0.023678 0.092442 1 1 0.140196 -0.86908 686 24 +0.033646 0.219974 0 1 0.093586 -0.887208 12114 24 +0.033646 0.219974 6 1 0.06393 -0.876618 599 28 +0.033646 0.28403 0 1 0.06393 -0.88244 792 24 +0.02733 0.28403 0 1 0.068607 -0.876618 785 26 +0.01568 0.28403 0 1 0.167595 -0.86908 100273 24 +0.013018 0.28403 1 1 0.140196 -0.86908 851 25 +0.02733 0.044902 0 1 0.123692 -0.549937 1597 24 +0.033646 0.129441 0 1 0.140196 -0.859355 5247 24 +0.014264 0.28403 0 1 0.567647 -0.893946 2278 24 +0.013018 0.28403 0 1 0.567647 -0.876618 2630 24 +0.021055 0.180841 0 1 0.567647 -0.887208 911 24 +0.033646 0.109872 0 1 0.567647 -0.896382 2959 24 +0.02733 0.109872 0 1 0.567647 -0.893946 618 25 +0.033646 0.180841 0 1 0.567647 -0.89835 4376 24 +0.033646 0.180841 0 1 0.123692 -0.890924 2958 24 +0.033646 0.152582 0 1 0.093586 -0.859355 3183 24 +1.14252 0.076343 0 1 0.086308 -0.876618 682 24 +0.01568 0.152582 1 1 0.167595 -0.827536 3178 24 +0.017229 0.129441 1 1 0.167595 -0.827536 787 24 +0.018999 0.129441 1 1 0.167595 -0.827536 4474 24 +0.033646 0.152582 0 1 0.101886 -0.845996 13367 24 +0.021055 0.109872 1 1 0.167595 -0.859355 1356 24 +0.02733 0.180841 0 1 0.167595 -0.845996 25311 24 +0.033646 0.180841 0 1 0.086308 -0.845996 6313 24 +0.033646 0.076343 1 1 0.123692 -0.88244 675 24 +0.033646 0.109872 0 1 0.167595 -0.845996 22249 24 +0.014264 0.28403 0 1 0.567647 -0.887208 1571 24 +0.017229 0.28403 0 1 0.140196 -0.887208 16383 24 +0.017229 0.28403 1 1 0.111523 -0.86908 14578 24 +0.01568 0.28403 1 1 0.101886 -0.859355 2475 24 +0.023678 0.152582 0 1 0.093586 -0.549937 36753 24 +0.02733 0.129441 0 1 0.07966 -0.549937 18056 24 +0.023678 0.180841 0 1 0.07966 -0.549937 6521 24 +0.023678 0.219974 0 1 0.167595 -0.845996 88712 24 +0.033646 0.180841 1 1 0.086308 -0.86908 672 24 +0.014264 0.219974 0 1 0.140196 -0.549937 23057 23 +0.018999 0.180841 0 1 0.111523 -0.549937 37130 23 +0.033646 0.152582 0 1 0.140196 -0.845996 60799 23 +1.14252 0.061265 0 1 0.111523 -0.827536 38997 23 +0.02733 0.219974 0 1 0.123692 -0.859355 44228 23 +0.01568 0.28403 0 1 0.167595 -0.859355 42536 23 +0.033646 0.180841 0 1 0.140196 -0.876618 37367 23 +0.018999 0.180841 0 1 0.140196 -0.549937 29283 23 +0.023678 0.180841 0 1 0.567647 -0.859355 50178 23 +0.014264 0.28403 0 1 0.167595 -0.827536 70941 23 +0.023678 0.28403 6 1 0.111523 -0.887208 50035 23 +0.02733 0.28403 0 1 0.093586 -0.876618 27717 23 +0.023678 0.28403 0 1 0.123692 -0.887208 37404 23 +0.021055 0.219974 0 1 0.567647 -0.845996 36308 23 +0.017229 0.28403 1 1 0.140196 -0.86908 30590 23 +0.023678 0.129441 0 1 0.140196 -0.549937 35102 23 +0.033646 0.219974 0 1 0.101886 -0.86908 35910 23 +0.033646 0.219974 0 1 0.123692 -0.88244 36126 23 +0.033646 0.180841 0 1 0.111523 -0.845996 33414 23 +0.023678 0.152582 0 1 0.567647 -0.827536 29828 23 +0.02733 0.152582 0 1 0.567647 -0.845996 45180 23 +0.021055 0.28403 0 1 0.086308 -0.827536 26301 23 +0.02733 0.152582 0 1 0.093586 -0.549937 46113 23 +0.01568 0.28403 0 1 0.167595 -0.827536 59105 23 +0.023678 0.180841 0 1 0.567647 -0.827536 32211 23 +0.02733 0.219974 0 1 0.140196 -0.859355 31997 23 +0.018999 0.28403 0 1 0.123692 -0.86908 30329 23 +0.021055 0.219974 0 1 0.093586 -0.549937 40013 23 +1.14252 0.076343 0 1 0.111523 -0.845996 28851 23 +1.14252 0.152582 0 1 0.068607 -0.827536 29558 23 +0.02733 0.219974 0 1 0.140196 -0.845996 37525 23 +0.033646 0.129441 0 1 0.140196 -0.827536 35287 23 +0.023678 0.219974 0 1 0.167595 -0.827536 64140 23 +0.033646 0.152582 0 1 0.140196 -0.827536 39575 23 +0.033646 0.180841 0 1 0.111523 -0.827536 32182 23 +0.023678 0.152582 0 1 0.123692 -0.549937 28472 23 +0.02733 0.109872 0 1 0.140196 -0.549937 53079 23 +0.02733 0.219974 0 1 0.167595 -0.876618 30952 23 +1.14252 0.109872 0 1 0.101886 -0.876618 32076 23 +0.018999 0.180841 1 1 0.567647 -0.845996 25853 23 +0.023678 0.180841 1 1 0.167595 -0.845996 65990 23 +0.02733 0.109872 1 1 0.167595 -0.845996 29942 23 +0.02733 0.180841 1 1 0.140196 -0.845996 30089 23 +0.033646 0.180841 0 1 0.167595 -0.876618 39739 23 +0.02733 0.180841 1 1 0.140196 -0.827536 36125 23 +0.023678 0.219974 1 1 0.167595 -0.86908 29337 23 +0.021055 0.28403 1 1 0.123692 -0.86908 41168 23 +0.02733 0.219974 0 1 0.167595 -0.845996 40767 23 +0.023678 0.28403 0 1 0.140196 -0.890924 35611 23 +1.14252 0.092442 0 1 0.123692 -0.86908 33002 23 +0.033646 0.180841 0 1 0.123692 -0.827536 39244 23 +0.018999 0.219974 0 1 0.123692 -0.549937 66567 23 +0.01568 0.28403 0 1 0.567647 -0.827536 41285 23 +0.021055 0.152582 0 1 0.567647 -0.549937 38291 23 +0.018999 0.28403 1 1 0.123692 -0.859355 29494 23 +0.021055 0.28403 1 1 0.101886 -0.845996 28976 23 +0.017229 0.28403 1 1 0.167595 -0.86908 29013 23 +0.011836 0.28403 0 1 0.567647 -0.549937 29705 23 +0.023678 0.28403 0 1 0.101886 -0.859355 26597 23 +0.033646 0.28403 0 1 0.073808 -0.827536 28588 23 +0.021055 0.180841 0 1 0.123692 -0.549937 28703 23 +0.033646 0.180841 0 1 0.140196 -0.827536 46039 23 +0.02733 0.219974 0 1 0.07966 -0.549937 25520 23 +0.033646 0.092442 1 1 0.140196 -0.827536 37511 23 +0.033646 0.076343 0 1 0.07966 -0.549937 25674 23 +0.02733 0.219974 0 1 0.111523 -0.827536 28337 23 +0.018999 0.28403 1 1 0.167595 -0.876618 44687 23 +0.018999 0.28403 1 1 0.140196 -0.859355 25854 23 +0.017229 0.28403 0 1 0.567647 -0.859355 25996 23 +0.023678 0.28403 0 1 0.140196 -0.876618 59953 23 +0.018999 0.28403 0 1 0.167595 -0.845996 81436 23 +0.017229 0.28403 0 1 0.140196 -0.827536 29626 23 +0.021055 0.28403 0 1 0.123692 -0.845996 30469 23 +0.023678 0.28403 0 1 0.123692 -0.859355 30057 23 +1.14252 0.076343 0 1 0.140196 -0.827536 66281 23 +0.033646 0.219974 0 1 0.123692 -0.845996 98688 23 +0.033646 0.180841 0 1 0.167595 -0.859355 36283 23 +0.023678 0.219974 0 1 0.567647 -0.827536 51114 23 +0.033646 0.180841 1 1 0.123692 -0.845996 33084 23 +0.02733 0.129441 0 1 0.140196 -0.549937 32896 23 +1.14252 0.109872 0 1 0.140196 -0.86908 47930 23 +0.023678 0.180841 0 1 0.111523 -0.549937 34061 23 +1.14252 0.152582 0 1 0.093586 -0.859355 59220 23 +1.14252 0.092442 0 1 0.111523 -0.827536 27152 23 +0.033646 0.152582 0 1 0.167595 -0.827536 50373 23 +0.033646 0.180841 0 1 0.167595 -0.827536 39270 23 +0.018999 0.28403 0 1 0.140196 -0.827536 37011 23 +0.033646 0.219974 0 1 0.123692 -0.827536 62504 23 +0.017229 0.219974 1 1 0.567647 -0.827536 27137 23 +0.033646 0.076343 0 1 0.101886 -0.549937 31157 23 +0.018999 0.180841 1 1 0.140196 -0.549937 32484 23 +0.02733 0.152582 0 1 0.123692 -0.549937 32900 23 +0.021055 0.129441 1 1 0.167595 -0.549937 25113 23 +0.02733 0.28403 1 1 0.111523 -0.859355 74772 23 +0.021055 0.28403 0 1 0.140196 -0.845996 32438 23 +0.033646 0.219974 0 1 0.167595 -0.887208 46738 23 +0.02733 0.180841 1 1 0.167595 -0.845996 26013 23 +1.14252 0.180841 0 1 0.101886 -0.86908 57910 22 +0.023678 0.28403 0 1 0.123692 -0.845996 32532 22 +0.021055 0.219974 1 1 0.111523 -0.549937 32212 22 +0.02733 0.219974 0 1 0.167595 -0.827536 37726 22 +1.14252 0.129441 0 1 0.111523 -0.827536 83395 22 +0.02733 0.28403 0 1 0.093586 -0.827536 29956 22 +0.033646 0.219974 0 1 0.167595 -0.876618 38222 22 +0.033646 0.152582 1 1 0.167595 -0.876618 28167 22 +0.021055 0.219974 1 1 0.567647 -0.845996 30717 22 +0.017229 0.219974 0 1 0.167595 -0.549937 35880 22 +1.14252 0.109872 0 1 0.140196 -0.845996 26882 22 +0.02733 0.180841 0 1 0.567647 -0.827536 43429 22 +0.02733 0.28403 0 1 0.101886 -0.827536 26090 22 +0.02733 0.180841 0 1 0.123692 -0.549937 68083 22 +0.033646 0.180841 0 1 0.073808 -0.549937 29108 22 +0.033646 0.28403 0 1 0.111523 -0.876618 51161 22 +1.14252 0.152582 0 1 0.123692 -0.88244 28923 22 +0.033646 0.180841 1 1 0.140196 -0.827536 38712 22 +0.021055 0.28403 0 1 0.167595 -0.88244 25890 22 +0.02733 0.219974 0 1 0.567647 -0.859355 36124 22 +0.02733 0.28403 1 1 0.123692 -0.88244 25518 22 +1.14252 0.152582 0 1 0.101886 -0.827536 29619 22 +0.02733 0.28403 0 1 0.140196 -0.859355 126527 22 +0.018999 0.28403 0 1 0.567647 -0.845996 38745 22 +0.023678 0.28403 0 1 0.123692 -0.827536 43320 22 +0.033646 0.219974 0 1 0.167595 -0.845996 96703 22 +0.033646 0.076343 0 1 0.140196 -0.549937 28281 22 +0.018999 0.28403 0 1 0.567647 -0.827536 38728 22 +0.021055 0.219974 0 1 0.140196 -0.549937 51248 22 +0.02733 0.129441 0 1 0.167595 -0.549937 29166 22 +0.014264 0.28403 0 1 0.140196 -0.549937 36005 22 +1.14252 0.129441 0 1 0.140196 -0.845996 44769 22 +0.02733 0.180841 0 1 0.140196 -0.549937 51438 22 +0.023678 0.28403 0 1 0.140196 -0.827536 50522 22 +0.033646 0.109872 0 1 0.123692 -0.549937 59481 22 +0.02733 0.180841 2 1 0.167595 -0.827536 34573 22 +0.033646 0.129441 1 1 0.567647 -0.88244 27980 22 +0.013018 0.129441 6 2 0.07966 -0.876618 25769 22 +1.14252 0.076343 1 1 0.111523 -0.827536 27579 22 +0.033646 0.28403 1 1 0.101886 -0.859355 26398 22 +1.14252 0.180841 0 1 0.123692 -0.876618 40364 22 +1.14252 0.152582 0 1 0.140196 -0.845996 72194 22 +0.02733 0.28403 0 1 0.167595 -0.887208 56769 22 +0.02733 0.28403 0 1 0.123692 -0.827536 51240 22 +0.033646 0.28403 0 1 0.140196 -0.887208 46643 22 +0.023678 0.28403 0 1 0.167595 -0.845996 116679 22 +0.023678 0.219974 0 1 0.111523 -0.549937 36974 22 +0.02733 0.076343 1 1 0.167595 -0.549937 27784 22 +0.02733 0.219974 2 1 0.140196 -0.827536 27109 22 +0.023678 0.092442 0 2 0.093586 -0.893946 27147 22 +0.021055 0.28403 0 1 0.567647 -0.859355 37265 22 +1.14252 0.092442 0 1 0.167595 -0.827536 63173 22 +0.033646 0.129441 0 1 0.140196 -0.549937 62223 22 +0.02733 0.219974 1 1 0.167595 -0.827536 27955 22 +0.033646 0.061265 0 2 0.073808 -0.876618 29146 22 +0.02733 0.092442 6 2 0.06393 -0.845996 27664 22 +0.01568 0.044902 6 2 0.07966 -0.549937 27661 22 +1.14252 0.180841 0 1 0.111523 -0.845996 41356 22 +1.14252 0.219974 0 1 0.093586 -0.827536 62977 22 +0.033646 0.28403 0 1 0.101886 -0.827536 32248 22 +1.14252 0.092442 1 1 0.123692 -0.827536 25024 22 +0.033646 0.219974 0 1 0.167595 -0.827536 46012 22 +0.023678 0.180841 0 1 0.167595 -0.549937 30515 22 +0.033646 0.152582 0 1 0.567647 -0.845996 52429 22 +1.14252 0.219974 0 1 0.123692 -0.887208 29655 22 +1.14252 0.109872 0 1 0.167595 -0.827536 37119 22 +0.011836 0.129441 6 2 0.123692 -0.86908 26749 22 +0.014264 0.092442 0 2 0.073808 -0.549937 26612 22 +0.02733 0.180841 1 1 0.111523 -0.549937 31857 22 +0.033646 0.044902 0 2 0.101886 -0.876618 28647 22 +1.14252 0.076343 0 1 0.086308 -0.549937 29314 22 +0.023678 0.28403 0 1 0.567647 -0.876618 31592 22 +0.021055 0.044902 0 2 0.086308 -0.827536 27372 22 +0.023678 0.219974 0 1 0.140196 -0.549937 37588 22 +0.017229 0.076343 1 2 0.140196 -0.876618 27274 22 +0.023678 0.092442 0 2 0.101886 -0.88244 26940 22 +0.021055 0.092442 0 2 0.073808 -0.827536 28204 22 +0.033646 0.180841 1 1 0.567647 -0.876618 53926 22 +0.02733 0.28403 0 1 0.167595 -0.86908 43501 22 +0.023678 0.28403 0 1 0.167595 -0.827536 41141 22 +0.018999 0.219974 1 1 0.167595 -0.549937 34693 22 +1.14252 0.219974 0 1 0.111523 -0.845996 45522 22 +0.01081 1.75492 0 1 0.567647 -0.859355 31046 22 +1.14252 0.152582 1 1 0.111523 -0.827536 38466 22 +0.033646 0.180841 1 1 0.086308 -0.549937 29299 22 +0.018999 0.180841 2 1 0.567647 -0.549937 26270 22 +0.033646 0.28403 0 1 0.123692 -0.86908 31673 22 +1.14252 0.152582 0 1 0.167595 -0.86908 45191 21 +1.14252 0.219974 0 1 0.123692 -0.86908 25777 21 +1.14252 0.219974 0 1 0.111523 -0.827536 31409 21 +0.023678 0.28403 1 1 0.167595 -0.859355 27203 21 +0.017229 0.28403 1 1 0.567647 -0.827536 27776 21 +1.14252 0.152582 0 1 0.167595 -0.845996 29214 21 +1.14252 0.180841 0 1 0.123692 -0.827536 44145 21 +0.023678 0.219974 0 1 0.167595 -0.549937 30432 21 +1.14252 0.219974 0 1 0.140196 -0.887208 34835 21 +0.02733 0.28403 0 1 0.140196 -0.827536 44102 21 +0.021055 0.129441 0 2 0.086308 -0.876618 32928 21 +0.033646 0.28403 1 1 0.111523 -0.845996 26914 21 +0.033646 0.044902 0 2 0.086308 -0.827536 28824 21 +0.033646 0.152582 0 1 0.167595 -0.549937 98765 21 +0.017229 0.28403 0 1 0.111523 -0.549937 33763 21 +0.033646 0.129441 6 1 0.167595 -0.827536 30603 21 +0.017229 0.152582 0 2 0.073808 -0.845996 26297 21 +0.033646 0.219974 1 1 0.167595 -0.86908 26677 21 +0.033646 0.219974 0 1 0.567647 -0.876618 30578 21 +0.011836 0.129441 0 2 0.101886 -0.827536 25444 21 +1.14252 0.180841 0 1 0.140196 -0.827536 75935 21 +1.14252 0.180841 0 1 0.167595 -0.86908 40865 21 +0.033646 0.180841 0 1 0.567647 -0.827536 46137 21 +0.01081 1.75492 0 1 0.567647 -0.549937 32003 21 +0.033646 0.109872 0 2 0.086308 -0.876618 28695 21 +0.033646 0.219974 0 1 0.567647 -0.827536 71831 21 +0.023678 0.219974 1 1 0.567647 -0.827536 33784 21 +0.033646 0.28403 0 1 0.123692 -0.845996 28749 21 +0.023678 0.28403 0 1 0.567647 -0.845996 45116 21 +0.021055 0.076343 6 2 0.086308 -0.827536 26738 21 +0.021055 0.109872 1 2 0.167595 -0.890924 25686 21 +0.023678 0.180841 2 1 0.140196 -0.549937 26901 21 +0.02733 0.219974 2 1 0.101886 -0.549937 29504 21 +0.011836 1.75492 0 1 0.567647 -0.827536 72478 21 +0.013018 1.75492 0 1 0.567647 -0.859355 53151 21 +1.14252 0.109872 0 1 0.093586 -0.549937 32739 21 +0.02733 0.28403 0 1 0.167595 -0.827536 77552 21 +1.14252 0.28403 1 1 0.101886 -0.88244 25106 21 +0.023678 0.28403 0 1 0.567647 -0.827536 27549 21 +1.14252 0.180841 1 1 0.123692 -0.845996 28345 21 +0.02733 0.28403 0 1 0.567647 -0.876618 45343 21 +0.033646 0.180841 0 1 0.111523 -0.549937 33010 21 +0.033646 0.28403 0 1 0.167595 -0.890924 28234 21 +0.02733 0.28403 0 1 0.567647 -0.859355 30222 21 +0.014264 1.75492 0 1 0.567647 -0.859355 66644 21 +1.14252 0.129441 1 1 0.140196 -0.859355 25679 21 +1.14252 0.219974 0 1 0.123692 -0.827536 37874 21 +0.033646 0.28403 0 1 0.123692 -0.827536 31845 21 +0.033646 0.28403 0 1 0.140196 -0.827536 110295 21 +0.023678 0.28403 2 1 0.086308 -0.549937 25173 21 +0.014264 1.75492 0 1 0.567647 -0.827536 82911 21 +0.033646 0.044902 0 2 0.101886 -0.827536 28826 21 +0.033646 0.219974 1 1 0.093586 -0.549937 29087 21 +1.14252 0.219974 0 1 0.140196 -0.86908 28494 21 +0.01568 0.28403 0 1 0.567647 -0.549937 43619 21 +0.023678 0.152582 0 2 0.068607 -0.827536 25195 21 +0.02733 0.129441 2 1 0.167595 -0.549937 28396 21 +0.014264 0.092442 0 2 0.123692 -0.827536 26316 21 +0.017229 0.092442 0 2 0.140196 -0.845996 28458 21 +0.02733 0.061265 0 2 0.111523 -0.827536 44861 21 +0.02733 0.076343 0 2 0.101886 -0.827536 26681 21 +0.018999 0.28403 0 1 0.123692 -0.549937 40238 21 +1.14252 0.219974 0 1 0.167595 -0.887208 27232 21 +0.033646 0.180841 0 1 0.140196 -0.549937 37770 21 +0.033646 0.28403 0 1 0.167595 -0.86908 65955 21 +1.14252 0.180841 0 1 0.167595 -0.827536 64392 21 +0.033646 0.129441 0 2 0.086308 -0.86908 26875 21 +0.017229 0.109872 1 2 0.167595 -0.859355 30021 21 +0.033646 0.152582 0 2 0.086308 -0.86908 25830 21 +0.018999 0.109872 0 2 0.101886 -0.827536 29545 21 +0.021055 0.28403 1 1 0.567647 -0.827536 35592 21 +1.14252 0.092442 0 2 0.093586 -0.86908 30140 21 +0.023678 0.092442 0 2 0.111523 -0.827536 28610 21 +1.14252 0.092442 0 1 0.123692 -0.549937 37785 21 +0.02733 0.219974 0 1 0.123692 -0.549937 36698 21 +0.023678 0.152582 0 2 0.086308 -0.845996 25565 21 +0.02733 0.219974 0 1 0.167595 -0.549937 62342 21 +0.023678 0.152582 1 1 0.567647 -0.549937 25142 21 +1.14252 0.219974 0 1 0.167595 -0.86908 38257 21 +0.023678 0.044902 0 2 0.111523 -0.549937 26226 21 +0.01568 1.75492 0 1 0.567647 -0.827536 146924 21 +1.14252 0.129441 2 1 0.140196 -0.827536 25721 21 +0.033646 0.109872 1 2 0.101886 -0.86908 28794 21 +0.033646 0.219974 2 1 0.167595 -0.845996 30614 21 +0.02733 0.28403 1 1 0.167595 -0.845996 31242 21 +0.033646 0.152582 1 1 0.123692 -0.549937 30171 21 +0.033646 0.129441 2 1 0.567647 -0.845996 25407 21 +1.14252 0.219974 0 1 0.140196 -0.827536 54742 21 +1.14252 0.28403 0 1 0.140196 -0.893946 25954 21 +0.02733 0.044902 1 2 0.140196 -0.827536 25335 21 +0.02733 0.219974 1 1 0.567647 -0.845996 25351 20 +0.02733 0.076343 0 2 0.167595 -0.827536 53208 20 +0.017229 0.092442 0 2 0.167595 -0.549937 37558 20 +1.14252 0.076343 0 2 0.086308 -0.827536 26766 20 +1.14252 0.219974 0 1 0.167595 -0.845996 43405 20 +0.023678 0.076343 0 2 0.123692 -0.549937 28582 20 +0.021055 0.109872 0 2 0.167595 -0.845996 28432 20 +0.033646 0.219974 0 1 0.123692 -0.549937 52368 20 +0.023678 1.75492 0 2 0.068607 -0.827536 25986 20 +1.14252 0.219974 1 1 0.123692 -0.827536 27492 20 +0.02733 0.180841 0 1 0.567647 -0.549937 27763 20 +0.033646 0.152582 6 2 0.086308 -0.845996 27994 20 +0.02733 0.092442 0 2 0.140196 -0.827536 25601 20 +0.033646 0.28403 1 1 0.167595 -0.86908 25089 20 +1.14252 0.180841 1 1 0.167595 -0.86908 69009 20 +0.01568 0.129441 6 2 0.093586 -0.549937 25817 20 +0.023678 0.129441 1 2 0.123692 -0.88244 27284 20 +0.033646 0.129441 0 2 0.140196 -0.887208 33182 20 +0.021055 0.129441 0 2 0.101886 -0.827536 25245 20 +0.023678 0.152582 0 2 0.123692 -0.876618 48055 20 +0.02733 0.152582 0 2 0.111523 -0.86908 27057 20 +0.021055 0.219974 1 1 0.567647 -0.549937 33776 20 +1.14252 0.28403 0 1 0.111523 -0.859355 51866 20 +1.14252 0.28403 0 1 0.101886 -0.827536 30777 20 +0.017229 1.75492 0 1 0.567647 -0.845996 148810 20 +0.021055 1.75492 0 1 0.101886 -0.845996 34184 20 +0.021055 0.109872 0 2 0.111523 -0.549937 27772 20 +1.14252 0.129441 0 2 0.093586 -0.845996 34457 20 +0.017229 1.75492 0 1 0.567647 -0.827536 38389 20 +0.023678 0.28403 1 1 0.567647 -0.827536 27599 20 +0.033646 0.076343 0 2 0.093586 -0.549937 27675 20 +0.033646 0.28403 0 1 0.167595 -0.845996 60327 20 +0.033646 0.219974 1 1 0.567647 -0.859355 30259 20 +1.14252 0.092442 0 2 0.101886 -0.827536 27853 20 +1.14252 0.219974 0 1 0.167595 -0.827536 29686 20 +0.018999 0.28403 0 1 0.140196 -0.549937 25561 20 +0.033646 0.092442 0 2 0.123692 -0.827536 25245 20 +1.14252 0.152582 0 1 0.567647 -0.876618 43748 20 +0.033646 0.109872 0 2 0.093586 -0.549937 31289 20 +1.14252 0.219974 1 1 0.167595 -0.859355 56622 20 +0.018999 1.75492 0 1 0.567647 -0.890924 33807 20 +1.14252 0.129441 0 2 0.07966 -0.549937 32916 20 +0.023678 0.129441 0 2 0.140196 -0.845996 37572 20 +1.14252 0.109872 0 2 0.111523 -0.845996 27534 20 +0.018999 0.28403 0 1 0.167595 -0.549937 26764 20 +0.02733 0.219974 1 1 0.140196 -0.549937 25922 20 +0.021055 0.28403 0 1 0.123692 -0.549937 38580 20 +1.14252 0.109872 0 1 0.140196 -0.549937 34074 20 +0.02733 1.75492 0 1 0.101886 -0.859355 39177 20 +0.02733 0.180841 0 2 0.073808 -0.549937 25896 20 +0.023678 0.129441 0 2 0.140196 -0.827536 25783 20 +0.023678 0.109872 0 2 0.567647 -0.549937 48743 20 +1.14252 0.180841 0 1 0.093586 -0.549937 37478 20 +0.02733 0.28403 0 1 0.567647 -0.827536 43516 20 +1.14252 0.152582 0 1 0.567647 -0.859355 31776 20 +0.02733 0.152582 0 2 0.123692 -0.859355 33146 20 +0.021055 0.152582 0 2 0.140196 -0.845996 31828 20 +0.02733 1.75492 0 1 0.111523 -0.859355 44674 20 +0.033646 0.129441 1 1 0.167595 -0.549937 28822 20 +0.02733 0.092442 1 2 0.167595 -0.827536 27023 20 +0.033646 0.28403 0 1 0.167595 -0.827536 39998 20 +0.02733 0.180841 0 2 0.086308 -0.845996 26817 20 +0.033646 0.109872 0 2 0.140196 -0.827536 31369 20 +1.14252 0.28403 0 1 0.123692 -0.827536 98900 20 +0.033646 0.28403 0 1 0.567647 -0.86908 84677 20 +0.033646 0.152582 1 2 0.111523 -0.845996 39286 20 +0.023678 0.180841 0 2 0.111523 -0.876618 32893 20 +0.018999 1.75492 0 1 0.567647 -0.827536 188740 20 +1.14252 0.152582 1 1 0.167595 -0.827536 41867 20 +0.023678 0.129441 0 2 0.140196 -0.549937 27317 20 +0.014264 1.75492 0 1 0.567647 -0.549937 42060 20 +1.14252 0.180841 0 1 0.567647 -0.86908 31611 20 +1.14252 0.152582 1 1 0.101886 -0.549937 32073 20 +0.02733 0.219974 6 2 0.093586 -0.86908 35183 20 +0.02733 0.28403 2 1 0.093586 -0.549937 25055 20 +1.14252 0.129441 0 1 0.567647 -0.827536 33642 20 +0.02733 0.152582 0 2 0.123692 -0.827536 46801 20 +0.033646 0.180841 2 1 0.567647 -0.827536 41862 20 +0.033646 0.129441 0 2 0.167595 -0.86908 29320 20 +1.14252 0.28403 0 1 0.140196 -0.859355 72001 20 +0.023678 1.75492 0 1 0.111523 -0.827536 27331 20 +0.02733 0.152582 0 2 0.101886 -0.549937 32415 20 +0.017229 0.152582 0 2 0.567647 -0.549937 29023 20 +1.14252 0.061265 0 2 0.167595 -0.827536 30670 20 +0.033646 0.219974 1 1 0.567647 -0.827536 25355 20 +1.14252 0.28403 0 1 0.140196 -0.827536 56418 20 +0.021055 1.75492 0 1 0.167595 -0.887208 29279 20 +1.14252 0.219974 0 2 0.07966 -0.827536 31659 20 +0.033646 0.219974 0 1 0.140196 -0.549937 28990 20 +0.033646 0.152582 0 2 0.140196 -0.827536 57244 20 +0.023678 0.28403 1 1 0.111523 -0.549937 26784 19 +1.14252 0.180841 0 2 0.093586 -0.827536 40981 19 +0.033646 0.28403 0 1 0.567647 -0.845996 53625 19 +0.02733 1.75492 0 1 0.123692 -0.859355 57957 19 +0.021055 1.75492 0 1 0.167595 -0.845996 69974 19 +0.023678 1.75492 0 1 0.140196 -0.859355 34282 19 +0.02733 1.75492 0 1 0.123692 -0.827536 53278 19 +0.02733 0.109872 1 2 0.123692 -0.549937 28422 19 +0.033646 0.180841 0 2 0.111523 -0.859355 33788 19 +0.018999 0.092442 0 3 0.073808 -0.827536 28617 19 +0.018999 0.180841 0 2 0.123692 -0.827536 39549 19 +0.033646 0.180841 1 2 0.123692 -0.86908 26962 19 +1.14252 0.152582 0 1 0.123692 -0.549937 34263 19 +1.14252 0.180841 0 1 0.567647 -0.827536 52696 19 +1.14252 0.180841 2 1 0.167595 -0.827536 30050 19 +0.021055 1.75492 0 1 0.567647 -0.88244 39119 19 +0.033646 0.28403 0 1 0.567647 -0.827536 34989 19 +1.14252 0.109872 1 2 0.123692 -0.845996 30080 19 +0.021055 1.75492 0 1 0.567647 -0.827536 120651 19 +0.033646 1.75492 0 1 0.101886 -0.827536 38262 19 +0.033646 0.152582 2 2 0.167595 -0.86908 38992 19 +0.033646 0.180841 1 1 0.167595 -0.549937 64822 19 +1.14252 0.28403 2 1 0.123692 -0.827536 25695 19 +0.033646 0.28403 1 1 0.167595 -0.827536 30389 19 +1.14252 0.092442 0 2 0.123692 -0.549937 33344 19 +0.021055 0.28403 0 1 0.167595 -0.549937 39889 19 +0.021055 0.28403 0 1 0.567647 -0.549937 26191 19 +0.033646 1.75492 0 1 0.111523 -0.827536 28560 19 +0.033646 0.092442 1 3 0.093586 -0.88244 25655 19 +1.14252 0.129441 0 2 0.140196 -0.827536 50630 19 +1.14252 0.28403 0 1 0.167595 -0.88244 61782 19 +1.14252 0.152582 1 2 0.111523 -0.827536 26061 19 +0.02733 0.092442 1 2 0.567647 -0.549937 27684 19 +0.02733 0.28403 0 1 0.123692 -0.549937 69096 19 +0.02733 0.28403 1 1 0.567647 -0.845996 28246 19 +1.14252 0.219974 0 1 0.567647 -0.88244 33242 19 +1.14252 0.180841 0 1 0.123692 -0.549937 32599 19 +0.023678 1.75492 0 1 0.167595 -0.859355 58529 19 +1.14252 0.219974 0 1 0.567647 -0.827536 91052 19 +0.033646 0.152582 2 2 0.167595 -0.845996 39155 19 +0.02733 0.28403 0 1 0.140196 -0.549937 58688 19 +0.023678 0.28403 0 1 0.167595 -0.549937 29435 19 +0.033646 0.152582 1 1 0.567647 -0.549937 41906 19 +0.023678 0.180841 0 2 0.167595 -0.86908 32044 19 +0.02733 0.152582 6 3 0.073808 -0.845996 28684 19 +1.14252 0.152582 0 1 0.167595 -0.549937 56276 19 +0.02733 0.219974 0 2 0.086308 -0.549937 27412 19 +1.14252 0.180841 1 2 0.111523 -0.827536 39019 19 +1.14252 0.28403 0 1 0.167595 -0.827536 167790 19 +1.14252 0.180841 1 1 0.567647 -0.88244 32561 19 +1.14252 0.152582 1 1 0.567647 -0.859355 28303 19 +0.023678 0.219974 2 1 0.567647 -0.549937 33782 19 +1.14252 0.219974 1 2 0.101886 -0.86908 29462 19 +0.033646 0.219974 0 1 0.167595 -0.549937 30345 19 +0.033646 0.28403 1 1 0.101886 -0.549937 32540 19 +0.023678 1.75492 0 1 0.167595 -0.827536 52057 19 +1.14252 0.180841 0 2 0.123692 -0.827536 40450 19 +0.033646 0.152582 1 2 0.167595 -0.827536 26234 19 +0.02733 0.061265 6 3 0.101886 -0.827536 30357 19 +0.033646 1.75492 0 1 0.123692 -0.859355 30801 19 +0.021055 0.28403 2 1 0.167595 -0.549937 25580 19 +1.14252 0.28403 1 1 0.140196 -0.827536 27576 19 +1.14252 0.219974 0 1 0.111523 -0.549937 35780 19 +1.14252 0.129441 0 2 0.167595 -0.827536 27605 19 +0.033646 0.129441 1 2 0.123692 -0.549937 26745 19 +0.033646 0.28403 1 1 0.567647 -0.859355 37472 19 +0.033646 1.75492 0 3 0.07966 -0.86908 26449 19 +0.02733 0.180841 1 2 0.167595 -0.859355 30823 19 +1.14252 0.109872 2 2 0.167595 -0.827536 28659 19 +1.14252 0.219974 2 2 0.111523 -0.876618 25113 19 +0.023678 0.180841 0 2 0.123692 -0.549937 38060 19 +0.033646 0.219974 0 2 0.101886 -0.827536 38083 19 +1.14252 0.129441 2 2 0.111523 -0.549937 25620 19 +0.02733 0.219974 1 1 0.567647 -0.549937 34156 19 +0.02733 1.75492 0 1 0.140196 -0.845996 54937 19 +0.033646 0.152582 2 2 0.567647 -0.86908 29221 19 +0.02733 0.219974 6 2 0.140196 -0.876618 49780 19 +1.14252 0.180841 0 1 0.167595 -0.549937 36010 19 +0.023678 0.129441 6 3 0.086308 -0.827536 25943 18 +0.033646 0.180841 1 2 0.140196 -0.827536 37464 18 +0.023678 1.75492 0 1 0.567647 -0.88244 53938 18 +0.033646 0.28403 0 1 0.123692 -0.549937 43738 18 +0.02733 0.152582 0 2 0.567647 -0.549937 35446 18 +1.14252 0.28403 1 1 0.167595 -0.859355 32163 18 +0.033646 0.219974 0 2 0.140196 -0.86908 35592 18 +0.033646 1.75492 0 1 0.140196 -0.859355 53602 18 +0.023678 1.75492 0 1 0.567647 -0.827536 134656 18 +1.14252 0.180841 0 2 0.140196 -0.827536 27893 18 +0.021055 0.219974 0 2 0.123692 -0.827536 35746 18 +0.033646 1.75492 0 3 0.07966 -0.827536 31007 18 +0.017229 1.75492 0 1 0.167595 -0.549937 31539 18 +0.021055 0.109872 1 3 0.093586 -0.549937 27908 18 +0.033646 0.180841 1 2 0.111523 -0.549937 26506 18 +1.14252 0.219974 1 1 0.123692 -0.549937 54015 18 +0.033646 1.75492 0 1 0.140196 -0.827536 63536 18 +1.14252 0.180841 1 2 0.167595 -0.876618 29232 18 +1.14252 0.219974 1 1 0.567647 -0.859355 57313 18 +1.14252 0.219974 1 1 0.567647 -0.845996 41033 18 +0.02733 1.75492 0 1 0.167595 -0.876618 46040 18 +0.033646 0.219974 0 1 0.567647 -0.549937 28373 18 +1.14252 0.152582 1 3 0.086308 -0.845996 26857 18 +1.14252 1.75492 0 2 0.07966 -0.549937 25747 18 +0.033646 0.180841 1 2 0.167595 -0.827536 28463 18 +1.14252 0.219974 1 1 0.567647 -0.827536 51156 18 +0.033646 0.219974 0 2 0.123692 -0.827536 31029 18 +0.02733 1.75492 0 1 0.167595 -0.859355 31080 18 +1.14252 1.75492 0 1 0.111523 -0.827536 61061 18 +0.033646 0.109872 1 2 0.567647 -0.549937 30064 18 +0.02733 1.75492 0 1 0.167595 -0.827536 43779 18 +0.02733 0.28403 0 1 0.167595 -0.549937 39284 18 +0.033646 0.061265 0 3 0.123692 -0.549937 26491 18 +0.033646 0.152582 6 3 0.101886 -0.859355 35841 18 +0.033646 0.219974 0 2 0.140196 -0.845996 25893 18 +0.033646 0.219974 2 1 0.167595 -0.549937 29237 18 +1.14252 0.129441 1 1 0.167595 -0.549937 33241 18 +0.02733 1.75492 0 3 0.086308 -0.827536 25342 18 +0.033646 0.28403 1 1 0.567647 -0.827536 30369 18 +1.14252 0.219974 2 2 0.123692 -0.827536 38382 18 +0.023678 0.219974 1 2 0.167595 -0.86908 25312 18 +0.02733 1.75492 0 1 0.567647 -0.88244 73165 18 +0.018999 1.75492 0 1 0.567647 -0.549937 66727 18 +0.033646 1.75492 0 1 0.167595 -0.88244 45921 18 +1.14252 0.28403 2 1 0.167595 -0.827536 29671 18 +0.018999 0.180841 6 2 0.567647 -0.549937 25184 18 +0.018999 0.152582 0 3 0.123692 -0.845996 25024 18 +1.14252 0.28403 0 1 0.567647 -0.86908 127815 18 +1.14252 0.219974 0 1 0.140196 -0.549937 25759 18 +1.14252 0.219974 0 2 0.140196 -0.827536 38364 18 +0.023678 1.75492 0 1 0.123692 -0.549937 25052 18 +0.033646 0.152582 1 2 0.567647 -0.549937 38290 18 +1.14252 0.180841 2 2 0.167595 -0.827536 40606 18 +1.14252 0.28403 0 1 0.567647 -0.859355 38311 18 +0.033646 1.75492 0 1 0.167595 -0.827536 115334 17 +1.14252 0.28403 0 1 0.567647 -0.827536 106241 17 +0.02733 1.75492 0 1 0.567647 -0.86908 53436 17 +0.02733 0.28403 6 2 0.101886 -0.859355 29533 17 +0.033646 0.28403 0 1 0.140196 -0.549937 39257 17 +1.14252 0.092442 2 3 0.111523 -0.827536 30886 17 +0.033646 0.219974 0 2 0.167595 -0.845996 42503 17 +0.02733 1.75492 0 1 0.567647 -0.845996 79264 17 +0.023678 0.28403 1 1 0.567647 -0.549937 54076 17 +1.14252 1.75492 0 1 0.123692 -0.827536 54923 17 +1.14252 0.092442 0 2 0.567647 -0.549937 28879 17 +0.02733 1.75492 0 1 0.567647 -0.827536 52858 17 +0.02733 0.109872 1 3 0.140196 -0.827536 29914 17 +0.033646 0.180841 2 2 0.567647 -0.827536 31847 17 +1.14252 0.180841 1 2 0.123692 -0.549937 32222 17 +0.033646 0.219974 2 2 0.167595 -0.827536 33554 17 +0.02733 0.219974 0 2 0.111523 -0.549937 26161 17 +1.14252 0.129441 0 2 0.567647 -0.549937 30711 17 +0.033646 0.28403 0 1 0.167595 -0.549937 51274 17 +1.14252 0.28403 1 1 0.111523 -0.549937 37330 17 +1.14252 0.28403 1 1 0.567647 -0.887208 25707 17 +0.033646 0.219974 1 3 0.086308 -0.549937 27535 17 +0.02733 0.219974 0 2 0.140196 -0.549937 37133 17 +0.033646 0.152582 6 3 0.111523 -0.827536 27513 17 +1.14252 1.75492 0 1 0.140196 -0.827536 102873 17 +1.14252 0.219974 0 1 0.167595 -0.549937 30776 17 +1.14252 0.219974 3 1 0.567647 -0.859355 25910 17 +1.14252 0.28403 0 3 0.101886 -0.876618 26897 17 +1.14252 0.180841 1 1 0.167595 -0.549937 28086 17 +1.14252 0.28403 2 2 0.101886 -0.827536 30916 17 +0.02733 0.28403 0 1 0.567647 -0.549937 26735 17 +1.14252 0.219974 1 2 0.167595 -0.827536 39965 17 +0.023678 0.219974 2 2 0.567647 -0.827536 27133 17 +1.14252 0.092442 6 3 0.123692 -0.549937 27682 17 +0.02733 1.75492 0 1 0.140196 -0.549937 46495 17 +1.14252 0.28403 1 1 0.123692 -0.549937 31825 17 +0.033646 0.219974 2 1 0.567647 -0.549937 38739 17 +0.033646 0.180841 0 3 0.123692 -0.845996 40890 17 +1.14252 0.152582 0 2 0.567647 -0.549937 25565 17 +0.021055 1.75492 0 1 0.567647 -0.549937 38901 17 +1.14252 0.28403 2 2 0.111523 -0.845996 47703 17 +1.14252 0.129441 0 3 0.140196 -0.827536 31293 17 +1.14252 0.28403 0 1 0.140196 -0.549937 35584 17 +0.033646 0.28403 1 1 0.167595 -0.549937 37005 17 +0.02733 0.219974 6 2 0.167595 -0.549937 34127 16 +0.033646 0.28403 0 1 0.567647 -0.549937 40182 16 +1.14252 0.109872 1 2 0.567647 -0.549937 32264 16 +1.14252 0.28403 1 1 0.567647 -0.845996 78304 16 +0.033646 0.219974 1 2 0.567647 -0.845996 26347 16 +0.02733 0.180841 6 3 0.111523 -0.549937 27653 16 +1.14252 0.180841 0 2 0.567647 -0.549937 49774 16 +1.14252 0.219974 2 1 0.167595 -0.549937 32565 16 +0.033646 1.75492 0 1 0.567647 -0.827536 367548 16 +1.14252 0.28403 2 2 0.123692 -0.86908 45948 16 +0.02733 0.28403 0 2 0.140196 -0.876618 31266 16 +1.14252 0.28403 1 2 0.123692 -0.845996 29840 16 +1.14252 0.152582 1 3 0.140196 -0.845996 25642 16 +1.14252 0.219974 1 2 0.140196 -0.549937 36199 16 +1.14252 1.75492 0 1 0.167595 -0.827536 213907 16 +1.14252 0.28403 1 1 0.567647 -0.827536 28032 16 +1.14252 0.28403 2 3 0.101886 -0.827536 26188 16 +0.02733 1.75492 0 1 0.167595 -0.549937 40569 16 +0.033646 0.28403 0 2 0.123692 -0.827536 27192 16 +1.14252 0.092442 3 3 0.167595 -0.549937 25568 16 +0.033646 1.75492 0 1 0.140196 -0.549937 35099 16 +0.033646 0.28403 0 2 0.140196 -0.859355 34382 16 +0.023678 1.75492 0 1 0.567647 -0.549937 35700 16 +1.14252 0.129441 2 2 0.567647 -0.549937 30423 16 +1.14252 1.75492 0 3 0.093586 -0.549937 31568 16 +1.14252 0.219974 1 3 0.123692 -0.859355 29282 16 +1.14252 0.180841 2 1 0.567647 -0.549937 29503 16 +0.033646 0.180841 0 3 0.140196 -0.827536 25282 16 +0.033646 0.28403 1 2 0.140196 -0.827536 48181 16 +0.033646 0.092442 1 4 0.093586 -0.845996 26249 16 +1.14252 0.219974 0 2 0.567647 -0.827536 31099 16 +0.02733 0.152582 6 3 0.167595 -0.549937 32487 16 +1.14252 0.28403 1 2 0.140196 -0.827536 35015 16 +1.14252 0.28403 2 1 0.567647 -0.845996 25396 16 +0.033646 0.28403 1 2 0.167595 -0.86908 67591 16 +0.02733 0.28403 1 2 0.167595 -0.845996 31430 16 +1.14252 0.28403 0 1 0.167595 -0.549937 53600 16 +0.033646 0.180841 1 3 0.167595 -0.827536 25207 16 +1.14252 0.219974 1 1 0.567647 -0.549937 44241 16 +1.14252 0.180841 1 2 0.567647 -0.549937 29442 16 +0.033646 0.180841 1 4 0.086308 -0.827536 25162 15 +0.033646 0.28403 1 2 0.167595 -0.827536 41280 15 +1.14252 0.28403 0 2 0.167595 -0.827536 42349 15 +0.033646 0.219974 2 2 0.567647 -0.549937 28894 15 +0.02733 0.28403 6 1 0.567647 -0.549937 25773 15 +0.033646 1.75492 0 3 0.101886 -0.549937 28173 15 +0.02733 1.75492 0 1 0.567647 -0.549937 50718 15 +1.14252 0.219974 1 3 0.140196 -0.827536 59021 15 +0.033646 0.152582 1 3 0.567647 -0.549937 26043 15 +1.14252 0.28403 1 1 0.167595 -0.549937 26616 15 +0.02733 0.28403 1 3 0.111523 -0.549937 25802 15 +1.14252 1.75492 0 1 0.140196 -0.549937 30565 15 +0.033646 1.75492 0 1 0.167595 -0.549937 29886 15 +1.14252 0.28403 1 4 0.093586 -0.827536 26508 15 +0.033646 0.28403 0 2 0.567647 -0.876618 31084 15 +1.14252 0.219974 3 2 0.567647 -0.827536 25550 15 +0.033646 0.28403 2 1 0.567647 -0.549937 31790 15 +1.14252 0.28403 0 1 0.567647 -0.549937 52941 15 +1.14252 0.180841 6 3 0.167595 -0.549937 48233 15 +0.033646 0.28403 1 2 0.567647 -0.859355 36810 15 +1.14252 0.129441 1 4 0.101886 -0.549937 27605 15 +1.14252 0.219974 1 3 0.167595 -0.845996 30489 15 +1.14252 1.75492 0 1 0.567647 -0.827536 607286 14 +0.033646 0.28403 0 2 0.567647 -0.827536 30699 14 +1.14252 0.28403 1 2 0.123692 -0.549937 31725 14 +1.14252 0.28403 6 3 0.123692 -0.827536 27347 14 +0.033646 1.75492 0 1 0.567647 -0.549937 71757 14 +1.14252 1.75492 6 3 0.093586 -0.845996 26165 14 +1.14252 0.28403 1 2 0.567647 -0.876618 30463 14 +0.023678 1.75492 1 1 0.567647 -0.88244 139757 14 +1.14252 1.75492 1 1 0.123692 -0.88244 26753 14 +0.021055 1.75492 1 1 0.567647 -0.859355 120293 14 +0.033646 0.28403 0 2 0.140196 -0.549937 25774 14 +1.14252 0.28403 0 2 0.567647 -0.827536 33196 14 +0.017229 1.75492 1 1 0.567647 -0.845996 29735 14 +0.023678 1.75492 1 1 0.567647 -0.86908 30616 14 +1.14252 1.75492 1 1 0.111523 -0.845996 27202 14 +1.14252 0.219974 2 2 0.567647 -0.549937 25119 14 +0.02733 1.75492 1 1 0.567647 -0.890924 28928 14 +1.14252 1.75492 0 4 0.111523 -0.86908 29118 14 +1.14252 1.75492 0 1 0.167595 -0.549937 32597 14 +0.01568 1.75492 1 1 0.567647 -0.827536 28556 14 +1.14252 0.28403 2 2 0.567647 -0.827536 43929 14 +0.021055 1.75492 1 1 0.567647 -0.827536 77950 14 +0.02733 1.75492 1 1 0.567647 -0.859355 119446 14 +1.14252 1.75492 1 1 0.123692 -0.827536 57015 14 +0.02733 0.28403 1 2 0.167595 -0.549937 28628 14 +0.023678 1.75492 1 1 0.567647 -0.827536 48672 14 +1.14252 0.28403 1 1 0.567647 -0.549937 39345 14 +0.033646 1.75492 1 1 0.140196 -0.845996 34567 14 +0.033646 0.28403 1 4 0.111523 -0.549937 27435 14 +1.14252 0.180841 1 3 0.567647 -0.549937 29203 14 +0.033646 1.75492 1 1 0.567647 -0.893946 26907 14 +1.14252 0.28403 6 3 0.140196 -0.859355 25206 14 +1.14252 0.219974 1 3 0.167595 -0.549937 34055 14 +0.01568 1.75492 1 1 0.567647 -0.549937 37596 14 +0.02733 1.75492 1 1 0.567647 -0.845996 29113 14 +0.02733 1.75492 1 1 0.567647 -0.827536 39610 14 +0.033646 1.75492 1 1 0.167595 -0.86908 32805 14 +1.14252 1.75492 1 1 0.140196 -0.827536 60887 13 +0.033646 1.75492 1 1 0.567647 -0.88244 35485 13 +0.033646 1.75492 0 4 0.123692 -0.86908 31432 13 +1.14252 1.75492 0 4 0.111523 -0.549937 26137 13 +0.033646 1.75492 1 1 0.167595 -0.827536 42370 13 +0.033646 1.75492 1 1 0.567647 -0.859355 66718 13 +0.033646 1.75492 1 1 0.567647 -0.845996 33262 13 +0.033646 1.75492 1 1 0.567647 -0.827536 39144 13 +0.033646 0.28403 0 2 0.567647 -0.549937 26336 13 +1.14252 0.152582 6 4 0.140196 -0.549937 31816 13 +0.033646 1.75492 2 3 0.101886 -0.549937 29500 13 +0.018999 1.75492 1 1 0.567647 -0.549937 47600 13 +1.14252 0.28403 3 2 0.167595 -0.549937 27570 13 +1.14252 0.28403 1 3 0.167595 -0.827536 82763 13 +1.14252 1.75492 0 4 0.123692 -0.845996 25403 13 +0.033646 0.219974 3 3 0.567647 -0.549937 26129 13 +0.021055 1.75492 1 1 0.567647 -0.549937 40953 13 +1.14252 1.75492 1 1 0.167595 -0.887208 25224 13 +1.14252 1.75492 0 1 0.567647 -0.549937 95441 13 +0.023678 1.75492 1 1 0.567647 -0.549937 61224 13 +1.14252 1.75492 1 1 0.167595 -0.827536 107282 13 +0.021055 1.75492 3 1 0.567647 -0.827536 25432 13 +1.14252 1.75492 0 2 0.140196 -0.876618 28361 13 +1.14252 0.180841 6 4 0.167595 -0.827536 26556 13 +1.14252 1.75492 0 2 0.140196 -0.827536 58877 13 +0.033646 1.75492 6 1 0.123692 -0.549937 29277 13 +1.14252 1.75492 1 1 0.567647 -0.876618 153588 12 +1.14252 1.75492 1 1 0.567647 -0.845996 186722 12 +0.02733 1.75492 1 1 0.167595 -0.549937 36957 12 +1.14252 0.28403 3 2 0.567647 -0.549937 44608 12 +0.02733 1.75492 2 1 0.567647 -0.845996 27759 12 +1.14252 1.75492 0 2 0.167595 -0.86908 64713 12 +1.14252 1.75492 1 1 0.567647 -0.827536 98464 12 +1.14252 1.75492 0 4 0.140196 -0.827536 45682 12 +0.033646 1.75492 0 2 0.567647 -0.86908 58684 12 +0.02733 1.75492 1 1 0.567647 -0.549937 41226 12 +1.14252 1.75492 0 2 0.167595 -0.827536 71990 12 +1.14252 1.75492 3 1 0.167595 -0.827536 25514 12 +1.14252 0.28403 6 4 0.140196 -0.549937 31236 12 +1.14252 1.75492 1 1 0.140196 -0.549937 50761 12 +0.033646 1.75492 0 2 0.567647 -0.827536 64397 12 +1.14252 1.75492 1 5 0.093586 -0.549937 26434 12 +0.033646 1.75492 1 1 0.567647 -0.549937 99675 12 +1.14252 0.28403 1 3 0.567647 -0.86908 36849 12 +0.033646 1.75492 2 1 0.567647 -0.845996 27777 12 +1.14252 1.75492 0 2 0.567647 -0.827536 76988 12 +1.14252 0.28403 0 3 0.567647 -0.827536 30500 12 +1.14252 0.28403 1 4 0.167595 -0.827536 36147 12 +1.14252 1.75492 1 1 0.167595 -0.549937 38240 12 +0.02733 1.75492 0 2 0.567647 -0.549937 37262 12 +0.023678 1.75492 2 1 0.567647 -0.549937 31009 11 +1.14252 1.75492 0 2 0.567647 -0.549937 32828 11 +1.14252 1.75492 2 4 0.123692 -0.827536 25893 11 +1.14252 0.28403 2 4 0.167595 -0.549937 31504 11 +1.14252 1.75492 1 1 0.567647 -0.549937 105323 11 +1.14252 0.219974 4 4 0.567647 -0.549937 31600 11 +0.02733 1.75492 3 1 0.567647 -0.549937 29411 11 +1.14252 1.75492 0 4 0.167595 -0.876618 28670 11 +1.14252 1.75492 0 4 0.167595 -0.827536 51465 11 +1.14252 1.75492 2 1 0.567647 -0.88244 26809 11 +1.14252 1.75492 2 1 0.567647 -0.827536 84758 11 +1.14252 0.219974 6 5 0.140196 -0.549937 27778 11 +1.14252 0.28403 2 3 0.567647 -0.549937 28287 11 +0.033646 1.75492 2 1 0.567647 -0.549937 31664 11 +1.14252 0.28403 0 4 0.567647 -0.549937 27998 11 +1.14252 1.75492 2 1 0.567647 -0.549937 52583 10 +1.14252 1.75492 6 4 0.140196 -0.859355 25638 10 +1.14252 1.75492 2 5 0.140196 -0.549937 60052 10 +0.02733 1.75492 0 4 0.567647 -0.887208 26200 10 +1.14252 1.75492 3 1 0.567647 -0.549937 26588 10 +0.02733 1.75492 0 4 0.567647 -0.86908 35897 10 +1.14252 1.75492 1 5 0.167595 -0.88244 32323 10 +1.14252 1.75492 1 5 0.167595 -0.827536 86344 10 +0.023678 1.75492 0 4 0.567647 -0.827536 47196 10 +0.033646 1.75492 0 4 0.567647 -0.86908 27699 10 +0.033646 1.75492 0 4 0.567647 -0.827536 49788 9 +1.14252 0.28403 3 4 0.567647 -0.887208 1170 11 +1.14252 0.180841 6 5 0.167595 -0.549937 1150 11 +0.033646 0.28403 6 4 0.567647 -0.549937 4141 10 +1.14252 0.28403 2 4 0.567647 -0.827536 2279 10 +1.14252 0.180841 6 5 0.567647 -0.859355 1189 10 +0.021055 1.75492 2 5 0.167595 -0.827536 1211 10 +1.14252 1.75492 6 3 0.167595 -0.88244 1397 10 +0.02733 1.75492 0 4 0.167595 -0.549937 10426 10 +1.14252 0.28403 5 4 0.567647 -0.549937 1472 10 +0.033646 1.75492 0 4 0.167595 -0.549937 3520 10 +1.14252 1.75492 6 1 0.567647 -0.827536 1075 9 +1.14252 0.180841 1 5 0.567647 -0.549937 1283 9 +1.14252 1.75492 0 4 0.167595 -0.549937 3775 9 +0.02733 1.75492 1 3 0.567647 -0.893946 8604 9 +0.033646 1.75492 1 3 0.567647 -0.893946 4788 9 +1.14252 1.75492 1 2 0.567647 -0.89835 2436 10 +1.14252 1.75492 4 1 0.567647 -0.549937 1669 9 +0.033646 1.75492 6 4 0.167595 -0.845996 1510 9 +1.14252 1.75492 1 2 0.567647 -0.890924 15755 9 +0.023678 1.75492 1 4 0.567647 -0.890924 1085 10 +1.14252 0.28403 6 5 0.167595 -0.549937 2385 9 +0.033646 0.219974 0 5 0.567647 -0.549937 1874 9 +0.033646 0.28403 0 5 0.567647 -0.827536 6347 9 +1.14252 1.75492 1 2 0.567647 -0.887208 12130 9 +0.02733 1.75492 1 4 0.567647 -0.887208 1856 10 +1.14252 1.75492 0 4 0.567647 -0.827536 114713 9 +1.14252 1.75492 1 4 0.567647 -0.89835 1001 10 +0.023678 1.75492 0 5 0.567647 -0.827536 10695 9 +0.033646 1.75492 0 5 0.567647 -0.893946 1089 9 +1.14252 1.75492 1 2 0.567647 -0.88244 15201 9 +0.02733 1.75492 1 3 0.567647 -0.88244 1124 10 +0.033646 1.75492 1 3 0.567647 -0.887208 1037 9 +0.033646 1.75492 0 5 0.567647 -0.827536 10030 9 +1.14252 1.75492 1 2 0.567647 -0.827536 157722 9 +0.023678 1.75492 1 3 0.567647 -0.86908 2030 10 +0.021055 1.75492 1 4 0.567647 -0.859355 2076 9 +0.02733 1.75492 1 4 0.567647 -0.859355 3808 9 +0.02733 1.75492 1 4 0.567647 -0.845996 3762 9 +0.033646 1.75492 1 3 0.567647 -0.859355 4111 9 +0.033646 1.75492 1 4 0.167595 -0.549937 27853 9 +1.14252 1.75492 2 5 0.167595 -0.827536 2953 9 +1.14252 1.75492 2 4 0.167595 -0.549937 15456 9 +1.14252 0.219974 1 5 0.567647 -0.549937 1658 9 +1.14252 1.75492 2 4 0.567647 -0.89835 1449 9 +0.033646 1.75492 1 4 0.567647 -0.859355 2270 9 +0.033646 1.75492 1 3 0.567647 -0.845996 1794 9 +1.14252 1.75492 1 4 0.567647 -0.887208 6213 9 +1.14252 1.75492 1 3 0.567647 -0.845996 15667 9 +1.14252 1.75492 1 4 0.567647 -0.86908 2712 9 +1.14252 0.28403 0 6 0.07966 -0.86908 1031 9 +1.14252 0.28403 1 5 0.567647 -0.86908 1775 9 +0.023678 1.75492 2 5 0.567647 -0.890924 1103 9 +1.14252 1.75492 2 3 0.567647 -0.890924 5452 9 +0.033646 1.75492 1 4 0.567647 -0.827536 8376 9 +1.14252 1.75492 1 3 0.567647 -0.827536 6304 9 +0.023678 0.28403 6 5 0.567647 -0.549937 1148 9 +1.14252 0.28403 0 5 0.567647 -0.549937 2472 9 +1.14252 1.75492 1 2 0.567647 -0.549937 63652 9 +1.14252 1.75492 2 4 0.567647 -0.876618 12882 9 +1.14252 1.75492 2 2 0.567647 -0.86908 5752 9 +0.021055 1.75492 6 4 0.567647 -0.859355 1042 9 +1.14252 1.75492 1 4 0.567647 -0.827536 5703 9 +1.14252 1.75492 3 3 0.567647 -0.88244 1392 9 +0.011836 1.75492 1 4 0.567647 -0.549937 1080 9 +1.14252 1.75492 2 3 0.567647 -0.845996 18246 9 +1.14252 1.75492 0 6 0.101886 -0.86908 1010 9 +1.14252 1.75492 0 5 0.567647 -0.827536 12313 9 +0.021055 0.109872 6 6 0.167595 -0.549937 1107 9 +1.14252 0.109872 6 6 0.111523 -0.549937 1793 9 +0.033646 1.75492 1 5 0.567647 -0.859355 1825 8 +1.14252 1.75492 1 5 0.567647 -0.876618 1186 8 +1.14252 1.75492 2 3 0.567647 -0.827536 14214 8 +1.14252 0.28403 5 5 0.567647 -0.549937 1561 8 +0.033646 1.75492 1 5 0.567647 -0.827536 1117 9 +1.14252 0.180841 1 6 0.101886 -0.549937 1245 8 +1.14252 1.75492 6 2 0.567647 -0.549937 40384 8 +1.14252 1.75492 2 4 0.567647 -0.827536 1359 8 +0.01568 1.75492 0 5 0.567647 -0.549937 3458 8 +1.14252 0.28403 0 6 0.111523 -0.549937 1076 8 +1.14252 0.152582 1 6 0.140196 -0.827536 1065 8 +1.14252 1.75492 3 4 0.567647 -0.549937 86733 8 +1.14252 1.75492 0 5 0.567647 -0.549937 5884 8 +1.14252 0.28403 6 6 0.167595 -0.88244 1006 8 +1.14252 1.75492 1 5 0.567647 -0.845996 1377 8 +0.033646 0.28403 0 6 0.140196 -0.549937 1138 8 +1.14252 0.180841 3 6 0.167595 -0.549937 1244 8 +0.033646 0.28403 0 6 0.167595 -0.549937 1104 8 +1.14252 1.75492 2 5 0.567647 -0.827536 1307 8 +1.14252 1.75492 1 5 0.567647 -0.549937 2032 8 +1.14252 1.75492 0 7 0.086308 -0.549937 1002 8 +1.14252 1.75492 2 6 0.167595 -0.549937 1680 7 +1.14252 0.219974 0 6 0.567647 -0.549937 1111 7 +1.14252 0.28403 2 7 0.140196 -0.549937 1853 7 +1.14252 0.28403 1 6 0.567647 -0.876618 1034 7 +1.14252 0.28403 3 6 0.567647 -0.549937 2972 7 +0.033646 0.28403 2 7 0.567647 -0.549937 1518 7 +1.14252 1.75492 0 6 0.567647 -0.827536 8182 6 +1.14252 1.75492 6 6 0.567647 -0.549937 4359 6 +1.14252 1.75492 6 7 0.567647 -0.549937 4277 6 +1.14252 0.28403 1 8 0.167595 -0.549937 1225 5 +1.14252 1.75492 1 8 0.567647 -0.549937 1779 5 +1.14252 0.28403 2 9 0.567647 -0.549937 1045 4 +1.14252 1.75492 6 10 0.567647 -0.549937 1902 4 diff --git a/Analysis/config/phredTable.GX9v1.Recal b/Analysis/config/phredTable.GX9v1.Recal new file mode 100644 index 00000000..e0b027a3 --- /dev/null +++ b/Analysis/config/phredTable.GX9v1.Recal @@ -0,0 +1,2808 @@ +0.021285 0.022928 8 1 0.074387 -0.894537 11118 34 +0.010598 0.022928 8 1 0.086288 -0.873493 6882 38 +0.01027 0.050218 8 1 0.061816 0 5124 34 +1.02577 0.022928 0 1 0.079608 -0.894537 6321 33 +0.015706 0.022928 8 1 0.074387 -0.890871 4769 34 +0.010598 0.050218 8 1 0.086288 -0.894537 4547 34 +1.02577 0.022928 8 1 0.064058 -0.886424 4175 33 +0.01027 0.091489 8 10 0.09463 -0.897588 4060 33 +0.014132 0.022928 8 1 0.079608 -0.886424 5449 33 +0.012997 0.050218 8 1 0.537133 -0.897588 12665 33 +0.012178 0.037643 8 1 0.061816 -0.864334 4864 34 +0.011011 0.063173 8 1 0.061816 -0.864334 4698 34 +1.02577 0.063173 8 1 0.061816 -0.894537 6297 33 +0.012178 0.063173 8 1 0.066835 -0.894537 4411 33 +0.01027 0.022928 8 1 0.09463 -0.837831 4902 32 +0.015706 0.063173 8 1 0.064058 -0.894537 3393 32 +0.01027 0.022928 8 1 0.09463 0 7458 32 +0.010598 0.022928 8 1 0.086288 0 13300 32 +0.011011 0.022928 8 1 0.079608 -0.760692 12424 31 +0.011011 0.050218 8 1 0.061816 -0.760692 5328 32 +0.011524 0.022928 8 1 0.064058 0 4902 32 +0.014132 0.022928 0 1 0.537133 -0.894537 3138 32 +0.012997 0.063173 8 1 0.061816 -0.886424 2790 31 +0.01027 0.063173 8 7 0.064058 -0.873493 2702 31 +0.012997 0.037643 8 1 0.061816 -0.837831 5182 31 +0.014132 0.037643 8 1 0.061816 -0.853228 3106 32 +0.026834 0.022928 8 1 0.061816 -0.864334 3018 32 +0.021285 0.022928 8 1 0.061816 -0.760692 10647 31 +0.017996 0.022928 8 1 0.066835 -0.760692 40020 31 +0.026834 0.022928 8 1 0.066835 -0.864334 4792 37 +0.011524 0.022928 8 1 0.09463 -0.88069 3081 32 +0.017996 0.022928 0 1 0.066835 0 13725 31 +0.012178 0.022928 8 1 0.079608 -0.837831 11369 31 +0.014132 0.022928 8 1 0.074387 -0.873493 3212 35 +0.011524 0.022928 8 1 0.074387 -0.760692 2661 34 +0.012178 0.022928 8 1 0.09463 -0.873493 3244 32 +0.011524 0.022928 8 1 0.074387 0 2845 32 +0.026834 0.022928 8 1 0.070215 -0.853228 14540 31 +1.02577 0.022928 0 1 0.079608 -0.890871 2870 32 +1.02577 0.022928 8 1 0.070215 -0.873493 2837 32 +0.021285 0.022928 0 1 0.079608 -0.88069 5650 31 +1.02577 0.022928 8 1 0.061816 -0.8098 2746 31 +0.014132 0.022928 0 1 0.086288 -0.873493 3974 31 +0.017996 0.022928 0 1 0.074387 0 48267 31 +0.015706 0.022928 0 1 0.079608 -0.864334 2637 31 +0.017996 0.022928 8 2 0.070215 -0.890871 2563 31 +0.021285 0.022928 0 1 0.070215 0 13743 31 +0.021285 0.022928 8 1 0.074387 -0.837831 3186 32 +0.021285 0.022928 1 1 0.074387 -0.760692 4278 32 +0.026834 0.022928 8 1 0.074387 -0.853228 2544 31 +0.026834 0.022928 0 1 0.09463 -0.873493 22578 31 +0.026834 0.022928 0 1 0.105575 -0.890871 2964 35 +0.026834 0.022928 1 1 0.537133 -0.894537 3375 32 +1.02577 0.022928 1 1 0.537133 -0.894537 4055 31 +1.02577 0.022928 8 1 0.09463 -0.886424 2898 32 +0.012997 0.037643 8 1 0.061816 -0.760692 3473 31 +0.017996 0.022928 0 1 0.079608 0 31112 30 +0.012178 0.022928 8 1 0.086288 -0.853228 2493 31 +0.026834 0.022928 0 1 0.09463 -0.864334 10144 31 +0.021285 0.022928 0 1 0.079608 -0.760692 5106 31 +0.012997 0.037643 8 1 0.079608 -0.894537 2490 31 +0.011011 0.050218 8 1 0.537133 -0.894537 2385 31 +0.026834 0.022928 0 1 0.079608 -0.837831 4628 31 +0.014132 0.022928 0 1 0.086288 0 19216 31 +0.012178 0.022928 8 1 0.09463 -0.760692 7607 31 +0.014132 0.022928 0 1 0.09463 -0.760692 6233 31 +0.012997 0.022928 0 1 0.537133 -0.760692 17739 31 +0.026834 0.022928 0 1 0.120239 -0.886424 3140 35 +0.011011 0.022928 8 1 0.105575 0 2055 33 +0.015706 0.022928 0 1 0.144355 -0.864334 3903 31 +0.012997 0.063173 8 1 0.074387 -0.897588 2259 31 +0.011524 0.076766 0 1 0.074387 -0.897588 2334 31 +0.017996 0.022928 0 1 0.120239 -0.864334 2243 30 +0.021285 0.022928 0 1 0.537133 -0.88069 2248 34 +0.011011 0.037643 8 1 0.079608 -0.760692 41533 30 +0.010598 0.037643 0 1 0.537133 -0.873493 3684 36 +0.011524 0.037643 8 1 0.070215 -0.873493 2711 34 +0.011524 0.037643 8 1 0.070215 -0.837831 3898 33 +0.01027 0.037643 0 1 0.105575 -0.760692 4161 31 +0.011011 0.050218 8 1 0.066835 -0.873493 3466 31 +0.01027 0.063173 8 1 0.09463 -0.890871 2348 31 +0.011524 0.037643 8 1 0.079608 -0.853228 4370 30 +0.011524 0.037643 8 1 0.086288 -0.873493 2196 30 +0.012178 0.037643 8 1 0.086288 -0.886424 3282 30 +0.014132 0.037643 8 1 0.064058 -0.853228 5794 32 +0.017996 0.037643 8 1 0.070215 -0.886424 9654 31 +0.014132 0.037643 8 1 0.066835 -0.873493 2387 34 +0.014132 0.050218 8 1 0.070215 -0.894537 2013 33 +0.014132 0.037643 0 1 0.070215 -0.873493 2701 31 +0.014132 0.037643 0 1 0.070215 -0.864334 3439 31 +0.010598 0.037643 0 1 0.537133 -0.853228 2172 30 +0.021285 0.022928 1 1 0.086288 -0.760692 18319 30 +0.015706 0.063173 8 1 0.066835 -0.894537 2123 30 +0.01027 0.063173 0 1 0.086288 -0.837831 20028 30 +0.01027 0.050218 0 1 0.120239 -0.837831 3010 32 +0.010598 0.050218 8 1 0.064058 -0.760692 2707 31 +0.01027 0.050218 0 1 0.074387 -0.760692 3334 32 +0.01027 0.050218 0 1 0.105575 -0.760692 3692 31 +0.01027 0.063173 8 1 0.070215 -0.8098 2152 30 +0.026834 0.022928 1 1 0.120239 -0.88069 2107 30 +0.017996 0.022928 0 1 0.09463 0 18919 30 +0.021285 0.022928 8 1 0.09463 -0.837831 2579 31 +0.021285 0.022928 0 1 0.09463 -0.760692 2955 32 +0.017996 0.022928 0 1 0.120239 -0.853228 2454 31 +0.026834 0.022928 8 1 0.09463 -0.853228 2408 31 +1.02577 0.022928 0 1 0.120239 -0.8098 69858 30 +0.015706 0.022928 0 1 0.105575 0 4172 36 +0.017996 0.022928 0 1 0.120239 -0.760692 2540 34 +1.02577 0.022928 1 1 0.105575 -0.864334 2589 31 +0.015706 0.022928 0 1 0.144355 0 3809 31 +1.02577 0.022928 8 1 0.09463 -0.837831 2459 31 +0.012178 0.037643 8 1 0.064058 -0.760692 3080 30 +0.01027 0.050218 0 2 0.105575 -0.88069 2052 30 +0.015706 0.091489 0 1 0.064058 -0.894537 12104 30 +0.011011 1.43371 0 1 0.064058 -0.897588 2948 32 +0.011011 0.108189 0 1 0.074387 -0.897588 2788 31 +0.012997 0.127708 0 1 0.064058 -0.897588 2513 31 +0.026834 0.091489 0 1 0.061816 -0.894537 2071 30 +0.012178 0.186669 0 1 0.066835 -0.897588 5153 30 +0.011011 0.037643 8 1 0.079608 0 11061 30 +0.012178 0.037643 0 1 0.064058 0 2874 32 +0.011011 0.050218 8 1 0.064058 0 5376 30 +0.026834 0.037643 8 1 0.061816 -0.853228 5958 30 +0.026834 0.037643 0 1 0.066835 -0.886424 2615 31 +1.02577 0.037643 0 1 0.070215 -0.890871 2250 31 +0.014132 0.063173 8 1 0.064058 -0.890871 2893 30 +0.012997 0.050218 8 1 0.064058 -0.864334 6706 30 +0.011524 0.050218 8 1 0.064058 -0.760692 4385 33 +0.017996 0.037643 0 1 0.079608 -0.890871 6520 30 +0.014132 0.050218 1 1 0.537133 -0.897588 2277 34 +0.014132 0.063173 8 1 0.079608 -0.897588 2187 30 +0.011011 0.108189 0 1 0.105575 -0.897588 7050 30 +0.026834 0.022928 1 1 0.120239 -0.760692 27862 30 +1.02577 0.022928 0 1 0.086288 -0.760692 8124 31 +0.026834 0.022928 0 1 0.086288 0 17836 30 +0.014132 0.108189 0 1 0.066835 -0.897588 2673 29 +0.012997 0.037643 8 1 0.086288 -0.886424 1638 32 +0.011524 0.037643 8 1 0.086288 -0.853228 1856 30 +1.02577 0.063173 8 1 0.061816 -0.890871 1856 30 +0.015706 0.050218 8 1 0.061816 -0.864334 3242 30 +0.01027 0.050218 1 1 0.537133 -0.8098 1802 30 +0.01027 0.063173 8 10 0.061816 -0.760692 1774 29 +0.017996 0.050218 8 1 0.061816 -0.837831 9519 29 +0.015706 0.050218 8 1 0.061816 -0.8098 4858 30 +0.014132 0.050218 8 1 0.064058 -0.853228 3767 30 +0.014132 0.063173 8 1 0.064058 -0.886424 2015 30 +0.010598 0.063173 8 1 0.066835 -0.864334 2322 31 +0.010598 0.063173 8 1 0.070215 -0.873493 1961 33 +0.015706 0.050218 8 1 0.064058 -0.864334 3674 30 +1.02577 0.063173 8 1 0.061816 -0.886424 1740 29 +0.01027 0.076766 8 1 0.537133 -0.894537 1730 29 +0.017996 0.037643 8 1 0.066835 -0.873493 2592 29 +0.026834 0.037643 0 1 0.086288 -0.897588 1717 29 +0.026834 0.037643 0 1 0.079608 -0.890871 2227 30 +0.011011 0.037643 8 7 0.061816 -0.8098 1712 29 +0.011524 0.037643 0 1 0.144355 -0.88069 2533 29 +0.012178 0.037643 8 1 0.105575 -0.88069 2624 29 +1.02577 0.022928 1 1 0.105575 -0.8098 2526 29 +0.021285 0.037643 0 1 0.105575 -0.890871 9254 29 +0.011524 0.050218 8 1 0.064058 0 1682 29 +0.026834 0.076766 0 1 0.061816 -0.890871 2512 29 +0.010598 0.091489 0 4 0.064058 -0.890871 1845 30 +0.01027 0.076766 8 1 0.061816 0 3634 30 +0.01027 0.076766 8 1 0.066835 -0.853228 3002 32 +0.01027 0.091489 8 1 0.066835 -0.864334 3323 30 +0.010598 0.091489 0 1 0.064058 -0.864334 4238 32 +0.010598 1.43371 0 1 0.061816 -0.88069 5314 30 +0.01027 0.127708 8 10 0.061816 -0.864334 1921 33 +0.012178 0.152455 0 1 0.061816 -0.894537 1775 32 +0.011524 0.152455 0 1 0.064058 -0.894537 2142 30 +0.011524 0.091489 0 1 0.061816 -0.873493 4612 30 +0.026834 0.076766 0 1 0.061816 -0.886424 2229 33 +0.014132 0.091489 0 1 0.064058 -0.886424 9275 30 +0.010598 0.091489 0 4 0.064058 -0.873493 1768 29 +0.010598 1.43371 0 1 0.064058 -0.886424 3410 29 +0.01027 0.127708 8 1 0.064058 -0.864334 1828 33 +0.01027 0.108189 8 1 0.066835 -0.864334 1702 29 +0.01027 0.050218 0 1 0.09463 0 4937 29 +0.010598 0.050218 8 1 0.105575 -0.853228 8677 29 +0.010598 0.063173 8 1 0.09463 -0.88069 3936 30 +0.010598 0.050218 8 1 0.079608 0 11177 29 +0.01027 0.063173 0 1 0.086288 0 11812 29 +0.01027 0.076766 8 1 0.064058 0 2428 31 +0.014132 0.037643 1 1 0.105575 -0.853228 41603 29 +0.012178 0.037643 0 1 0.144355 -0.853228 2493 31 +0.015706 0.037643 8 1 0.086288 -0.88069 3902 30 +0.026834 0.037643 0 1 0.086288 -0.873493 22529 29 +0.017996 0.037643 0 1 0.105575 -0.873493 5538 30 +0.026834 0.037643 0 1 0.09463 -0.88069 2801 30 +0.012997 0.037643 0 1 0.09463 -0.760692 57760 29 +0.012178 0.037643 0 1 0.066835 0 1854 33 +0.010598 0.050218 1 1 0.120239 -0.837831 2447 31 +0.012178 0.037643 1 1 0.120239 -0.837831 2005 30 +0.012997 0.037643 0 1 0.144355 -0.837831 2993 30 +0.021285 0.037643 0 1 0.120239 -0.890871 1854 30 +0.015706 0.037643 0 1 0.144355 -0.88069 1669 29 +0.010598 0.152455 0 1 0.105575 -0.897588 6226 29 +0.026834 0.050218 0 1 0.079608 -0.886424 36277 29 +0.015706 0.050218 8 1 0.066835 -0.88069 2124 33 +0.012178 0.050218 8 1 0.074387 -0.88069 2130 33 +0.011524 0.050218 8 1 0.079608 -0.873493 3632 30 +0.011524 0.050218 8 1 0.066835 -0.853228 1823 30 +0.011524 0.050218 8 1 0.066835 -0.8098 2670 29 +1.02577 0.063173 8 1 0.066835 -0.894537 3434 29 +0.021285 0.063173 8 1 0.064058 -0.886424 2002 30 +0.012178 0.050218 8 1 0.079608 -0.873493 2567 29 +1.02577 0.050218 0 1 0.074387 -0.890871 1674 29 +0.011524 0.050218 8 1 0.070215 -0.8098 4905 29 +0.011011 0.050218 8 1 0.074387 -0.8098 2520 29 +0.014132 0.063173 8 1 0.079608 -0.894537 4876 29 +0.011524 0.063173 8 1 0.09463 -0.894537 1600 32 +1.02577 0.063173 0 1 0.070215 -0.894537 2532 29 +0.011011 0.050218 0 1 0.144355 -0.760692 25222 29 +0.015706 0.037643 8 1 0.074387 -0.8098 24506 29 +0.014132 0.037643 8 1 0.079608 -0.8098 2940 30 +0.014132 0.037643 8 1 0.070215 -0.760692 4871 30 +0.015706 0.037643 8 1 0.064058 -0.760692 2164 30 +0.026834 0.037643 8 1 0.061816 -0.760692 5935 29 +0.026834 0.037643 0 1 0.061816 0 6075 29 +0.015706 0.037643 0 1 0.086288 -0.853228 4175 29 +0.017996 0.037643 0 1 0.086288 -0.864334 4180 29 +0.017996 0.050218 8 1 0.064058 -0.853228 3423 31 +0.017996 0.037643 8 1 0.064058 -0.760692 2898 30 +0.017996 0.037643 8 1 0.066835 -0.837831 1687 29 +0.026834 0.037643 0 1 0.066835 -0.760692 18100 29 +0.026834 0.037643 0 1 0.074387 -0.864334 2310 31 +0.017996 0.037643 0 1 0.070215 -0.8098 3208 29 +0.026834 0.050218 8 1 0.064058 -0.853228 5484 29 +0.021285 0.050218 8 1 0.061816 -0.8098 2217 33 +1.02577 0.022928 0 1 0.537133 -0.837831 16650 29 +0.026834 0.022928 0 1 0.144355 -0.760692 3800 30 +0.021285 0.022928 1 1 0.144355 -0.8098 2016 30 +0.011524 0.050218 8 1 0.079608 0 23883 29 +0.012178 0.037643 0 1 0.074387 0 2590 29 +0.017996 0.037643 0 1 0.120239 -0.864334 5223 29 +0.014132 0.063173 8 1 0.061816 -0.8098 16363 29 +0.012997 0.091489 8 1 0.061816 -0.88069 1788 33 +0.011524 0.076766 8 1 0.061816 -0.853228 2180 30 +0.012997 0.076766 8 1 0.064058 -0.88069 3154 30 +0.021285 0.076766 8 1 0.061816 -0.88069 2918 30 +0.012997 0.063173 8 1 0.064058 -0.864334 3844 29 +0.011011 0.063173 8 1 0.064058 -0.837831 1752 29 +0.010598 0.108189 8 1 0.061816 -0.853228 2218 29 +0.01027 0.108189 8 1 0.061816 0 4724 29 +0.010598 0.076766 8 1 0.061816 -0.760692 2210 29 +0.014132 0.063173 8 1 0.079608 -0.88069 31587 29 +0.011011 0.063173 8 1 0.09463 -0.88069 1728 32 +0.011524 0.063173 8 1 0.066835 -0.864334 1871 30 +0.011011 0.063173 8 1 0.066835 -0.837831 2173 30 +1.02577 0.063173 0 1 0.066835 -0.890871 1857 30 +1.02577 0.063173 0 1 0.070215 -0.890871 1677 29 +0.021285 0.063173 8 1 0.064058 -0.873493 4840 29 +0.015706 0.063173 8 1 0.064058 -0.864334 2337 29 +0.021285 0.063173 0 1 0.079608 -0.890871 7710 29 +0.017996 0.063173 8 1 0.064058 -0.853228 7616 29 +0.026834 0.050218 0 1 0.070215 -0.873493 9707 29 +0.026834 0.050218 0 1 0.074387 -0.88069 2202 33 +0.012997 0.063173 8 1 0.066835 -0.864334 3910 29 +0.012178 0.050218 8 1 0.070215 -0.8098 7270 29 +0.012997 0.050218 8 1 0.064058 -0.8098 1715 29 +0.014132 0.076766 8 1 0.061816 -0.864334 3626 29 +0.012997 0.076766 8 1 0.064058 -0.873493 2049 30 +0.012178 0.076766 8 1 0.061816 -0.837831 2681 30 +0.011524 0.091489 8 1 0.064058 -0.873493 1735 29 +0.014132 0.076766 8 1 0.061816 -0.853228 1664 29 +0.011524 0.076766 1 1 0.105575 -0.760692 299499 29 +0.012178 0.076766 8 1 0.066835 -0.873493 2280 34 +0.012178 0.063173 8 1 0.061816 -0.760692 1792 33 +0.01027 0.063173 1 1 0.120239 -0.760692 1645 32 +0.012997 0.076766 8 1 0.061816 -0.8098 3101 32 +0.012178 0.063173 8 1 0.074387 -0.864334 3712 31 +0.012178 0.050218 8 1 0.105575 -0.873493 4564 31 +0.012997 0.050218 8 1 0.086288 -0.88069 1699 32 +0.01027 0.076766 8 1 0.074387 0 3235 30 +0.01027 0.076766 0 1 0.086288 0 2251 31 +0.012997 0.063173 8 1 0.086288 -0.890871 2110 30 +0.011011 0.063173 1 1 0.120239 -0.837831 3142 30 +0.014132 0.050218 8 1 0.086288 -0.88069 2043 30 +0.01027 0.076766 0 1 0.537133 -0.8098 3948 30 +0.010598 0.063173 0 1 0.144355 -0.760692 1776 32 +0.012178 0.050218 8 1 0.09463 -0.864334 1920 30 +0.012178 0.063173 0 1 0.086288 -0.864334 4197 30 +0.015706 0.050218 8 1 0.09463 -0.894537 1917 30 +0.011524 0.076766 0 1 0.537133 -0.894537 1840 30 +0.010598 0.152455 0 1 0.537133 -0.897588 2806 30 +0.012997 0.091489 8 1 0.066835 -0.894537 1806 30 +0.01027 0.152455 8 1 0.070215 -0.890871 2333 29 +0.011011 0.152455 8 1 0.070215 -0.894537 3597 30 +0.011524 0.076766 8 1 0.066835 0 19429 29 +0.011011 0.076766 8 1 0.070215 0 5361 30 +0.010598 0.063173 8 1 0.079608 0 2505 29 +0.01027 0.108189 8 1 0.086288 -0.890871 3078 29 +0.010598 0.108189 8 1 0.086288 -0.894537 1685 32 +0.010598 0.108189 0 1 0.537133 -0.894537 3070 30 +0.012997 0.127708 8 1 0.066835 -0.894537 4504 29 +0.012997 0.108189 8 1 0.064058 -0.890871 2493 29 +0.011524 1.43371 8 1 0.061816 -0.890871 1766 29 +0.010598 0.076766 8 1 0.079608 0 2987 29 +0.010598 0.076766 0 1 0.086288 0 3759 29 +0.010598 0.063173 0 1 0.09463 0 2518 29 +0.011011 0.050218 0 1 0.09463 0 3208 29 +0.012997 0.037643 0 1 0.09463 0 15103 29 +0.011524 0.050218 0 1 0.09463 0 2226 30 +0.014132 0.037643 0 1 0.070215 0 4411 29 +0.01027 0.127708 8 1 0.066835 -0.853228 4477 29 +0.01027 0.091489 8 1 0.064058 -0.760692 2021 30 +0.012178 0.076766 8 1 0.070215 -0.873493 2917 29 +0.014132 0.108189 8 1 0.066835 -0.894537 2187 29 +0.014132 0.127708 8 1 0.066835 -0.894537 2182 29 +0.011524 0.037643 1 1 0.537133 -0.760692 2175 29 +0.017996 0.037643 0 1 0.537133 -0.88069 1791 30 +0.026834 0.037643 0 1 0.144355 -0.894537 1797 30 +0.012997 0.037643 0 1 0.120239 -0.8098 1730 29 +0.010598 0.152455 8 1 0.105575 -0.886424 44005 29 +0.01027 0.24279 8 1 0.086288 -0.894537 3113 32 +0.010598 0.186669 8 1 0.074387 -0.890871 2084 33 +0.01027 0.152455 8 1 0.120239 -0.890871 1831 30 +0.010598 0.091489 8 1 0.144355 -0.886424 1658 32 +0.012997 0.091489 8 1 0.066835 -0.886424 4220 29 +0.011011 0.076766 0 1 0.120239 -0.853228 2518 29 +0.011011 0.091489 8 1 0.144355 -0.890871 4763 29 +0.011011 0.108189 8 1 0.079608 -0.890871 2258 31 +0.011011 0.108189 8 1 0.070215 -0.886424 1731 29 +0.01027 0.091489 8 1 0.070215 -0.8098 4655 29 +0.011011 0.091489 8 1 0.070215 -0.88069 1610 32 +0.01027 0.091489 8 1 0.537133 -0.88069 2322 31 +0.01027 0.127708 8 1 0.070215 -0.853228 3768 30 +0.012178 0.186669 8 1 0.066835 -0.894537 2256 29 +0.011011 0.091489 8 1 0.09463 -0.88069 5942 29 +0.01027 0.108189 8 1 0.09463 -0.873493 5811 29 +0.01027 0.091489 8 1 0.105575 -0.864334 3104 29 +0.012997 0.076766 8 1 0.074387 -0.873493 14373 29 +0.012178 0.076766 8 1 0.079608 -0.886424 1820 30 +0.014132 0.063173 8 1 0.070215 -0.873493 1674 29 +0.012178 0.076766 0 1 0.086288 -0.88069 3172 29 +0.012178 0.076766 0 1 0.105575 -0.886424 4659 29 +0.012178 0.076766 8 1 0.537133 -0.894537 1638 29 +0.012997 0.063173 8 1 0.537133 -0.894537 2019 30 +0.014132 0.108189 8 1 0.074387 -0.894537 15858 29 +0.012178 0.091489 8 1 0.070215 -0.886424 1917 30 +0.011524 0.091489 8 1 0.074387 -0.88069 2763 30 +0.011524 0.091489 8 1 0.079608 -0.886424 1810 30 +0.011524 0.076766 0 1 0.120239 -0.873493 2155 29 +0.017996 0.050218 8 1 0.066835 -0.853228 5732 29 +0.014132 0.050218 8 1 0.09463 -0.864334 15786 29 +0.017996 0.050218 0 1 0.070215 -0.864334 1732 32 +0.014132 0.063173 8 1 0.070215 -0.864334 3025 30 +0.014132 0.063173 8 1 0.079608 -0.864334 7676 29 +0.012997 0.050218 8 1 0.086288 -0.837831 14860 29 +0.014132 0.050218 8 1 0.079608 -0.853228 3515 29 +0.015706 0.050218 0 1 0.074387 -0.853228 4217 29 +0.012997 0.050218 8 1 0.086288 -0.8098 11098 29 +0.012178 0.050218 8 1 0.09463 -0.8098 2311 29 +0.011524 0.037643 0 1 0.144355 0 2126 29 +0.012178 0.076766 8 1 0.074387 -0.864334 3542 29 +0.011524 0.091489 8 1 0.537133 -0.894537 2829 28 +0.021285 0.076766 8 1 0.061816 -0.873493 1529 29 +0.011524 0.050218 0 1 0.105575 0 1518 29 +0.026834 0.022928 8 2 0.09463 -0.897588 1490 29 +0.021285 0.022928 8 1 0.066835 0 1465 29 +0.015706 0.108189 8 1 0.064058 -0.894537 1455 29 +1.02577 0.050218 0 1 0.074387 -0.886424 1450 29 +0.014132 0.076766 8 1 0.064058 -0.873493 1418 29 +0.017996 0.050218 0 1 0.086288 -0.88069 5652 28 +0.017996 0.050218 0 1 0.09463 -0.890871 1487 29 +0.017996 0.063173 0 1 0.086288 -0.890871 4396 29 +0.015706 0.063173 1 1 0.537133 -0.897588 2558 29 +0.017996 0.063173 0 1 0.144355 -0.897588 1742 29 +0.01027 0.186669 8 1 0.061816 -0.853228 1410 28 +0.015706 0.091489 8 1 0.064058 -0.890871 1401 28 +0.012178 0.076766 8 1 0.064058 -0.8098 4892 28 +0.012178 0.076766 8 1 0.066835 -0.837831 3910 30 +0.012178 0.063173 8 1 0.074387 -0.853228 1948 30 +0.014132 0.050218 0 1 0.079608 -0.760692 42525 28 +0.014132 0.063173 8 1 0.061816 -0.760692 2568 34 +0.015706 0.050218 8 1 0.066835 -0.8098 5087 31 +0.014132 0.037643 0 1 0.074387 0 1826 30 +0.012997 0.050218 1 1 0.105575 -0.760692 17387 29 +0.012997 0.063173 8 1 0.537133 -0.890871 2157 29 +0.012997 0.076766 8 1 0.144355 -0.890871 6723 29 +0.012997 0.076766 8 1 0.079608 -0.88069 1598 29 +0.012997 0.076766 0 1 0.09463 -0.886424 2173 30 +0.014132 0.076766 1 1 0.537133 -0.897588 2266 29 +0.014132 0.108189 8 1 0.079608 -0.894537 8147 29 +0.012178 0.091489 8 1 0.144355 -0.897588 1350 31 +0.012997 0.091489 8 1 0.086288 -0.894537 1472 32 +0.012997 0.091489 8 1 0.120239 -0.894537 3537 28 +0.014132 0.091489 8 1 0.079608 -0.886424 18152 28 +0.012997 0.091489 8 1 0.086288 -0.890871 1770 29 +0.011524 0.091489 8 1 0.144355 -0.890871 1292 31 +0.011524 0.091489 8 1 0.086288 -0.88069 1980 30 +0.012178 0.091489 0 1 0.09463 -0.886424 2410 29 +0.017996 0.037643 0 1 0.079608 -0.853228 2082 28 +0.021285 0.050218 8 1 0.066835 -0.837831 4854 28 +0.021285 0.050218 8 1 0.064058 -0.8098 2098 28 +0.014132 0.063173 0 1 0.086288 -0.864334 6237 28 +0.015706 0.050218 0 1 0.066835 -0.760692 4139 28 +0.021285 0.050218 0 1 0.061816 -0.760692 2133 29 +0.017996 0.050218 0 1 0.066835 -0.760692 4249 29 +0.015706 0.037643 0 1 0.086288 0 32994 28 +0.017996 0.037643 0 1 0.070215 -0.760692 1641 32 +0.015706 0.037643 0 1 0.09463 -0.837831 2984 29 +0.014132 0.037643 0 1 0.120239 -0.837831 1272 31 +0.015706 0.037643 0 1 0.105575 -0.837831 1453 29 +0.014132 0.037643 0 1 0.105575 -0.760692 4109 28 +0.011011 0.076766 0 1 0.120239 -0.760692 4105 28 +0.010598 0.076766 1 1 0.144355 -0.837831 1399 28 +0.011011 0.127708 0 1 0.144355 -0.894537 7514 28 +0.011011 0.152455 8 1 0.086288 -0.894537 2396 31 +0.011011 0.186669 8 1 0.079608 -0.894537 2121 28 +0.012178 0.063173 8 1 0.061816 0 2047 28 +0.014132 0.050218 8 1 0.061816 0 2321 29 +0.014132 0.050218 0 1 0.064058 0 3835 29 +0.012997 0.050218 0 1 0.086288 0 16493 29 +0.012178 0.076766 0 1 0.064058 0 8475 28 +0.017996 0.050218 0 1 0.537133 -0.894537 2041 28 +0.015706 0.050218 8 1 0.061816 0 1360 28 +0.01027 0.050218 8 2 0.066835 -0.760692 2037 28 +0.026834 0.063173 8 1 0.061816 -0.864334 1356 28 +0.021285 0.037643 0 1 0.105575 -0.760692 67368 28 +0.026834 0.037643 0 1 0.086288 -0.864334 1469 32 +0.021285 0.037643 0 1 0.537133 -0.88069 2124 30 +0.026834 0.037643 0 1 0.086288 -0.853228 3038 30 +0.026834 0.037643 0 1 0.074387 -0.760692 7106 29 +0.015706 0.037643 0 1 0.09463 0 2981 29 +0.021285 0.037643 0 1 0.120239 -0.853228 2849 29 +0.014132 0.050218 0 1 0.074387 0 6057 28 +0.011011 0.091489 0 1 0.120239 -0.88069 2014 28 +0.010598 0.091489 8 1 0.105575 -0.873493 3601 29 +0.012178 0.108189 8 1 0.086288 -0.894537 2013 28 +0.01027 0.091489 8 2 0.064058 -0.8098 1339 28 +0.026834 0.037643 0 1 0.074387 0 20752 28 +0.01027 0.108189 8 1 0.064058 -0.760692 2006 28 +0.01027 0.091489 8 1 0.070215 -0.760692 2004 28 +0.010598 0.091489 8 1 0.066835 -0.760692 8769 28 +0.010598 0.108189 8 1 0.061816 -0.760692 1940 33 +0.010598 0.091489 8 1 0.086288 -0.864334 2608 29 +0.010598 0.091489 8 1 0.070215 -0.837831 1532 32 +0.01027 0.152455 8 1 0.066835 -0.853228 2648 28 +0.012178 0.063173 8 1 0.070215 -0.760692 7269 28 +0.012178 0.063173 0 1 0.066835 0 1678 29 +0.017996 0.063173 8 1 0.061816 -0.760692 7217 28 +0.015706 0.076766 8 1 0.061816 -0.837831 4094 28 +0.017996 0.076766 8 1 0.061816 -0.853228 1484 29 +0.026834 0.076766 8 1 0.061816 -0.864334 1404 28 +0.026834 0.050218 0 1 0.09463 -0.890871 3930 28 +0.011524 0.108189 8 1 0.074387 -0.890871 1309 28 +0.015706 0.076766 8 1 0.064058 -0.873493 1955 28 +0.017996 0.050218 0 2 0.061816 -0.890871 1302 28 +0.015706 0.050218 0 2 0.061816 -0.88069 1498 29 +0.015706 0.037643 1 1 0.105575 -0.760692 1941 28 +0.017996 0.037643 1 1 0.09463 -0.760692 1720 29 +0.021285 0.037643 8 1 0.066835 0 1391 31 +0.01027 0.091489 1 1 0.120239 -0.8098 14227 28 +0.010598 0.091489 8 1 0.105575 -0.853228 5110 29 +0.010598 0.091489 8 1 0.086288 -0.837831 2931 30 +0.010598 0.091489 8 1 0.086288 -0.8098 4971 29 +0.010598 0.091489 8 1 0.070215 -0.760692 1291 31 +0.01027 0.108189 8 1 0.074387 -0.853228 1408 28 +0.011011 0.076766 0 1 0.105575 0 16804 28 +0.021285 0.050218 0 1 0.064058 -0.760692 1291 28 +0.011524 0.091489 8 1 0.105575 -0.873493 11598 28 +0.011011 0.108189 8 1 0.079608 -0.873493 12167 28 +0.010598 0.108189 8 1 0.074387 -0.864334 2270 34 +0.010598 0.108189 8 1 0.105575 -0.88069 2177 29 +0.011011 0.091489 8 1 0.09463 -0.853228 12443 28 +0.011011 0.108189 8 1 0.061816 -0.8098 3787 29 +0.011011 0.108189 8 1 0.061816 -0.760692 2051 28 +0.014132 0.063173 0 1 0.09463 0 189920 28 +0.012178 0.076766 0 1 0.105575 -0.88069 1459 32 +0.012997 0.063173 0 1 0.105575 -0.873493 1584 32 +0.012997 0.050218 0 1 0.105575 0 2506 29 +0.015706 0.063173 8 1 0.064058 -0.760692 4790 29 +0.014132 0.063173 0 1 0.120239 -0.873493 8547 29 +0.012997 0.050218 8 1 0.144355 -0.864334 2682 30 +0.012178 0.050218 0 1 0.120239 -0.760692 2819 30 +0.017996 0.050218 1 1 0.120239 -0.890871 1766 29 +0.011524 0.076766 0 1 0.120239 -0.853228 1515 29 +0.017996 0.050218 0 1 0.144355 -0.88069 7173 29 +0.014132 0.063173 0 1 0.105575 -0.8098 13212 28 +0.014132 0.050218 0 1 0.120239 -0.837831 2148 29 +0.017996 0.063173 0 1 0.066835 -0.760692 22217 28 +0.021285 0.063173 8 1 0.066835 -0.873493 1284 31 +0.015706 0.063173 8 1 0.066835 0 10825 29 +0.015706 0.050218 0 1 0.074387 0 15077 29 +0.012178 0.091489 0 1 0.105575 -0.873493 17564 28 +0.012997 0.091489 8 1 0.074387 -0.88069 3005 29 +0.012997 0.076766 0 1 0.086288 -0.864334 11918 28 +0.017996 0.050218 0 1 0.086288 -0.760692 50837 28 +0.015706 0.050218 0 1 0.120239 -0.873493 1591 32 +0.015706 0.050218 0 1 0.09463 -0.8098 4982 31 +0.015706 0.050218 0 1 0.105575 -0.853228 1496 32 +0.017996 0.050218 1 1 0.079608 -0.760692 1617 29 +0.015706 0.050218 0 1 0.086288 0 5237 29 +0.017996 0.050218 0 1 0.105575 -0.837831 9066 28 +0.017996 0.050218 0 1 0.120239 -0.864334 1787 30 +0.021285 0.063173 8 1 0.066835 -0.760692 16557 28 +0.026834 0.063173 0 1 0.064058 -0.760692 11346 29 +0.021285 0.050218 1 1 0.070215 -0.760692 5802 29 +0.026834 0.063173 0 1 0.066835 -0.864334 1996 28 +0.012997 0.076766 8 1 0.064058 0 10567 28 +0.017996 0.076766 8 1 0.061816 -0.760692 10331 28 +0.012997 0.076766 8 1 0.079608 -0.760692 54619 28 +0.012997 0.076766 8 1 0.066835 0 4575 29 +0.012997 0.076766 0 1 0.070215 0 6937 29 +0.012997 0.076766 0 1 0.09463 -0.837831 14676 28 +0.012997 0.076766 8 1 0.074387 0 9259 28 +0.012178 0.037643 1 1 0.105575 0 1520 29 +0.021285 0.050218 0 1 0.074387 -0.837831 3215 28 +0.011524 0.091489 0 1 0.120239 -0.873493 1929 28 +0.014132 0.091489 8 1 0.064058 -0.88069 1271 28 +0.021285 0.022928 0 1 0.09463 0 1901 28 +0.010598 0.127708 0 1 0.144355 -0.890871 1264 28 +0.026834 0.063173 0 1 0.070215 -0.873493 6926 28 +0.017996 0.063173 8 1 0.074387 -0.886424 1332 31 +0.017996 0.063173 8 1 0.070215 -0.864334 2228 29 +0.012178 0.076766 0 1 0.105575 -0.760692 13653 28 +0.012997 0.076766 0 1 0.105575 -0.853228 3585 29 +0.012178 0.076766 0 1 0.09463 0 12615 28 +0.012997 0.076766 0 1 0.120239 -0.853228 6252 28 +0.012178 0.091489 0 1 0.120239 -0.873493 1712 32 +0.026834 0.050218 0 1 0.079608 -0.853228 9280 28 +0.01027 0.091489 8 1 0.079608 -0.760692 2471 28 +0.017996 0.050218 0 1 0.09463 -0.8098 1852 28 +0.015706 0.076766 0 1 0.09463 0 331386 28 +0.021285 0.076766 0 1 0.070215 -0.897588 1425 32 +0.014132 0.076766 1 1 0.537133 -0.894537 1423 32 +0.014132 0.076766 0 1 0.105575 -0.864334 3660 31 +0.015706 0.063173 0 1 0.120239 -0.88069 3305 30 +0.015706 0.076766 0 1 0.105575 -0.890871 1458 32 +0.015706 0.091489 0 1 0.079608 -0.897588 1901 30 +0.015706 0.063173 0 1 0.105575 -0.853228 2783 30 +0.014132 0.076766 8 1 0.074387 0 1778 29 +0.017996 0.063173 0 1 0.086288 -0.760692 44134 29 +0.015706 0.108189 8 1 0.066835 -0.894537 1415 28 +0.015706 0.091489 0 1 0.079608 -0.890871 4881 28 +0.014132 0.091489 8 1 0.086288 -0.890871 2062 28 +0.014132 0.108189 8 1 0.086288 -0.894537 2793 28 +0.014132 0.091489 1 1 0.144355 -0.894537 4158 28 +0.017996 0.076766 0 1 0.086288 -0.853228 38525 28 +0.017996 0.076766 0 1 0.144355 -0.897588 2201 30 +0.017996 0.091489 0 1 0.079608 -0.890871 7308 29 +0.017996 0.076766 0 1 0.064058 -0.8098 2773 28 +0.021285 0.076766 0 1 0.064058 -0.760692 12190 28 +0.021285 0.076766 0 1 0.079608 -0.894537 1961 30 +0.026834 0.076766 8 1 0.064058 -0.873493 1600 29 +0.021285 0.091489 0 1 0.079608 -0.894537 3146 29 +0.021285 0.091489 8 1 0.066835 -0.890871 1302 31 +0.021285 0.108189 8 1 0.066835 -0.897588 1433 29 +0.015706 0.091489 0 1 0.086288 -0.894537 1327 28 +0.015706 0.091489 0 1 0.144355 -0.897588 1807 30 +0.017996 0.091489 0 1 0.105575 -0.897588 1751 29 +0.017996 0.091489 0 1 0.086288 -0.890871 2515 29 +0.021285 0.091489 0 1 0.09463 -0.897588 2677 28 +0.021285 0.076766 0 1 0.120239 -0.897588 2263 29 +0.021285 0.063173 0 1 0.120239 -0.894537 3754 29 +0.017996 0.091489 0 1 0.09463 -0.894537 2017 30 +0.021285 0.050218 0 1 0.105575 -0.88069 3688 29 +0.017996 0.063173 1 1 0.537133 -0.894537 1396 28 +0.017996 0.076766 0 1 0.09463 -0.886424 2756 28 +0.017996 0.063173 0 1 0.120239 -0.88069 4209 28 +0.021285 0.050218 0 1 0.086288 -0.837831 5280 28 +0.026834 0.050218 0 1 0.086288 -0.853228 3685 29 +0.017996 0.076766 0 1 0.105575 -0.890871 1309 28 +0.017996 0.063173 0 1 0.144355 -0.886424 1930 28 +0.021285 0.063173 0 1 0.070215 -0.837831 2567 28 +0.026834 0.050218 0 1 0.09463 -0.760692 69630 28 +0.017996 0.050218 0 1 0.105575 -0.760692 6817 28 +0.026834 0.037643 0 1 0.105575 -0.8098 6618 28 +0.021285 0.063173 8 1 0.074387 -0.88069 1272 28 +0.021285 0.063173 0 1 0.09463 -0.853228 21646 28 +0.021285 0.063173 0 1 0.105575 -0.88069 2063 30 +0.021285 0.063173 0 1 0.079608 -0.837831 2787 30 +0.017996 0.063173 0 1 0.120239 -0.873493 2287 29 +0.021285 0.063173 0 1 0.120239 -0.886424 1938 28 +0.021285 0.050218 0 1 0.120239 -0.873493 1991 28 +0.021285 0.050218 0 1 0.105575 -0.760692 7281 28 +0.021285 0.063173 0 1 0.079608 -0.8098 5572 28 +0.014132 0.108189 8 1 0.086288 -0.760692 748506 28 +0.014132 0.076766 8 1 0.09463 -0.8098 1343 31 +0.011011 0.108189 8 1 0.09463 -0.88069 1857 30 +0.015706 0.108189 8 1 0.066835 -0.890871 1588 29 +0.015706 0.091489 0 1 0.064058 -0.760692 19368 29 +0.015706 0.108189 8 1 0.064058 -0.88069 2571 31 +0.015706 0.091489 0 1 0.074387 -0.88069 5577 30 +0.015706 0.091489 0 1 0.086288 -0.886424 2077 30 +0.021285 0.091489 8 1 0.061816 -0.864334 3678 30 +0.012178 0.091489 8 1 0.09463 -0.864334 2187 29 +0.012997 0.091489 8 1 0.061816 0 6807 28 +0.015706 0.091489 0 1 0.074387 -0.760692 39607 28 +0.01027 0.108189 8 1 0.09463 -0.8098 3930 28 +0.011011 0.108189 8 1 0.09463 -0.853228 5989 28 +0.012178 0.091489 8 1 0.09463 -0.8098 14244 28 +0.014132 0.091489 1 1 0.105575 -0.873493 15137 28 +0.014132 0.091489 8 1 0.09463 -0.864334 3159 29 +0.012997 0.091489 0 1 0.120239 -0.873493 2179 29 +0.017996 0.091489 0 1 0.09463 -0.886424 8334 28 +0.01027 0.186669 0 1 0.079608 -0.760692 66217 28 +0.01027 0.127708 8 1 0.086288 -0.864334 2196 29 +0.010598 0.186669 8 1 0.074387 -0.873493 11082 28 +0.010598 0.127708 8 1 0.086288 -0.873493 2946 30 +0.01027 0.127708 8 1 0.09463 -0.873493 1374 28 +0.01027 0.24279 8 1 0.074387 -0.873493 2013 28 +0.014132 0.127708 0 1 0.061816 -0.760692 35610 28 +0.012178 1.43371 8 1 0.064058 -0.890871 4058 28 +0.010598 0.127708 0 1 0.061816 0 2646 28 +0.01027 0.186669 8 1 0.086288 -0.864334 5934 28 +0.012178 0.24279 8 1 0.061816 -0.873493 6492 28 +0.011011 0.186669 8 1 0.066835 -0.886424 2451 29 +0.011011 0.127708 8 1 0.079608 -0.886424 2725 30 +0.014132 0.127708 8 1 0.064058 -0.886424 2759 28 +0.011011 0.186669 8 1 0.074387 -0.890871 1369 28 +0.011011 0.127708 8 1 0.079608 -0.88069 2715 28 +0.011524 0.152455 8 1 0.070215 -0.886424 5353 28 +0.014132 0.127708 8 1 0.066835 -0.890871 1492 29 +0.012178 0.24279 8 1 0.064058 -0.886424 1338 28 +0.011524 0.24279 8 1 0.064058 -0.873493 5096 28 +0.010598 0.127708 0 1 0.086288 -0.760692 38769 28 +0.010598 0.152455 8 1 0.074387 -0.864334 2491 29 +0.01027 0.127708 0 1 0.09463 -0.8098 4884 29 +0.012178 0.127708 0 1 0.064058 -0.837831 8506 29 +0.011011 0.127708 8 1 0.079608 -0.864334 6431 29 +0.011011 0.127708 8 1 0.09463 -0.873493 8287 28 +0.011011 0.127708 8 1 0.105575 -0.88069 5243 29 +0.01027 0.152455 8 1 0.105575 -0.88069 1564 29 +0.01027 0.127708 8 1 0.120239 -0.88069 1390 28 +0.010598 0.108189 0 1 0.144355 -0.88069 1576 29 +0.011011 0.127708 8 1 0.086288 -0.864334 1348 28 +0.010598 0.127708 8 1 0.09463 -0.853228 2560 28 +0.010598 0.152455 0 1 0.064058 -0.837831 1902 28 +0.01027 0.108189 8 1 0.09463 -0.760692 2498 28 +0.011011 0.091489 8 1 0.09463 -0.760692 2957 30 +0.011524 0.127708 8 1 0.066835 -0.853228 3727 28 +0.021285 0.037643 0 1 0.144355 -0.853228 3698 28 +0.014132 0.050218 0 1 0.144355 -0.837831 2388 29 +0.012997 0.076766 0 1 0.144355 -0.853228 7429 28 +0.012178 0.091489 0 1 0.144355 -0.873493 2657 29 +0.011011 0.063173 1 1 0.537133 -0.837831 1495 29 +0.026834 0.037643 0 1 0.105575 -0.760692 1849 28 +0.021285 0.050218 0 1 0.074387 0 19031 28 +0.021285 0.050218 1 1 0.070215 0 2103 30 +0.021285 0.063173 8 1 0.061816 0 3425 28 +0.015706 0.108189 0 1 0.086288 -0.890871 9183 28 +0.017996 0.108189 0 1 0.079608 -0.897588 1472 32 +0.017996 0.108189 0 1 0.09463 -0.897588 4166 28 +0.012178 0.108189 8 1 0.09463 -0.886424 3933 28 +0.012178 0.108189 8 1 0.09463 -0.88069 1954 28 +0.011524 0.108189 8 1 0.105575 -0.886424 1860 28 +0.011524 0.127708 8 1 0.09463 -0.890871 6184 28 +0.011524 0.152455 8 1 0.086288 -0.894537 2861 30 +0.015706 0.108189 0 1 0.070215 -0.88069 3687 28 +1.02577 0.091489 0 1 0.074387 -0.897588 3054 28 +0.026834 0.091489 8 1 0.064058 -0.886424 1419 29 +0.021285 0.091489 0 1 0.070215 -0.886424 2470 28 +0.021285 0.076766 0 1 0.086288 -0.864334 16839 28 +0.021285 0.076766 0 1 0.105575 -0.890871 2810 28 +0.021285 0.091489 0 1 0.09463 -0.894537 1368 28 +0.021285 0.076766 8 1 0.066835 -0.837831 3699 28 +0.017996 0.076766 0 1 0.070215 -0.837831 1736 29 +0.017996 0.076766 0 1 0.066835 -0.8098 1864 28 +0.021285 0.063173 0 1 0.144355 -0.88069 5470 28 +0.026834 0.063173 1 1 0.144355 -0.894537 9471 28 +0.026834 0.050218 0 1 0.105575 -0.873493 2561 29 +0.021285 0.050218 1 1 0.079608 -0.760692 1458 29 +1.02577 0.063173 0 1 0.079608 -0.894537 1368 28 +1.02577 0.037643 1 1 0.144355 -0.897588 1653 29 +1.02577 0.091489 0 1 0.086288 -0.897588 3048 28 +1.02577 0.022928 0 1 0.537133 -0.8098 3027 28 +0.011011 0.108189 0 1 0.105575 -0.853228 8470 28 +0.01027 0.108189 8 1 0.120239 -0.853228 1550 32 +0.01027 0.152455 8 1 0.105575 -0.873493 2633 29 +0.014132 0.091489 0 1 0.105575 -0.864334 4367 29 +0.011524 0.091489 0 1 0.120239 -0.864334 1464 32 +0.010598 0.108189 0 1 0.120239 -0.853228 2080 28 +0.011011 0.091489 0 1 0.120239 -0.8098 6997 28 +0.011011 0.091489 1 1 0.105575 -0.760692 3493 28 +0.01027 0.108189 1 1 0.105575 -0.760692 3152 28 +0.010598 0.108189 1 1 0.105575 -0.837831 2452 29 +0.011011 0.108189 8 1 0.09463 -0.837831 1502 29 +0.010598 0.108189 8 1 0.09463 -0.760692 3163 28 +0.01027 0.152455 0 1 0.120239 -0.873493 2469 28 +0.014132 0.127708 8 1 0.066835 -0.886424 1804 28 +0.014132 0.037643 0 1 0.120239 0 2998 28 +0.021285 0.037643 0 1 0.120239 -0.760692 7712 28 +0.01027 0.127708 0 1 0.09463 -0.760692 1789 28 +0.012997 0.063173 1 1 0.105575 -0.760692 1780 28 +0.014132 0.063173 0 1 0.105575 -0.760692 1482 29 +0.012997 0.076766 0 1 0.105575 -0.760692 4375 28 +0.014132 0.076766 0 1 0.105575 -0.837831 2857 30 +0.011524 0.076766 0 1 0.105575 0 1780 28 +0.014132 0.152455 8 1 0.061816 -0.88069 3544 28 +1.02577 0.152455 0 1 0.061816 -0.897588 1804 28 +0.026834 0.037643 0 1 0.079608 0 7071 28 +0.012178 0.108189 0 1 0.105575 -0.8098 51834 28 +0.011524 0.091489 0 1 0.120239 -0.8098 4543 29 +0.012178 0.076766 0 1 0.144355 -0.837831 2789 28 +0.012178 0.108189 0 1 0.144355 -0.894537 2042 28 +0.011524 0.127708 0 1 0.537133 -0.897588 1293 31 +0.012997 0.063173 1 1 0.144355 -0.837831 2660 28 +0.012178 0.091489 0 1 0.120239 -0.837831 2652 28 +0.011524 0.108189 0 1 0.120239 -0.853228 7104 28 +0.011011 0.108189 0 1 0.120239 -0.837831 2400 29 +0.011011 0.108189 0 1 0.144355 -0.873493 1496 29 +0.011011 0.127708 0 1 0.120239 -0.886424 1393 28 +0.01027 0.108189 8 1 0.537133 -0.864334 1329 28 +0.012178 0.108189 0 1 0.120239 -0.864334 3706 28 +0.015706 0.091489 0 1 0.120239 -0.886424 8245 28 +0.015706 0.076766 0 1 0.105575 -0.864334 3246 29 +0.017996 0.076766 0 1 0.120239 -0.886424 2605 28 +0.021285 0.091489 8 1 0.074387 -0.873493 14127 28 +0.026834 0.091489 8 1 0.064058 -0.873493 1307 28 +0.017996 0.076766 8 1 0.074387 -0.837831 2480 28 +0.017996 0.076766 0 1 0.086288 -0.8098 15590 28 +0.021285 0.091489 0 1 0.09463 -0.890871 2395 28 +0.015706 0.108189 8 1 0.074387 -0.88069 2386 28 +0.012997 0.127708 8 1 0.086288 -0.760692 264642 28 +0.012178 0.127708 8 1 0.09463 -0.890871 2329 34 +0.012178 0.127708 8 1 0.105575 -0.890871 3556 29 +0.011524 0.127708 8 1 0.105575 -0.886424 1698 29 +0.012178 0.127708 0 1 0.144355 -0.894537 2297 29 +0.011524 0.127708 0 1 0.144355 -0.890871 1294 31 +0.011524 0.127708 8 1 0.105575 -0.88069 2287 29 +0.014132 0.127708 8 1 0.079608 -0.890871 6607 29 +0.012178 0.127708 8 1 0.105575 -0.88069 4842 28 +0.011524 0.127708 0 1 0.09463 -0.873493 1376 28 +0.011524 0.127708 0 1 0.120239 -0.88069 2626 28 +0.011011 0.127708 0 1 0.120239 -0.873493 3403 28 +0.011524 0.127708 0 1 0.105575 -0.873493 1316 28 +0.012178 0.127708 0 1 0.105575 -0.873493 3199 28 +0.010598 0.127708 8 1 0.09463 -0.760692 5892 28 +0.012997 0.108189 0 1 0.09463 -0.8098 21063 28 +0.014132 0.091489 8 1 0.09463 -0.853228 2164 29 +0.014132 0.108189 8 1 0.09463 -0.88069 4618 28 +0.012997 0.127708 8 1 0.09463 -0.890871 2578 28 +0.021285 0.063173 0 1 0.105575 -0.760692 54282 28 +0.015706 0.076766 0 1 0.105575 -0.760692 12594 28 +1.02577 0.037643 0 1 0.105575 -0.8098 36676 28 +1.02577 0.050218 0 1 0.079608 -0.837831 12051 28 +1.02577 0.050218 0 1 0.066835 -0.8098 1599 32 +1.02577 0.050218 8 1 0.070215 -0.853228 1528 32 +1.02577 0.063173 8 1 0.061816 -0.8098 2183 29 +1.02577 0.050218 0 1 0.064058 -0.760692 2652 28 +1.02577 0.037643 8 1 0.09463 -0.873493 1800 28 +1.02577 0.037643 8 1 0.079608 -0.8098 2126 29 +0.026834 0.050218 1 1 0.074387 -0.760692 1568 29 +0.026834 0.050218 1 1 0.105575 -0.88069 1272 28 +0.017996 0.037643 1 1 0.120239 -0.760692 2594 28 +0.010598 0.152455 8 1 0.09463 -0.864334 9878 28 +0.010598 0.152455 8 1 0.105575 -0.873493 2169 29 +0.010598 0.186669 8 1 0.079608 -0.88069 1344 28 +0.010598 0.186669 8 1 0.079608 -0.864334 3537 28 +0.017996 0.063173 0 1 0.074387 0 10443 28 +0.017996 0.076766 0 1 0.064058 0 4241 28 +0.011524 0.076766 0 1 0.120239 0 5200 28 +0.012178 0.063173 0 1 0.120239 0 3044 28 +0.012997 0.063173 0 1 0.120239 -0.760692 2375 28 +0.026834 0.022928 0 1 0.144355 0 10975 28 +0.014132 0.050218 0 1 0.120239 0 3458 28 +0.014132 0.063173 0 1 0.120239 -0.8098 2912 28 +0.012997 0.108189 0 1 0.105575 -0.864334 6901 28 +0.014132 0.108189 0 1 0.105575 -0.886424 3435 28 +0.017996 0.063173 0 1 0.120239 -0.864334 1719 28 +0.014132 0.127708 0 1 0.064058 -0.760692 10303 28 +0.014132 0.127708 8 1 0.066835 -0.873493 2019 30 +0.014132 0.127708 8 1 0.079608 -0.873493 11834 28 +0.014132 0.127708 8 1 0.070215 -0.864334 3025 28 +0.026834 0.063173 0 1 0.537133 -0.894537 1714 28 +0.021285 0.091489 0 1 0.086288 -0.886424 1714 28 +0.014132 0.091489 0 1 0.120239 -0.864334 5700 28 +0.015706 0.076766 0 1 0.120239 -0.873493 1451 29 +0.017996 0.076766 0 1 0.120239 -0.873493 6682 28 +0.014132 0.076766 0 1 0.144355 -0.864334 2377 28 +0.012997 0.108189 0 1 0.120239 -0.864334 5244 28 +0.014132 0.152455 8 1 0.066835 -0.894537 2846 28 +0.012997 1.43371 8 1 0.066835 -0.897588 1421 29 +0.010598 0.127708 0 1 0.120239 -0.853228 7367 28 +0.01027 0.127708 1 1 0.120239 -0.837831 2342 28 +0.010598 0.127708 1 1 0.105575 -0.837831 1563 29 +0.012997 0.108189 0 1 0.061816 0 6230 28 +0.011011 0.091489 0 1 0.070215 0 11879 28 +0.011524 0.091489 8 1 0.064058 0 1742 28 +0.014132 0.091489 0 1 0.070215 0 30571 28 +0.015706 0.091489 0 1 0.066835 0 8198 29 +0.012997 0.091489 0 1 0.086288 0 41359 28 +0.011524 0.091489 8 1 0.086288 0 2273 29 +0.012178 0.108189 0 1 0.079608 0 50081 28 +0.011011 0.127708 0 1 0.064058 0 4513 28 +0.01027 0.108189 8 1 0.086288 0 1809 28 +0.01027 0.108189 0 1 0.09463 0 2447 28 +0.012997 0.108189 0 1 0.074387 0 12283 28 +0.021285 0.091489 0 1 0.086288 -0.760692 236082 28 +0.017996 0.091489 0 1 0.09463 -0.88069 2632 31 +0.021285 0.091489 8 1 0.079608 -0.853228 1820 30 +0.026834 0.091489 8 1 0.061816 -0.853228 1408 28 +0.017996 0.091489 0 1 0.09463 -0.873493 3173 28 +0.015706 0.091489 0 1 0.105575 -0.873493 2676 30 +0.015706 0.091489 0 1 0.09463 -0.864334 1887 28 +0.017996 0.091489 0 1 0.105575 -0.88069 4304 28 +0.021285 0.091489 0 1 0.105575 -0.890871 2612 29 +0.015706 0.091489 0 1 0.105575 -0.864334 1839 28 +0.017996 0.091489 0 1 0.120239 -0.88069 5220 28 +0.015706 0.091489 0 1 0.09463 -0.853228 2315 28 +0.015706 0.091489 0 1 0.105575 -0.760692 58207 28 +0.014132 0.091489 8 1 0.09463 -0.760692 1292 28 +0.012997 0.108189 0 1 0.105575 -0.760692 29946 28 +0.012178 0.127708 0 1 0.09463 -0.760692 37127 28 +0.012178 0.127708 0 1 0.105575 -0.760692 41180 28 +0.011524 0.127708 0 1 0.120239 -0.864334 3285 28 +0.01027 0.127708 0 1 0.120239 -0.8098 1840 28 +0.010598 0.127708 0 1 0.120239 -0.760692 8803 28 +0.01027 0.091489 0 1 0.120239 0 1348 28 +0.011011 0.127708 0 1 0.120239 -0.837831 2607 28 +0.011524 0.127708 0 1 0.120239 -0.853228 1455 29 +0.017996 0.091489 0 1 0.09463 -0.8098 20701 28 +0.017996 0.076766 0 1 0.105575 -0.853228 3518 29 +0.021285 0.037643 1 1 0.120239 -0.760692 3372 27 +0.010598 0.037643 8 10 0.09463 -0.890871 1059 30 +0.015706 0.037643 1 1 0.537133 -0.864334 1020 30 +0.011011 0.127708 1 1 0.105575 -0.760692 1255 28 +0.011524 0.127708 0 1 0.537133 -0.890871 1195 28 +0.011011 0.091489 8 1 0.537133 -0.873493 1218 28 +0.021285 0.091489 1 1 0.120239 -0.897588 1188 28 +0.017996 0.091489 1 1 0.120239 -0.88069 3675 28 +0.021285 0.063173 8 1 0.09463 -0.864334 1075 30 +0.026834 0.076766 1 1 0.120239 -0.897588 1780 28 +0.01027 0.24279 8 1 0.086288 -0.886424 1175 28 +0.017996 0.063173 1 1 0.105575 -0.853228 1169 28 +0.01027 0.108189 0 1 0.105575 0 1151 28 +0.026834 0.076766 1 1 0.144355 -0.897588 1136 28 +0.017996 0.063173 1 1 0.120239 -0.853228 4521 28 +0.015706 0.050218 0 1 0.120239 -0.8098 1602 29 +0.014132 0.063173 1 1 0.120239 -0.8098 1158 28 +0.017996 0.091489 1 1 0.537133 -0.890871 10134 28 +0.026834 0.091489 0 1 0.537133 -0.894537 18118 28 +0.021285 0.076766 0 1 0.144355 -0.890871 1332 31 +0.026834 0.076766 0 1 0.070215 -0.886424 1281 28 +0.026834 0.076766 0 1 0.070215 -0.873493 1888 28 +0.01027 0.091489 1 1 0.120239 0 1124 27 +0.010598 0.063173 1 1 0.144355 0 1453 29 +0.011524 0.186669 8 1 0.066835 -0.88069 2245 27 +1.02577 0.037643 0 1 0.086288 -0.760692 6159 27 +1.02577 0.050218 0 1 0.070215 -0.760692 2822 28 +0.011011 0.127708 0 1 0.120239 -0.8098 2797 27 +1.02577 0.050218 0 1 0.079608 -0.760692 5029 27 +1.02577 0.050218 0 1 0.105575 -0.873493 7815 27 +1.02577 0.063173 0 1 0.09463 -0.894537 1021 30 +1.02577 0.076766 0 1 0.086288 -0.894537 1327 28 +1.02577 0.091489 0 1 0.079608 -0.894537 1163 28 +1.02577 0.091489 0 1 0.064058 -0.886424 1289 28 +1.02577 0.050218 1 1 0.105575 -0.886424 1159 28 +0.012997 0.076766 0 1 0.120239 0 11160 27 +0.012178 0.108189 0 1 0.120239 -0.8098 8503 28 +0.021285 0.108189 8 1 0.070215 -0.886424 10038 27 +0.026834 0.108189 0 1 0.070215 -0.890871 3144 29 +1.02577 0.127708 0 1 0.061816 -0.894537 1229 28 +0.017996 0.152455 8 1 0.061816 -0.890871 1938 28 +0.017996 0.108189 8 1 0.066835 -0.88069 1829 28 +0.021285 0.152455 8 1 0.061816 -0.886424 2866 28 +0.026834 0.108189 0 1 0.066835 -0.886424 1112 27 +0.010598 0.152455 0 1 0.537133 -0.894537 1111 27 +0.010598 0.152455 0 1 0.120239 -0.886424 1196 28 +0.014132 0.108189 0 1 0.061816 0 2217 27 +0.011011 1.43371 0 1 0.079608 -0.897588 1106 27 +1.02577 0.063173 0 1 0.074387 -0.886424 1658 27 +1.02577 0.063173 0 1 0.066835 -0.853228 3025 28 +1.02577 0.063173 0 1 0.064058 -0.760692 2465 28 +1.02577 0.091489 0 1 0.064058 -0.873493 1809 28 +0.014132 0.127708 0 1 0.105575 -0.873493 42474 27 +0.015706 0.127708 8 1 0.086288 -0.894537 7606 28 +0.017996 0.127708 8 1 0.064058 -0.890871 1605 29 +0.015706 0.127708 1 1 0.105575 -0.897588 2749 28 +0.021285 0.127708 8 1 0.066835 -0.894537 1833 28 +0.017996 0.127708 8 1 0.079608 -0.897588 1496 29 +0.014132 0.108189 0 1 0.09463 -0.864334 2269 28 +0.015706 0.152455 0 1 0.086288 -0.890871 47322 27 +0.015706 0.127708 0 1 0.074387 -0.886424 3319 29 +0.012997 0.152455 8 1 0.066835 -0.886424 1487 29 +0.021285 0.152455 8 1 0.079608 -0.897588 5904 28 +0.021285 0.152455 8 1 0.066835 -0.894537 1216 28 +0.021285 0.152455 8 1 0.070215 -0.894537 1770 28 +0.017996 0.127708 8 1 0.070215 -0.890871 1115 30 +0.014132 0.152455 8 1 0.074387 -0.886424 6864 28 +0.012997 0.152455 8 1 0.079608 -0.886424 3370 28 +0.017996 0.127708 8 1 0.070215 -0.88069 9000 28 +0.015706 0.127708 8 1 0.061816 -0.837831 8750 28 +0.015706 0.108189 8 1 0.066835 -0.873493 2078 28 +0.015706 0.108189 8 1 0.066835 -0.864334 2654 28 +0.015706 0.108189 8 1 0.061816 -0.8098 1746 28 +0.021285 0.108189 0 1 0.086288 -0.890871 9503 27 +0.017996 0.152455 8 1 0.074387 -0.894537 1295 31 +0.021285 0.108189 0 1 0.09463 -0.894537 3664 30 +0.017996 0.152455 8 1 0.079608 -0.894537 1715 28 +0.021285 0.127708 8 1 0.079608 -0.894537 1238 31 +0.012178 0.152455 0 1 0.086288 -0.853228 83743 27 +0.011524 0.186669 8 1 0.064058 -0.864334 1493 32 +0.012997 0.152455 0 1 0.086288 -0.886424 1322 31 +0.014132 0.152455 8 1 0.064058 -0.88069 1257 31 +0.011524 0.186669 8 1 0.066835 -0.864334 1947 30 +0.011011 0.186669 8 1 0.070215 -0.864334 1765 29 +0.012178 0.152455 8 1 0.061816 -0.837831 2156 29 +0.011011 0.152455 8 1 0.09463 -0.853228 12270 28 +0.011011 0.152455 8 1 0.064058 -0.760692 7265 28 +0.010598 0.152455 0 1 0.061816 0 1409 28 +0.011011 0.186669 0 1 0.066835 -0.760692 19972 28 +0.010598 0.186669 8 1 0.074387 -0.853228 1406 31 +0.011011 0.152455 8 1 0.070215 -0.837831 1954 30 +0.010598 0.24279 8 1 0.061816 -0.760692 1778 29 +0.010598 0.186669 0 1 0.079608 -0.760692 23197 28 +0.011011 0.152455 8 1 0.079608 -0.837831 3082 29 +0.01027 1.43371 8 2 0.061816 -0.8098 1143 28 +0.011524 0.152455 0 1 0.120239 -0.890871 10208 28 +0.011524 0.152455 0 1 0.09463 -0.88069 2548 28 +0.012178 0.152455 8 1 0.09463 -0.894537 1714 28 +0.011524 0.152455 0 1 0.09463 -0.873493 1696 28 +0.012997 0.152455 0 1 0.09463 -0.864334 48926 28 +0.014132 0.152455 8 1 0.074387 -0.88069 3181 29 +0.012997 0.127708 0 1 0.105575 -0.864334 2317 29 +0.012997 0.186669 8 1 0.061816 -0.873493 1476 29 +0.012997 0.186669 8 1 0.064058 -0.873493 2604 28 +0.014132 0.152455 0 1 0.09463 -0.890871 3842 28 +0.012178 0.152455 8 1 0.105575 -0.890871 3050 28 +0.015706 0.152455 8 1 0.070215 -0.88069 5198 28 +0.017996 0.152455 8 1 0.066835 -0.886424 1868 28 +0.017996 0.152455 0 1 0.079608 -0.890871 3973 28 +0.015706 0.127708 8 1 0.061816 -0.8098 1670 27 +0.021285 0.127708 0 1 0.064058 -0.873493 7722 27 +0.017996 0.127708 8 1 0.066835 -0.873493 3047 28 +0.021285 0.127708 8 1 0.061816 -0.853228 5900 28 +0.021285 0.108189 8 1 0.064058 -0.853228 5068 28 +0.015706 0.127708 0 1 0.064058 -0.8098 10132 28 +0.017996 0.108189 0 1 0.064058 -0.837831 2607 28 +0.021285 0.108189 0 1 0.064058 -0.837831 1779 28 +0.021285 0.108189 0 1 0.064058 -0.760692 17872 28 +0.015706 0.127708 8 1 0.061816 -0.760692 2100 28 +0.017996 0.127708 0 1 0.061816 -0.837831 1139 28 +0.017996 0.108189 8 1 0.066835 -0.864334 1120 27 +0.015706 0.108189 0 1 0.086288 -0.760692 85083 27 +0.015706 0.127708 8 1 0.070215 -0.864334 4588 28 +0.015706 0.108189 0 1 0.09463 -0.873493 5983 28 +0.015706 0.127708 0 1 0.074387 -0.873493 2984 28 +0.015706 0.127708 0 1 0.070215 -0.8098 27801 28 +0.014132 0.127708 8 1 0.086288 -0.8098 38603 27 +0.014132 0.127708 0 1 0.09463 -0.864334 2884 32 +0.015706 0.127708 0 1 0.074387 -0.853228 4529 29 +0.017996 0.127708 0 1 0.070215 -0.837831 23345 27 +0.017996 0.108189 0 1 0.066835 -0.760692 5040 28 +0.017996 0.108189 0 1 0.070215 -0.760692 5956 28 +0.021285 0.108189 0 1 0.070215 -0.760692 19067 27 +0.021285 0.127708 0 1 0.066835 -0.864334 3520 29 +0.021285 0.127708 0 1 0.070215 -0.88069 1686 29 +0.021285 0.127708 0 1 0.074387 -0.873493 13214 28 +0.017996 0.108189 8 1 0.079608 -0.88069 2404 29 +0.017996 0.108189 0 1 0.09463 -0.88069 7184 28 +0.017996 0.108189 0 1 0.086288 -0.873493 3419 28 +0.026834 0.127708 8 1 0.079608 -0.897588 2203 27 +1.02577 0.108189 0 1 0.074387 -0.894537 1801 28 +0.026834 0.127708 0 1 0.074387 -0.894537 1148 28 +0.026834 0.127708 0 1 0.070215 -0.88069 7346 28 +0.026834 0.127708 0 1 0.064058 -0.873493 1525 29 +0.017996 0.127708 0 1 0.070215 -0.8098 8236 27 +0.017996 0.127708 0 1 0.061816 -0.760692 1789 30 +0.011524 0.186669 8 1 0.066835 -0.853228 1645 27 +1.02577 0.022928 8 1 0.120239 -0.8098 3276 27 +0.026834 0.127708 0 1 0.079608 -0.894537 1090 27 +0.026834 0.076766 0 1 0.105575 -0.760692 211343 27 +1.02577 0.063173 0 1 0.079608 -0.873493 3193 32 +0.017996 0.091489 0 1 0.09463 -0.760692 4871 30 +0.026834 0.108189 0 1 0.061816 -0.837831 2149 29 +0.026834 0.091489 8 1 0.064058 -0.837831 2189 29 +0.026834 0.091489 0 1 0.066835 -0.864334 1133 31 +0.026834 0.127708 0 1 0.064058 -0.864334 1488 29 +1.02577 0.063173 0 1 0.066835 -0.8098 1249 28 +1.02577 0.063173 0 1 0.079608 -0.853228 3563 28 +0.026834 0.091489 0 1 0.105575 -0.88069 18449 27 +0.026834 0.127708 0 1 0.079608 -0.890871 3091 28 +0.021285 0.091489 0 1 0.09463 -0.760692 18797 28 +0.026834 0.108189 0 1 0.061816 -0.760692 4383 27 +0.011011 0.108189 0 1 0.086288 0 4350 27 +0.015706 0.108189 0 1 0.09463 -0.760692 34196 27 +0.014132 0.108189 0 1 0.105575 -0.760692 15582 28 +0.014132 0.127708 0 1 0.120239 -0.88069 15711 27 +0.014132 0.108189 0 1 0.120239 -0.873493 1340 31 +0.012178 0.127708 0 1 0.537133 -0.890871 1384 28 +0.026834 0.091489 0 1 0.09463 -0.864334 11910 27 +0.026834 0.127708 0 1 0.070215 -0.864334 6354 28 +0.017996 0.108189 0 1 0.066835 0 34489 27 +0.011011 0.127708 0 1 0.120239 -0.760692 3770 27 +0.026834 0.050218 0 1 0.074387 0 8607 27 +0.014132 0.108189 0 1 0.120239 -0.864334 1605 27 +0.011524 0.186669 8 1 0.079608 -0.853228 25120 27 +0.011524 0.186669 8 1 0.086288 -0.890871 4928 28 +0.011524 0.24279 8 1 0.086288 -0.897588 1468 29 +0.011011 0.186669 8 1 0.086288 -0.886424 1385 28 +0.011011 0.186669 0 1 0.079608 -0.8098 13156 28 +0.010598 0.186669 8 1 0.086288 -0.873493 1698 28 +0.010598 0.186669 8 1 0.086288 -0.864334 1127 28 +0.01027 0.152455 0 1 0.120239 -0.760692 26163 27 +0.01027 0.186669 0 1 0.086288 -0.8098 4397 28 +0.010598 0.127708 8 1 0.086288 0 17556 27 +0.011011 0.127708 0 1 0.070215 0 3611 29 +0.01027 0.127708 1 1 0.105575 0 4060 28 +0.011011 0.127708 0 1 0.079608 0 4920 27 +0.012178 0.127708 0 1 0.070215 0 16328 27 +0.015706 0.127708 0 1 0.061816 0 6405 28 +0.012997 0.127708 0 1 0.064058 0 2324 28 +0.012997 0.127708 0 1 0.066835 0 2836 28 +1.02577 0.050218 0 1 0.086288 -0.837831 2660 27 +1.02577 0.050218 8 1 0.086288 -0.853228 1615 27 +0.026834 0.037643 1 1 0.09463 -0.760692 1750 28 +0.015706 0.127708 0 1 0.09463 -0.864334 27608 27 +0.017996 0.127708 0 1 0.079608 -0.873493 4305 27 +0.012997 0.152455 8 1 0.079608 -0.837831 35555 27 +0.011524 0.186669 8 1 0.064058 -0.837831 1194 28 +0.011524 0.152455 8 1 0.079608 -0.8098 9781 27 +0.011524 0.186669 0 1 0.061816 -0.760692 2544 29 +0.011524 0.186669 8 1 0.070215 -0.8098 5238 28 +0.011524 0.186669 0 1 0.074387 -0.837831 1371 28 +0.015706 0.152455 0 1 0.066835 -0.760692 82675 27 +0.014132 0.152455 8 1 0.070215 -0.853228 4634 29 +0.011524 0.152455 8 1 0.070215 -0.760692 3659 29 +0.015706 0.152455 8 1 0.070215 -0.873493 1282 28 +0.015706 0.152455 0 1 0.070215 -0.853228 3487 28 +0.012178 0.186669 0 1 0.064058 -0.760692 8604 28 +0.012997 0.186669 8 1 0.061816 -0.853228 1111 30 +0.012178 0.186669 8 1 0.066835 -0.853228 3326 28 +0.012178 0.24279 8 1 0.061816 -0.853228 1318 28 +0.017996 0.127708 0 1 0.064058 -0.760692 2212 27 +0.014132 0.127708 0 1 0.105575 -0.760692 87358 27 +0.014132 0.127708 1 1 0.105575 -0.8098 6913 28 +0.012178 0.127708 1 1 0.105575 -0.760692 1299 28 +0.012178 0.091489 1 1 0.120239 -0.8098 1763 28 +0.011524 0.127708 8 1 0.120239 -0.853228 1333 28 +0.014132 0.127708 8 1 0.120239 -0.88069 1085 27 +0.014132 0.152455 0 1 0.09463 -0.760692 270734 27 +0.014132 0.152455 8 1 0.086288 -0.8098 1216 31 +0.015706 0.152455 0 1 0.070215 -0.8098 5272 29 +0.010598 0.186669 0 1 0.086288 -0.8098 5336 28 +0.015706 0.152455 0 1 0.09463 -0.873493 27163 28 +0.017996 0.152455 0 1 0.09463 -0.897588 3782 27 +0.017996 0.108189 0 1 0.086288 -0.760692 49296 27 +0.017996 0.127708 0 1 0.074387 -0.864334 1690 32 +0.012997 0.037643 0 1 0.144355 0 1059 27 +0.021285 0.152455 8 1 0.070215 -0.890871 1058 27 +0.021285 0.152455 0 1 0.074387 -0.890871 1093 27 +0.010598 0.076766 8 2 0.066835 -0.864334 2115 27 +0.010598 0.050218 8 3 0.064058 -0.8098 1228 28 +0.021285 0.037643 1 1 0.079608 0 3163 27 +0.021285 0.022928 1 1 0.086288 0 1175 31 +1.02577 0.076766 0 1 0.120239 -0.897588 2635 27 +0.011011 0.108189 1 1 0.120239 -0.760692 1054 27 +0.01027 0.127708 1 1 0.120239 0 2391 28 +0.012997 0.186669 8 1 0.066835 -0.864334 3682 27 +0.015706 0.186669 8 1 0.066835 -0.88069 10838 27 +1.02577 1.43371 0 1 0.061816 -0.897588 1070 30 +0.021285 0.186669 8 1 0.061816 -0.886424 1253 31 +0.015706 0.186669 8 1 0.070215 -0.894537 2837 29 +0.012178 0.186669 8 1 0.070215 -0.88069 1499 29 +0.014132 0.24279 8 1 0.061816 -0.88069 1201 28 +0.014132 0.186669 8 1 0.074387 -0.897588 1141 28 +0.017996 0.186669 8 1 0.061816 -0.873493 2794 27 +0.017996 0.152455 8 1 0.061816 -0.853228 1554 29 +0.012997 0.091489 0 1 0.105575 0 18378 27 +0.010598 0.127708 0 1 0.09463 0 3997 28 +0.010598 0.108189 0 1 0.105575 0 1392 31 +0.010598 0.108189 0 1 0.120239 0 1515 29 +0.011011 0.108189 0 1 0.105575 0 3860 28 +0.011524 0.108189 0 1 0.09463 0 5704 28 +0.011524 0.108189 0 1 0.105575 0 2181 27 +0.021285 0.076766 0 1 0.120239 -0.760692 68247 27 +0.021285 0.076766 0 1 0.144355 -0.886424 1652 29 +0.017996 0.076766 8 1 0.120239 -0.864334 1284 28 +0.017996 0.050218 0 1 0.120239 0 21547 27 +0.017996 0.063173 0 1 0.079608 0 3536 28 +0.021285 0.037643 0 1 0.09463 0 4699 28 +0.021285 0.037643 1 1 0.086288 0 1273 28 +0.017996 0.037643 0 1 0.144355 0 4593 28 +0.014132 0.050218 1 1 0.144355 -0.8098 1778 28 +0.014132 0.050218 0 1 0.144355 -0.760692 1076 27 +0.012178 0.063173 0 1 0.144355 -0.760692 1662 27 +0.014132 0.063173 1 1 0.144355 -0.8098 2757 27 +0.014132 0.076766 8 1 0.144355 -0.853228 1847 28 +0.011011 0.152455 0 1 0.105575 -0.873493 3668 27 +0.011524 0.152455 8 1 0.120239 -0.886424 3063 28 +0.011011 0.152455 8 1 0.120239 -0.88069 1841 28 +0.012997 0.152455 0 1 0.105575 -0.88069 11799 27 +0.011524 0.152455 0 1 0.120239 -0.88069 1153 31 +0.015706 0.091489 0 1 0.120239 -0.760692 26708 27 +0.015706 0.108189 0 1 0.120239 -0.873493 13410 27 +0.014132 0.108189 1 1 0.120239 -0.8098 16053 27 +0.012997 0.076766 1 1 0.120239 -0.760692 1188 28 +0.015706 0.050218 1 1 0.120239 -0.760692 1604 27 +0.017996 0.108189 0 1 0.105575 -0.890871 3174 27 +0.021285 0.108189 0 1 0.120239 -0.894537 5958 27 +0.026834 0.108189 0 1 0.105575 -0.897588 2221 27 +0.011524 0.127708 0 1 0.144355 -0.760692 47130 27 +0.010598 0.108189 8 1 0.144355 -0.760692 1485 32 +0.010598 0.108189 0 1 0.537133 -0.837831 1768 29 +0.012178 0.091489 8 1 0.144355 -0.853228 1444 29 +0.010598 0.127708 0 1 0.537133 -0.853228 1431 29 +0.011011 0.076766 0 1 0.537133 -0.760692 1385 28 +0.01027 0.127708 8 1 0.144355 0 2472 28 +0.010598 0.108189 0 1 0.144355 0 1003 30 +0.012178 0.091489 0 1 0.144355 -0.760692 3053 28 +0.010598 0.127708 0 1 0.537133 -0.8098 1602 27 +0.014132 0.152455 0 1 0.120239 -0.8098 233665 27 +0.012997 0.127708 1 1 0.120239 -0.8098 1601 29 +0.012178 0.127708 0 1 0.120239 -0.760692 4577 28 +0.014132 0.108189 0 1 0.120239 -0.760692 5444 28 +0.014132 0.127708 0 1 0.120239 -0.760692 7856 28 +0.015706 0.152455 8 1 0.120239 -0.897588 3696 27 +0.014132 0.127708 0 1 0.070215 0 17228 27 +0.014132 0.108189 0 1 0.074387 0 8519 28 +0.014132 0.091489 0 1 0.079608 0 4275 29 +0.015706 0.152455 0 1 0.09463 -0.8098 109092 27 +0.017996 0.127708 0 1 0.074387 -0.837831 4745 27 +0.021285 0.108189 8 1 0.074387 -0.864334 1565 27 +0.021285 0.108189 0 1 0.09463 -0.864334 25243 27 +0.021285 0.108189 0 1 0.105575 -0.890871 1356 31 +0.021285 0.127708 0 1 0.079608 -0.88069 2210 29 +0.026834 0.108189 0 1 0.079608 -0.886424 1314 28 +0.021285 0.108189 0 1 0.105575 -0.88069 7140 28 +0.021285 0.108189 0 1 0.074387 -0.760692 9873 27 +0.010598 0.152455 0 1 0.120239 -0.760692 4666 27 +0.011524 0.152455 0 1 0.105575 -0.760692 7179 27 +1.02577 0.050218 8 1 0.09463 -0.864334 1554 27 +1.02577 0.037643 8 1 0.105575 -0.837831 2373 28 +0.015706 0.127708 0 1 0.120239 -0.890871 5178 27 +0.015706 0.127708 0 1 0.105575 -0.886424 1731 28 +0.015706 0.127708 0 1 0.105575 -0.873493 4849 27 +1.02577 0.037643 0 1 0.120239 -0.760692 25872 27 +0.026834 0.050218 0 1 0.120239 -0.837831 5999 29 +0.026834 0.063173 0 1 0.120239 -0.873493 3394 29 +0.026834 0.063173 0 1 0.144355 -0.88069 4371 27 +0.026834 0.037643 0 1 0.144355 -0.853228 1872 30 +0.026834 0.037643 0 1 0.537133 -0.873493 1299 28 +1.02577 0.050218 0 1 0.120239 -0.88069 2169 27 +1.02577 0.063173 0 1 0.120239 -0.886424 5540 27 +0.026834 0.050218 0 1 0.144355 -0.864334 4180 27 +0.015706 0.063173 0 1 0.144355 -0.837831 3043 28 +0.021285 0.076766 0 1 0.144355 -0.864334 10331 27 +0.015706 0.076766 0 1 0.537133 -0.864334 6017 28 +0.012178 0.091489 0 1 0.537133 -0.864334 1051 30 +0.012178 0.050218 1 1 0.537133 -0.760692 1277 28 +0.014132 0.063173 0 1 0.537133 -0.837831 1977 28 +0.012178 0.076766 0 1 0.537133 -0.760692 1621 29 +0.026834 0.063173 0 1 0.537133 -0.88069 4249 28 +0.012178 0.091489 0 1 0.537133 -0.8098 1811 28 +0.017996 0.076766 0 1 0.144355 -0.760692 25889 27 +0.021285 0.063173 0 1 0.144355 -0.853228 1876 28 +0.026834 0.050218 0 1 0.144355 -0.837831 4850 28 +0.021285 0.063173 0 1 0.144355 -0.837831 1361 31 +0.021285 0.050218 0 1 0.144355 -0.760692 4078 28 +0.012997 0.063173 0 1 0.144355 0 1779 28 +0.021285 0.076766 0 1 0.144355 -0.853228 1621 27 +1.02577 0.022928 0 1 0.079608 0 7749 27 +0.017996 0.152455 0 1 0.066835 -0.837831 10847 27 +0.011524 0.186669 0 1 0.120239 -0.864334 101232 27 +0.010598 0.186669 0 1 0.537133 -0.894537 1998 30 +0.011011 0.186669 0 1 0.086288 -0.853228 1794 30 +0.011524 0.186669 0 1 0.086288 -0.853228 2214 29 +0.011524 0.186669 0 1 0.537133 -0.897588 2140 29 +0.010598 0.24279 0 1 0.144355 -0.897588 3553 29 +0.011011 0.24279 8 1 0.105575 -0.897588 1057 30 +0.01027 0.24279 0 1 0.144355 -0.894537 2035 28 +0.01027 0.24279 8 1 0.09463 -0.886424 1070 30 +0.010598 0.186669 0 1 0.537133 -0.88069 7960 27 +0.011011 0.152455 0 1 0.537133 -0.886424 1953 28 +0.011011 0.152455 0 1 0.144355 -0.873493 2462 28 +0.011524 0.186669 8 1 0.144355 -0.894537 2406 28 +0.01027 0.152455 0 1 0.144355 -0.760692 4173 28 +0.011011 0.152455 0 1 0.144355 -0.864334 1712 28 +0.011524 0.186669 8 1 0.537133 -0.894537 1136 28 +0.01027 0.152455 0 1 0.537133 -0.837831 1041 27 +0.010598 0.152455 8 1 0.537133 -0.864334 1846 28 +0.01027 0.186669 8 1 0.537133 -0.864334 3015 28 +0.026834 0.091489 0 1 0.537133 -0.890871 7687 27 +0.021285 0.091489 0 1 0.120239 -0.886424 1165 28 +0.026834 0.076766 8 1 0.120239 -0.890871 1635 27 +0.021285 0.091489 1 1 0.144355 -0.890871 1068 27 +0.021285 0.037643 1 1 0.144355 -0.837831 1183 28 +0.026834 0.076766 1 1 0.09463 -0.864334 2127 27 +0.026834 0.063173 0 1 0.074387 0 19970 27 +0.017996 0.022928 8 2 0.070215 -0.886424 1021 27 +1.02577 0.063173 0 1 0.079608 -0.837831 2552 27 +0.021285 0.152455 8 1 0.070215 -0.886424 2038 27 +0.014132 0.152455 0 1 0.144355 -0.864334 55525 27 +0.015706 0.127708 8 1 0.144355 -0.897588 1419 32 +0.015706 0.152455 8 1 0.144355 -0.897588 1174 31 +0.015706 0.091489 0 1 0.144355 -0.873493 2032 30 +0.017996 0.091489 0 1 0.537133 -0.886424 1923 33 +0.021285 0.091489 0 1 0.144355 -0.88069 4557 28 +0.012997 0.108189 1 1 0.144355 -0.8098 12770 28 +0.012178 0.127708 0 1 0.144355 -0.837831 2521 29 +0.015706 0.091489 0 1 0.144355 -0.8098 8630 28 +0.014132 0.091489 1 1 0.144355 -0.8098 1140 31 +0.014132 0.091489 0 1 0.144355 -0.760692 2175 30 +0.014132 0.108189 0 1 0.144355 -0.760692 8783 28 +0.026834 0.091489 0 1 0.144355 -0.886424 4440 27 +0.011524 0.186669 0 1 0.144355 -0.886424 3311 27 +0.014132 0.108189 8 1 0.144355 -0.837831 1086 27 +0.026834 0.076766 0 1 0.120239 -0.873493 2677 27 +0.026834 0.076766 0 1 0.120239 -0.853228 7296 27 +1.02577 0.063173 0 1 0.066835 -0.760692 1015 27 +0.026834 0.076766 8 1 0.066835 -0.760692 1517 27 +0.015706 0.076766 1 1 0.074387 0 1261 28 +0.021285 0.091489 8 1 0.074387 -0.8098 1386 28 +0.017996 0.108189 0 1 0.070215 0 19161 27 +0.017996 0.076766 8 1 0.070215 0 1215 28 +0.017996 0.127708 0 1 0.079608 -0.837831 8050 27 +0.017996 0.108189 0 1 0.105575 -0.760692 81966 27 +0.021285 0.091489 0 1 0.105575 -0.873493 1870 30 +0.017996 0.091489 0 1 0.144355 -0.873493 2680 30 +0.015706 0.127708 0 1 0.105575 -0.864334 3400 28 +0.017996 0.091489 0 1 0.120239 -0.864334 1920 28 +0.017996 0.091489 0 1 0.120239 -0.8098 8331 27 +0.017996 0.091489 8 1 0.120239 -0.853228 2639 27 +0.021285 0.091489 8 1 0.086288 -0.837831 1425 29 +0.015706 0.091489 8 1 0.120239 -0.837831 1084 30 +0.015706 0.091489 8 1 0.144355 -0.837831 2341 28 +0.017996 0.091489 8 1 0.144355 -0.873493 1261 28 +0.026834 0.076766 1 1 0.144355 -0.886424 2630 28 +0.021285 0.050218 1 1 0.09463 -0.760692 1624 27 +0.021285 0.050218 1 1 0.144355 -0.760692 9014 27 +0.017996 0.063173 1 1 0.120239 -0.8098 1740 28 +0.021285 0.063173 1 1 0.120239 -0.8098 2666 27 +0.021285 0.076766 1 1 0.144355 -0.873493 1077 27 +0.017996 0.091489 8 1 0.09463 -0.8098 1588 27 +0.017996 0.091489 0 1 0.144355 -0.853228 3106 27 +0.026834 0.091489 0 1 0.105575 -0.873493 2012 27 +0.026834 0.050218 0 1 0.079608 0 5525 27 +0.012997 0.186669 8 1 0.09463 -0.890871 18042 27 +0.012997 0.186669 8 1 0.074387 -0.886424 1864 30 +0.015706 0.186669 8 1 0.079608 -0.897588 1795 28 +0.014132 0.186669 8 1 0.074387 -0.886424 3362 27 +0.014132 0.186669 8 1 0.079608 -0.890871 1754 28 +0.012178 0.24279 8 1 0.086288 -0.897588 1086 27 +0.012178 0.24279 8 1 0.120239 -0.897588 7318 27 +0.012178 0.186669 0 1 0.144355 -0.890871 7702 27 +0.021285 0.091489 0 1 0.120239 -0.760692 42064 27 +0.021285 0.091489 0 1 0.144355 -0.864334 3410 28 +0.021285 0.091489 0 1 0.144355 -0.853228 2190 27 +0.026834 0.091489 0 1 0.120239 -0.873493 3775 27 +0.021285 0.091489 1 1 0.144355 -0.873493 1548 27 +0.021285 0.108189 0 1 0.105575 -0.864334 5659 27 +0.021285 0.108189 0 1 0.120239 -0.873493 14602 27 +0.017996 0.108189 8 1 0.120239 -0.88069 1509 29 +0.015706 0.076766 0 1 0.105575 0 8512 27 +0.017996 0.063173 0 1 0.120239 0 13884 27 +0.014132 0.076766 0 1 0.120239 0 1423 29 +0.021285 0.127708 0 1 0.079608 -0.873493 1501 27 +0.026834 0.127708 0 1 0.061816 -0.760692 6988 27 +0.017996 0.091489 0 1 0.144355 -0.837831 1993 27 +0.011524 0.186669 0 1 0.105575 -0.760692 134276 27 +1.02577 0.022928 0 1 0.086288 0 1989 27 +0.017996 0.063173 0 1 0.537133 -0.837831 4466 27 +0.021285 0.063173 0 1 0.537133 -0.864334 1774 29 +0.026834 0.050218 0 1 0.537133 -0.864334 1301 28 +0.012178 0.127708 0 1 0.09463 0 41562 27 +0.026834 0.152455 0 1 0.079608 -0.890871 7409 27 +0.026834 0.186669 0 1 0.064058 -0.890871 2060 27 +0.017996 0.186669 8 1 0.079608 -0.897588 1641 29 +0.017996 1.43371 0 1 0.066835 -0.897588 1048 27 +0.014132 0.186669 8 1 0.070215 -0.88069 1480 27 +0.021285 0.091489 8 1 0.120239 -0.853228 1969 27 +0.021285 0.076766 8 1 0.120239 -0.837831 1091 27 +1.02577 0.108189 0 1 0.105575 -0.897588 3437 27 +0.017996 0.152455 0 1 0.064058 -0.8098 2934 27 +0.012178 0.24279 8 1 0.061816 -0.8098 1954 27 +0.017996 0.108189 0 1 0.144355 -0.873493 10731 27 +0.021285 0.108189 0 1 0.144355 -0.894537 1768 28 +0.014132 0.186669 0 1 0.09463 -0.760692 325443 27 +0.015706 0.186669 8 1 0.066835 -0.873493 1423 29 +0.017996 0.186669 8 1 0.064058 -0.873493 1343 28 +0.015706 0.186669 0 1 0.061816 -0.760692 4968 28 +0.017996 0.186669 8 1 0.064058 -0.864334 1995 28 +0.017996 0.186669 8 1 0.064058 -0.853228 2520 28 +0.012178 0.186669 0 1 0.120239 -0.88069 7634 28 +0.014132 0.186669 0 1 0.105575 -0.8098 94512 27 +0.012997 0.186669 8 1 0.120239 -0.897588 1104 30 +0.012997 0.186669 0 1 0.120239 -0.886424 4999 29 +0.012997 0.186669 0 1 0.144355 -0.894537 1897 30 +0.014132 0.186669 8 1 0.120239 -0.897588 1386 28 +0.014132 0.186669 8 1 0.144355 -0.897588 1298 28 +0.012997 0.186669 0 1 0.120239 -0.864334 14943 27 +0.015706 0.186669 0 1 0.09463 -0.837831 89566 27 +0.015706 0.186669 8 1 0.064058 -0.8098 1650 27 +0.015706 0.186669 8 1 0.066835 -0.8098 2012 27 +0.026834 0.091489 0 1 0.086288 -0.853228 6325 27 +0.026834 0.108189 0 1 0.066835 -0.853228 1479 27 +0.026834 0.127708 0 1 0.074387 -0.88069 1945 27 +0.026834 0.108189 8 1 0.079608 -0.88069 1681 27 +0.026834 0.091489 0 1 0.105575 -0.8098 43218 27 +0.026834 0.091489 0 1 0.120239 -0.864334 2618 27 +0.026834 0.091489 0 1 0.120239 -0.853228 3132 27 +0.026834 0.108189 0 1 0.070215 -0.837831 4082 27 +0.026834 0.108189 0 1 0.070215 -0.8098 4374 27 +0.026834 0.108189 0 1 0.066835 -0.760692 7203 27 +1.02577 0.063173 0 1 0.079608 -0.8098 3394 27 +1.02577 0.063173 0 1 0.070215 -0.760692 1260 28 +0.026834 0.108189 0 1 0.074387 -0.8098 7267 27 +0.026834 0.108189 0 1 0.079608 -0.873493 1109 30 +0.026834 0.127708 0 1 0.079608 -0.873493 3997 27 +1.02577 0.037643 0 1 0.144355 -0.864334 3386 27 +1.02577 0.037643 0 1 0.537133 -0.88069 1412 28 +0.026834 0.050218 1 1 0.144355 -0.873493 1450 27 +0.026834 0.037643 1 1 0.120239 -0.8098 1294 28 +0.026834 0.037643 1 1 0.120239 -0.760692 1238 28 +0.015706 0.152455 0 1 0.120239 -0.8098 121547 27 +0.015706 0.108189 0 1 0.144355 -0.864334 1461 29 +0.017996 0.108189 0 1 0.144355 -0.864334 4739 27 +0.021285 0.108189 0 1 0.120239 -0.853228 21841 27 +0.021285 0.108189 0 1 0.079608 -0.837831 2428 27 +0.017996 0.127708 0 1 0.086288 -0.853228 13970 27 +0.011524 0.152455 0 1 0.537133 -0.760692 39948 27 +0.011011 0.152455 8 1 0.144355 -0.837831 2190 27 +0.014132 0.127708 8 1 0.144355 -0.864334 2045 27 +0.011524 0.152455 8 1 0.144355 -0.853228 1031 27 +0.011524 0.152455 1 1 0.120239 -0.8098 1079 27 +0.010598 0.186669 0 1 0.537133 -0.837831 19389 27 +0.011011 0.186669 0 1 0.144355 -0.873493 2199 27 +0.01027 0.186669 0 1 0.120239 -0.8098 2477 27 +0.011011 0.152455 8 1 0.120239 -0.760692 1473 27 +0.012178 0.127708 1 1 0.120239 -0.760692 1107 27 +0.014132 0.186669 0 1 0.144355 -0.864334 57322 27 +0.011524 0.186669 0 1 0.537133 -0.864334 4333 27 +0.014132 0.186669 0 1 0.120239 -0.853228 19849 27 +0.014132 0.186669 0 1 0.537133 -0.894537 5365 27 +0.015706 0.152455 8 1 0.537133 -0.897588 1381 28 +0.014132 0.152455 0 1 0.537133 -0.890871 1914 28 +0.015706 0.152455 0 1 0.144355 -0.8098 90359 27 +0.012178 0.127708 0 1 0.144355 -0.760692 1551 29 +0.014132 0.127708 0 1 0.144355 -0.760692 4616 28 +0.012997 0.186669 0 1 0.144355 -0.853228 10355 27 +0.011524 0.186669 0 1 0.537133 -0.853228 1644 27 +0.012178 0.127708 0 1 0.537133 -0.760692 5515 27 +0.012178 0.152455 0 1 0.537133 -0.873493 1128 31 +0.012997 0.152455 0 1 0.537133 -0.88069 1959 28 +0.014132 0.091489 8 1 0.537133 -0.873493 1421 29 +0.017996 0.091489 0 1 0.537133 -0.88069 1117 30 +0.014132 0.091489 0 1 0.537133 -0.853228 1616 27 +0.012997 0.108189 0 1 0.537133 -0.837831 1998 28 +0.014132 0.152455 0 1 0.537133 -0.88069 2604 27 +0.012997 0.152455 0 1 0.144355 -0.760692 25164 27 +0.012178 0.186669 0 1 0.105575 -0.760692 6208 28 +0.014132 0.108189 0 1 0.537133 -0.853228 1449 27 +1.02577 0.022928 0 1 0.537133 -0.760692 2875 27 +0.015706 0.076766 1 1 0.105575 -0.760692 1913 27 +1.02577 0.076766 0 1 0.074387 -0.88069 2386 27 +0.017996 0.076766 0 1 0.079608 0 8109 27 +0.017996 0.091489 0 1 0.074387 0 8570 28 +0.015706 0.091489 0 1 0.079608 0 4653 27 +0.015706 0.076766 1 1 0.144355 -0.760692 3811 27 +1.02577 0.022928 1 1 0.120239 -0.760692 4279 27 +1.02577 0.022928 8 1 0.064058 0 1057 27 +1.02577 0.037643 1 1 0.079608 -0.760692 1024 27 +0.012997 0.24279 0 1 0.144355 -0.873493 225072 27 +0.01027 0.24279 8 1 0.079608 -0.864334 1300 31 +0.012997 0.24279 8 1 0.061816 -0.8098 1505 29 +0.010598 0.24279 0 1 0.537133 -0.890871 1851 28 +0.010598 0.24279 8 1 0.079608 -0.864334 1614 27 +0.011524 0.24279 8 1 0.144355 -0.886424 1515 27 +0.010598 0.186669 0 1 0.120239 -0.8098 2817 27 +0.015706 0.152455 0 1 0.09463 -0.760692 54911 27 +0.017996 0.127708 0 1 0.070215 -0.760692 6185 28 +0.017996 0.127708 0 1 0.074387 -0.760692 7584 28 +0.015706 0.127708 0 1 0.105575 -0.760692 7178 27 +0.017996 0.152455 0 1 0.144355 -0.8098 395922 27 +0.017996 0.127708 8 1 0.105575 -0.88069 1100 30 +0.017996 0.152455 8 1 0.086288 -0.864334 1199 31 +0.017996 0.127708 8 1 0.144355 -0.890871 1492 29 +0.021285 0.152455 0 1 0.074387 -0.88069 3654 29 +0.017996 0.152455 0 1 0.537133 -0.897588 1442 29 +0.017996 0.127708 0 1 0.079608 -0.760692 5300 27 +0.017996 0.127708 0 1 0.086288 -0.760692 6816 27 +0.017996 0.152455 0 1 0.086288 -0.760692 28150 27 +0.017996 0.127708 0 1 0.09463 -0.760692 8223 27 +0.017996 0.127708 0 1 0.105575 -0.760692 9326 27 +0.017996 0.127708 1 1 0.120239 -0.853228 5378 27 +1.02577 0.152455 0 1 0.061816 -0.88069 1941 27 +1.02577 0.108189 0 1 0.064058 -0.873493 1065 27 +1.02577 0.108189 8 1 0.066835 -0.88069 2087 27 +0.017996 0.152455 8 1 0.120239 -0.88069 2899 27 +0.012178 0.152455 1 1 0.105575 -0.760692 1294 28 +0.015706 0.152455 8 1 0.09463 -0.837831 1316 28 +0.017996 0.152455 1 1 0.144355 -0.890871 1144 28 +0.021285 0.127708 0 1 0.105575 -0.88069 23112 27 +0.021285 0.127708 0 1 0.144355 -0.894537 5679 28 +0.021285 0.152455 8 1 0.120239 -0.897588 6100 27 +0.021285 0.152455 0 1 0.120239 -0.894537 7123 28 +0.026834 0.152455 0 1 0.09463 -0.897588 3457 27 +0.026834 0.127708 8 1 0.105575 -0.897588 1720 28 +0.017996 0.186669 0 1 0.074387 -0.837831 24963 27 +0.026834 0.186669 0 1 0.070215 -0.894537 1977 28 +0.021285 0.186669 8 1 0.066835 -0.886424 1024 30 +0.017996 0.186669 8 1 0.086288 -0.88069 12146 27 +0.017996 0.186669 8 1 0.09463 -0.894537 3095 27 +0.017996 0.186669 0 1 0.537133 -0.897588 13226 27 +0.021285 0.186669 0 1 0.070215 -0.864334 12556 27 +0.021285 0.186669 8 1 0.061816 -0.853228 1163 28 +0.017996 0.108189 0 1 0.120239 -0.760692 10055 27 +0.017996 0.186669 0 1 0.061816 -0.760692 2390 27 +0.015706 0.186669 0 1 0.105575 -0.853228 28420 27 +0.015706 0.186669 0 1 0.120239 -0.894537 2232 27 +0.015706 0.186669 0 1 0.120239 -0.886424 5844 27 +0.017996 0.186669 0 1 0.064058 -0.760692 4728 27 +0.017996 0.108189 0 1 0.537133 -0.890871 1418 27 +0.015706 0.186669 0 1 0.144355 -0.864334 36351 27 +0.015706 0.186669 0 1 0.537133 -0.894537 1861 28 +0.017996 0.152455 0 1 0.537133 -0.894537 1440 27 +0.017996 0.186669 1 1 0.079608 -0.864334 4235 27 +0.021285 0.152455 1 1 0.144355 -0.897588 2347 27 +1.02577 0.050218 0 1 0.105575 -0.853228 3278 27 +0.015706 0.186669 0 1 0.105575 -0.837831 8418 27 +0.014132 0.152455 0 1 0.066835 0 31748 27 +0.011524 0.152455 0 1 0.09463 0 50092 27 +0.01027 0.152455 0 1 0.105575 0 2313 31 +0.021285 0.108189 0 1 0.120239 -0.8098 42364 27 +0.021285 0.108189 0 1 0.086288 -0.760692 10774 27 +0.011524 0.076766 1 1 0.120239 0 2788 27 +0.014132 0.022928 8 1 0.144355 0 1150 28 +0.014132 0.037643 1 1 0.120239 0 1031 27 +0.026834 0.076766 0 1 0.120239 -0.760692 22245 27 +0.014132 0.108189 8 1 0.074387 0 2316 27 +0.026834 0.186669 0 2 0.061816 -0.897588 1851 27 +0.011011 0.076766 8 2 0.09463 -0.897588 1234 28 +0.017996 0.127708 0 1 0.120239 -0.760692 14774 27 +0.012997 0.127708 0 1 0.537133 -0.853228 1384 27 +0.017996 0.091489 0 1 0.537133 -0.873493 1384 27 +0.012997 0.127708 0 1 0.120239 0 75000 27 +0.011011 0.127708 0 1 0.144355 0 2865 29 +0.011524 0.108189 0 1 0.144355 0 1584 27 +0.014132 0.127708 0 1 0.074387 0 4631 27 +0.012997 0.152455 0 1 0.086288 0 32189 27 +0.012178 0.152455 0 1 0.09463 0 5246 28 +0.026834 0.091489 0 1 0.537133 -0.886424 2295 27 +0.026834 0.050218 0 1 0.144355 -0.760692 5490 27 +0.021285 0.127708 0 1 0.144355 -0.837831 137684 27 +0.026834 0.127708 0 1 0.066835 -0.853228 1441 29 +0.021285 0.127708 8 1 0.09463 -0.873493 1093 27 +0.026834 0.127708 0 1 0.070215 -0.853228 1060 27 +0.021285 0.091489 0 1 0.144355 -0.8098 7321 27 +0.021285 0.063173 0 1 0.144355 -0.760692 1853 28 +0.021285 0.108189 0 1 0.144355 -0.8098 4972 27 +0.021285 0.127708 1 1 0.144355 -0.890871 1460 27 +0.021285 0.108189 1 1 0.144355 -0.88069 1608 27 +0.021285 0.152455 8 1 0.105575 -0.890871 5858 27 +0.026834 0.127708 0 1 0.144355 -0.88069 77216 27 +1.02577 0.108189 0 1 0.086288 -0.894537 1438 29 +0.026834 0.152455 0 1 0.09463 -0.890871 5265 28 +0.026834 0.076766 0 1 0.537133 -0.88069 1114 27 +0.026834 0.152455 0 1 0.144355 -0.894537 16082 27 +0.026834 0.152455 0 1 0.09463 -0.886424 10806 27 +0.021285 0.152455 8 1 0.079608 -0.88069 1465 27 +0.026834 0.091489 0 1 0.144355 -0.873493 4334 27 +0.021285 0.152455 0 1 0.070215 -0.760692 35790 27 +0.021285 0.186669 0 1 0.064058 -0.8098 4174 28 +0.026834 0.127708 0 1 0.070215 -0.8098 7639 28 +0.021285 0.127708 8 1 0.070215 -0.8098 1144 28 +0.017996 0.127708 8 1 0.105575 -0.837831 1580 27 +0.021285 0.186669 0 1 0.070215 -0.853228 2064 27 +0.021285 0.186669 0 1 0.070215 -0.837831 2555 27 +0.021285 0.186669 0 1 0.070215 -0.8098 9548 27 +0.017996 0.186669 0 1 0.074387 -0.8098 6126 27 +0.015706 0.186669 0 1 0.079608 -0.8098 4190 28 +0.026834 0.127708 0 1 0.074387 -0.837831 4318 27 +0.026834 0.108189 0 1 0.09463 -0.8098 38504 27 +0.026834 0.127708 0 1 0.079608 -0.853228 3506 28 +0.026834 0.127708 0 1 0.09463 -0.853228 16763 27 +0.026834 0.108189 0 1 0.144355 -0.837831 69734 27 +0.026834 0.127708 0 1 0.144355 -0.873493 11773 27 +0.026834 0.127708 0 1 0.105575 -0.864334 4511 28 +0.026834 0.127708 0 1 0.537133 -0.897588 2774 27 +0.021285 0.152455 0 1 0.537133 -0.897588 1102 30 +0.021285 0.108189 0 1 0.537133 -0.890871 1245 28 +0.021285 0.108189 0 1 0.537133 -0.886424 1746 28 +0.021285 0.152455 0 1 0.537133 -0.894537 2063 27 +0.021285 0.152455 8 1 0.09463 -0.864334 25311 27 +0.021285 0.152455 0 1 0.105575 -0.88069 6708 27 +0.026834 0.152455 0 1 0.105575 -0.886424 5593 27 +0.026834 0.063173 0 1 0.144355 -0.760692 4597 27 +0.021285 0.127708 0 1 0.144355 -0.8098 43107 27 +0.026834 0.127708 0 1 0.074387 -0.8098 2450 29 +0.021285 0.127708 0 1 0.086288 -0.760692 16206 27 +0.021285 0.152455 0 1 0.120239 -0.8098 140174 27 +0.021285 0.152455 0 1 0.074387 -0.760692 4133 27 +0.015706 0.152455 1 1 0.144355 -0.853228 7785 27 +0.017996 0.152455 1 1 0.120239 -0.853228 1531 27 +0.015706 0.091489 0 1 0.086288 0 9143 27 +0.014132 0.127708 0 1 0.09463 0 37008 27 +0.014132 0.108189 0 1 0.105575 0 7477 27 +0.015706 0.091489 0 1 0.105575 0 8535 27 +0.021285 0.186669 0 1 0.086288 -0.88069 14614 27 +0.026834 0.186669 0 1 0.079608 -0.890871 3783 29 +0.021285 0.186669 0 1 0.074387 -0.864334 2432 28 +0.021285 0.186669 0 1 0.074387 -0.853228 1778 28 +0.021285 0.186669 0 1 0.079608 -0.873493 1678 27 +0.026834 0.186669 0 1 0.144355 -0.897588 19731 27 +0.021285 0.186669 0 1 0.09463 -0.894537 1704 28 +0.021285 0.186669 0 1 0.537133 -0.897588 1859 27 +0.017996 0.063173 0 2 0.064058 -0.894537 1824 27 +0.012178 0.063173 8 10 0.066835 -0.894537 1190 28 +0.026834 0.022928 0 4 0.537133 -0.897588 1219 28 +0.017996 0.022928 8 10 0.074387 -0.890871 1358 28 +0.011011 0.076766 8 3 0.066835 -0.886424 1156 28 +0.026834 0.127708 0 1 0.09463 -0.837831 10482 27 +0.026834 0.076766 0 1 0.074387 0 25027 27 +0.021285 0.076766 0 1 0.086288 0 23439 27 +0.021285 0.063173 0 1 0.09463 0 6324 28 +0.017996 0.076766 0 1 0.105575 0 8154 27 +0.026834 0.091489 0 1 0.09463 -0.760692 19061 27 +0.026834 0.108189 0 1 0.070215 -0.760692 2501 27 +0.021285 0.186669 8 1 0.09463 -0.886424 9519 27 +0.017996 0.186669 0 1 0.09463 -0.864334 17447 27 +0.017996 0.186669 0 1 0.144355 -0.864334 84401 27 +0.017996 0.186669 0 1 0.537133 -0.894537 1521 27 +1.02577 0.050218 1 1 0.064058 0 4981 27 +0.01027 0.24279 0 1 0.537133 -0.864334 8603 27 +0.012178 0.24279 0 1 0.120239 -0.864334 39750 27 +0.012997 0.24279 8 1 0.066835 -0.853228 4811 27 +0.010598 0.24279 8 1 0.074387 -0.853228 1464 32 +0.010598 0.24279 8 1 0.070215 -0.837831 1672 27 +0.01027 0.24279 8 1 0.086288 -0.853228 1462 27 +0.010598 0.24279 0 1 0.120239 -0.837831 29834 27 +0.010598 0.24279 0 1 0.144355 -0.853228 6026 27 +0.011011 0.24279 0 1 0.09463 -0.837831 11655 27 +0.011524 0.24279 0 1 0.09463 -0.837831 14072 27 +0.011011 0.24279 0 1 0.144355 -0.853228 10509 27 +0.012178 0.24279 0 1 0.144355 -0.864334 6674 27 +0.010598 0.24279 0 1 0.086288 -0.8098 8222 27 +0.01027 0.24279 0 1 0.144355 -0.837831 2280 27 +0.026834 0.186669 0 1 0.070215 -0.873493 7690 27 +0.026834 0.063173 0 1 0.537133 -0.864334 1357 27 +0.026834 0.091489 0 1 0.120239 -0.8098 4973 27 +0.026834 0.108189 0 1 0.09463 -0.760692 27427 27 +0.014132 0.186669 0 1 0.144355 -0.760692 199390 27 +0.01027 0.186669 0 1 0.537133 -0.760692 1188 28 +0.011011 0.186669 0 1 0.537133 -0.8098 2542 27 +0.015706 0.186669 0 1 0.144355 -0.8098 77452 27 +0.015706 0.186669 0 1 0.105575 -0.760692 52218 27 +0.017996 0.186669 0 1 0.066835 -0.760692 2163 29 +0.014132 0.108189 8 1 0.079608 0 2241 27 +0.014132 0.050218 1 1 0.105575 0 1438 29 +0.015706 0.063173 1 1 0.086288 0 1463 29 +0.012178 0.063173 1 1 0.144355 0 1208 28 +1.02577 0.076766 0 1 0.144355 -0.897588 1344 27 +1.02577 0.108189 0 1 0.064058 -0.837831 6718 27 +0.021285 0.091489 0 1 0.144355 -0.760692 11189 27 +0.015706 0.152455 0 1 0.144355 -0.760692 22306 27 +0.017996 0.108189 0 1 0.144355 -0.760692 4255 27 +0.015706 0.186669 0 1 0.120239 -0.760692 12945 27 +1.02577 0.050218 0 1 0.09463 -0.760692 8052 27 +0.012178 0.152455 0 1 0.105575 0 15565 26 +0.014132 0.063173 0 1 0.144355 0 848 29 +0.021285 0.050218 1 1 0.537133 -0.873493 839 29 +0.01027 0.091489 8 2 0.066835 -0.837831 803 29 +0.012997 0.076766 0 1 0.144355 0 993 27 +0.012178 0.108189 0 1 0.144355 0 1622 27 +0.012178 0.108189 1 1 0.144355 -0.760692 972 27 +1.02577 0.050218 0 1 0.537133 -0.894537 966 27 +1.02577 0.063173 0 1 0.144355 -0.890871 1721 28 +0.01027 0.24279 0 1 0.537133 -0.853228 928 27 +1.02577 0.022928 8 6 0.064058 -0.886424 915 27 +1.02577 0.091489 0 2 0.061816 -0.894537 1053 27 +1.02577 0.022928 8 2 0.079608 -0.894537 955 27 +0.01027 0.152455 0 2 0.120239 -0.897588 898 27 +0.021285 0.127708 0 1 0.120239 -0.760692 46198 26 +0.021285 0.152455 0 1 0.086288 -0.760692 14177 26 +0.015706 0.127708 0 1 0.079608 0 31877 26 +0.017996 0.186669 0 1 0.105575 -0.853228 20765 26 +0.017996 0.091489 0 1 0.537133 -0.760692 22517 26 +0.017996 0.037643 0 1 0.537133 0 948 30 +0.014132 0.063173 0 1 0.537133 0 956 27 +0.026834 0.063173 0 1 0.537133 -0.760692 16060 26 +0.021285 0.076766 0 1 0.537133 -0.760692 5600 27 +0.021285 0.091489 0 1 0.537133 -0.760692 8594 27 +0.026834 0.091489 0 1 0.537133 -0.88069 1046 27 +0.014132 0.127708 0 1 0.537133 -0.837831 4417 26 +1.02577 0.022928 0 1 0.120239 0 5292 26 +0.026834 0.037643 0 1 0.09463 0 4834 26 +0.012178 0.152455 1 1 0.120239 -0.760692 877 26 +1.02577 0.108189 8 1 0.086288 -0.894537 876 26 +0.026834 0.152455 0 1 0.120239 -0.873493 39839 26 +0.026834 0.186669 0 1 0.074387 -0.873493 2358 27 +0.026834 0.152455 0 1 0.144355 -0.88069 23552 26 +0.021285 0.152455 0 1 0.144355 -0.864334 11702 27 +0.015706 0.127708 0 1 0.086288 0 13132 26 +1.02577 0.037643 0 1 0.144355 -0.760692 5239 26 +0.01027 0.186669 8 1 0.144355 -0.8098 872 26 +1.02577 0.063173 8 1 0.079608 -0.8098 3479 26 +0.026834 0.076766 1 1 0.09463 -0.837831 1635 27 +0.026834 0.063173 1 1 0.09463 -0.8098 943 27 +0.010598 0.24279 0 1 0.144355 -0.8098 23880 26 +0.011011 0.24279 0 1 0.09463 -0.8098 8064 27 +0.021285 0.186669 0 1 0.144355 -0.886424 35143 26 +0.021285 0.186669 0 1 0.120239 -0.853228 101967 26 +0.021285 0.186669 0 1 0.144355 -0.873493 14964 27 +0.021285 0.108189 8 1 0.120239 -0.864334 864 26 +0.010598 0.186669 8 1 0.086288 0 18124 26 +0.011524 0.186669 0 1 0.061816 0 1666 27 +0.014132 0.186669 0 1 0.061816 0 3777 27 +0.011011 0.186669 0 1 0.074387 0 5556 27 +0.011524 0.186669 0 1 0.064058 0 1120 30 +0.012997 0.186669 0 1 0.064058 0 2919 27 +0.014132 0.186669 0 1 0.537133 -0.837831 34902 26 +0.011524 0.186669 0 1 0.537133 -0.8098 1196 31 +0.015706 0.186669 0 1 0.537133 -0.890871 2358 27 +0.015706 0.186669 0 1 0.537133 -0.886424 2755 27 +0.015706 0.091489 1 1 0.079608 0 1292 26 +0.015706 0.091489 1 1 0.120239 -0.760692 2754 27 +0.012997 0.152455 1 1 0.120239 -0.760692 3114 26 +0.017996 0.108189 0 1 0.09463 0 47802 26 +0.017996 0.091489 0 1 0.105575 0 5475 27 +0.026834 0.076766 0 1 0.144355 -0.760692 6455 26 +1.02577 0.076766 8 1 0.066835 -0.864334 858 26 +1.02577 0.076766 0 1 0.070215 -0.864334 898 27 +1.02577 0.108189 8 1 0.066835 -0.873493 872 26 +0.015706 0.152455 0 1 0.086288 0 51896 26 +0.021285 0.152455 0 1 0.144355 -0.837831 16679 26 +0.015706 0.186669 8 1 0.144355 -0.886424 2563 26 +0.021285 0.186669 8 1 0.120239 -0.894537 885 26 +0.026834 0.127708 0 1 0.144355 -0.853228 27320 26 +0.026834 0.127708 0 1 0.105575 -0.837831 6478 27 +1.02577 0.063173 0 1 0.079608 -0.760692 3406 26 +0.021285 0.108189 0 1 0.537133 -0.853228 11913 26 +0.011011 0.108189 0 1 0.537133 0 849 26 +0.026834 0.186669 0 1 0.061816 -0.837831 2969 26 +0.026834 0.076766 0 1 0.537133 -0.873493 848 26 +0.017996 0.152455 0 1 0.537133 -0.837831 39402 26 +0.017996 0.186669 0 1 0.537133 -0.886424 4079 28 +0.015706 0.108189 0 1 0.537133 -0.760692 4498 27 +0.017996 0.108189 0 1 0.537133 -0.8098 1716 29 +0.014132 0.152455 0 1 0.537133 -0.8098 5740 26 +0.015706 0.186669 0 1 0.537133 -0.873493 3967 26 +0.021285 0.108189 0 1 0.537133 -0.8098 4705 26 +0.021285 0.186669 0 1 0.105575 -0.837831 53700 26 +0.021285 0.186669 0 1 0.074387 -0.8098 2892 28 +0.015706 0.152455 0 1 0.537133 -0.760692 13512 26 +0.012178 0.24279 0 1 0.086288 -0.853228 4643 26 +0.021285 0.186669 0 1 0.144355 -0.864334 10117 26 +0.01027 0.050218 8 2 0.066835 0 843 26 +1.02577 0.063173 0 1 0.144355 -0.873493 13066 26 +1.02577 0.063173 0 1 0.120239 -0.864334 6069 27 +1.02577 0.050218 0 1 0.120239 -0.853228 1355 31 +1.02577 0.063173 0 1 0.537133 -0.88069 3861 26 +1.02577 0.091489 0 1 0.09463 -0.873493 21961 26 +1.02577 0.108189 0 1 0.070215 -0.873493 1380 28 +1.02577 0.108189 0 1 0.079608 -0.886424 1815 28 +1.02577 0.108189 8 1 0.09463 -0.894537 1344 27 +1.02577 0.076766 0 1 0.079608 -0.8098 13421 27 +1.02577 0.076766 8 1 0.074387 -0.837831 856 29 +1.02577 0.076766 0 1 0.09463 -0.864334 2463 27 +1.02577 0.076766 0 1 0.086288 -0.853228 2356 27 +0.026834 0.152455 8 1 0.105575 -0.894537 858 26 +0.026834 0.152455 8 1 0.079608 -0.873493 1016 27 +0.026834 0.186669 8 1 0.120239 -0.897588 939 27 +1.02577 0.152455 8 1 0.064058 -0.890871 919 27 +1.02577 0.127708 8 1 0.09463 -0.897588 2277 28 +1.02577 0.127708 0 1 0.105575 -0.897588 1089 27 +1.02577 0.152455 0 1 0.061816 -0.853228 1684 26 +1.02577 0.037643 0 1 0.079608 0 5888 26 +0.011011 0.24279 0 1 0.144355 -0.8098 21848 26 +1.02577 0.050218 0 1 0.120239 -0.8098 6709 26 +0.026834 0.186669 0 1 0.074387 -0.837831 23846 26 +0.026834 0.186669 0 1 0.070215 -0.8098 9974 26 +0.026834 0.152455 0 1 0.061816 -0.760692 1257 28 +0.026834 0.152455 8 1 0.061816 -0.760692 1029 27 +0.017996 0.091489 1 1 0.079608 -0.760692 913 27 +0.017996 0.063173 1 1 0.144355 -0.760692 2550 26 +0.021285 0.076766 1 1 0.144355 -0.837831 2396 27 +0.017996 0.108189 1 1 0.086288 -0.760692 2201 26 +0.017996 0.186669 8 1 0.074387 -0.8098 946 30 +0.026834 0.076766 1 1 0.144355 -0.837831 11739 26 +0.026834 0.063173 1 1 0.120239 -0.8098 1847 28 +0.026834 0.022928 1 1 0.144355 -0.760692 953 27 +0.026834 0.050218 1 1 0.144355 -0.8098 1081 27 +0.026834 0.063173 1 1 0.144355 -0.760692 12990 26 +0.026834 0.091489 0 1 0.061816 0 3763 26 +1.02577 0.063173 0 1 0.120239 -0.8098 20433 26 +1.02577 0.076766 0 1 0.09463 -0.853228 1553 29 +1.02577 0.076766 0 1 0.09463 -0.837831 3615 29 +1.02577 0.063173 0 1 0.09463 -0.760692 4951 28 +1.02577 0.050218 0 1 0.120239 -0.760692 4579 26 +1.02577 0.063173 0 1 0.105575 -0.760692 3109 26 +0.021285 0.152455 0 1 0.09463 -0.760692 21633 26 +0.017996 0.152455 0 1 0.144355 -0.760692 41384 26 +0.021285 0.152455 0 1 0.105575 -0.760692 14289 26 +0.015706 0.24279 0 1 0.105575 -0.873493 96427 26 +0.017996 0.24279 8 1 0.070215 -0.894537 1028 30 +0.014132 0.24279 0 1 0.144355 -0.890871 12956 27 +0.014132 0.24279 8 1 0.074387 -0.864334 4526 27 +0.014132 0.24279 8 1 0.064058 -0.853228 903 30 +0.017996 0.24279 0 1 0.144355 -0.897588 15464 26 +0.017996 0.24279 0 1 0.105575 -0.894537 6092 27 +1.02577 1.43371 0 1 0.064058 -0.894537 1752 26 +0.014132 0.24279 0 1 0.105575 -0.853228 61637 26 +0.012997 0.24279 0 1 0.120239 -0.864334 4539 28 +0.012178 0.24279 0 1 0.144355 -0.853228 15971 26 +0.011524 0.24279 0 1 0.120239 -0.837831 8236 26 +0.014132 0.24279 0 1 0.079608 -0.837831 15478 26 +0.017996 0.108189 1 1 0.105575 -0.760692 5402 26 +0.026834 0.076766 0 1 0.086288 0 18260 26 +0.012178 0.152455 1 1 0.537133 -0.873493 1244 26 +0.026834 0.152455 0 1 0.079608 -0.837831 6626 26 +0.026834 0.152455 0 1 0.086288 -0.853228 6027 26 +0.012178 0.108189 8 1 0.086288 0 828 26 +0.011011 0.127708 1 1 0.120239 0 3730 26 +0.011524 0.091489 1 1 0.144355 0 1353 27 +0.011524 0.127708 1 1 0.120239 0 2173 26 +0.014132 0.108189 1 1 0.09463 0 4581 26 +0.012178 0.091489 1 1 0.144355 0 1528 27 +0.014132 0.076766 1 1 0.105575 0 1277 26 +0.012997 0.091489 1 1 0.120239 0 1528 27 +0.015706 0.091489 0 1 0.120239 0 7012 26 +0.026834 0.152455 0 1 0.09463 -0.8098 53871 26 +0.026834 0.152455 0 1 0.105575 -0.837831 21578 26 +0.026834 0.152455 0 1 0.120239 -0.864334 7147 27 +0.026834 0.152455 0 1 0.144355 -0.853228 32630 26 +0.021285 0.152455 0 1 0.144355 -0.8098 11494 26 +0.026834 0.24279 8 1 0.079608 -0.894537 4925 26 +0.021285 0.063173 0 1 0.105575 0 7371 26 +0.026834 0.037643 0 1 0.105575 0 2071 28 +0.021285 0.037643 0 1 0.537133 0 2688 27 +0.021285 0.037643 1 1 0.105575 0 5166 26 +0.011524 0.24279 0 1 0.537133 -0.897588 817 26 +0.011011 0.24279 0 1 0.537133 -0.890871 946 27 +0.021285 0.186669 0 1 0.086288 -0.8098 21638 26 +0.026834 0.186669 0 1 0.074387 -0.8098 2442 26 +0.017996 0.24279 0 1 0.120239 -0.88069 71514 26 +0.017996 0.24279 8 1 0.09463 -0.88069 977 30 +0.021285 0.24279 8 1 0.070215 -0.886424 1817 30 +0.026834 0.24279 0 1 0.070215 -0.886424 1607 29 +0.015706 0.24279 0 1 0.144355 -0.890871 6901 28 +0.015706 0.24279 0 1 0.144355 -0.88069 17568 26 +0.026834 0.091489 0 1 0.074387 0 24748 26 +0.012178 0.24279 0 1 0.105575 -0.837831 10138 26 +0.021285 0.186669 0 1 0.074387 -0.760692 18240 26 +0.026834 0.091489 0 1 0.144355 -0.760692 21869 26 +0.026834 0.108189 0 1 0.105575 -0.760692 15213 26 +0.012997 0.127708 1 1 0.144355 -0.760692 3235 26 +0.012178 0.152455 1 1 0.144355 -0.8098 1140 28 +1.02577 0.152455 0 1 0.09463 -0.897588 2422 26 +1.02577 0.24279 0 1 0.079608 -0.897588 1764 28 +1.02577 0.186669 0 1 0.070215 -0.894537 1006 27 +0.012178 0.24279 0 1 0.144355 -0.837831 15331 26 +1.02577 0.022928 0 1 0.144355 0 1208 26 +0.015706 0.24279 0 1 0.144355 -0.873493 22892 26 +0.014132 0.24279 0 1 0.120239 -0.853228 18616 27 +0.014132 0.24279 0 1 0.120239 -0.837831 42500 26 +1.02577 0.091489 0 1 0.120239 -0.897588 803 26 +0.01027 0.022928 8 2 0.537133 -0.837831 1203 26 +0.011011 0.022928 8 2 0.070215 -0.837831 1068 27 +0.010598 0.063173 8 2 0.070215 -0.864334 1336 26 +0.01027 0.108189 8 2 0.061816 0 802 26 +0.026834 0.127708 0 1 0.066835 -0.760692 3606 26 +1.02577 0.063173 0 1 0.537133 -0.873493 1997 26 +1.02577 0.037643 0 1 0.537133 -0.853228 1365 27 +0.017996 0.152455 1 1 0.105575 -0.760692 12752 26 +0.021285 0.152455 8 1 0.079608 -0.8098 1660 27 +0.015706 0.152455 1 1 0.120239 -0.760692 6932 27 +0.017996 0.152455 1 1 0.120239 -0.837831 1502 27 +0.017996 0.186669 1 1 0.09463 -0.837831 2180 26 +0.014132 0.24279 8 1 0.09463 -0.837831 985 30 +0.012997 0.186669 8 1 0.09463 -0.760692 1448 29 +0.026834 0.127708 1 1 0.066835 -0.760692 1701 26 +0.026834 0.091489 8 1 0.079608 -0.8098 1101 27 +0.026834 0.091489 1 1 0.09463 -0.837831 1450 27 +0.026834 0.091489 1 1 0.105575 -0.853228 1022 27 +1.02577 0.091489 8 1 0.066835 -0.837831 1859 27 +1.02577 0.091489 0 1 0.079608 -0.864334 2209 26 +0.015706 0.127708 8 1 0.066835 0 830 26 +0.012997 0.127708 8 1 0.09463 0 1762 26 +0.026834 0.050218 0 1 0.09463 0 2787 26 +0.021285 0.186669 0 1 0.086288 -0.760692 28206 26 +0.017996 0.152455 0 1 0.066835 0 16286 26 +0.017996 0.24279 8 1 0.066835 -0.853228 7148 26 +0.021285 0.24279 8 1 0.061816 -0.853228 1178 28 +0.015706 0.24279 8 1 0.074387 -0.853228 4155 26 +0.011524 0.24279 0 1 0.537133 -0.837831 22984 26 +0.010598 0.24279 0 1 0.537133 -0.8098 3056 28 +0.011011 0.24279 0 1 0.537133 -0.8098 2028 27 +0.012178 0.24279 0 1 0.537133 -0.873493 5920 26 +0.014132 0.24279 0 1 0.537133 -0.886424 9621 27 +0.014132 0.24279 8 1 0.537133 -0.897588 878 26 +0.012178 0.24279 0 1 0.537133 -0.864334 2006 26 +0.021285 0.24279 0 1 0.537133 -0.894537 51273 26 +0.015706 0.24279 0 1 0.537133 -0.890871 2362 27 +0.015706 0.24279 0 1 0.537133 -0.886424 2768 27 +0.021285 0.24279 0 1 0.09463 -0.886424 9671 26 +0.017996 0.186669 0 1 0.144355 -0.8098 83482 26 +0.021285 0.186669 0 1 0.144355 -0.853228 12080 27 +0.017996 0.186669 0 1 0.105575 -0.760692 27404 26 +0.014132 0.24279 0 1 0.120239 -0.8098 109477 26 +0.010598 0.186669 8 1 0.144355 -0.8098 1179 26 +0.012178 0.186669 8 1 0.537133 -0.88069 1337 26 +0.011011 0.186669 8 1 0.537133 -0.864334 797 26 +1.02577 0.127708 0 1 0.079608 -0.873493 11376 26 +1.02577 0.127708 8 1 0.079608 -0.88069 1288 26 +1.02577 0.152455 8 1 0.079608 -0.894537 929 27 +1.02577 0.186669 8 1 0.09463 -0.897588 2073 26 +0.026834 0.108189 0 1 0.144355 -0.8098 13333 26 +1.02577 0.091489 0 1 0.144355 -0.873493 39210 26 +1.02577 0.091489 0 1 0.537133 -0.897588 1075 30 +1.02577 0.091489 0 1 0.537133 -0.894537 1447 27 +0.012178 0.186669 0 1 0.537133 -0.8098 1565 26 +1.02577 0.108189 0 1 0.105575 -0.88069 11712 26 +1.02577 0.127708 0 1 0.09463 -0.88069 8548 26 +1.02577 0.127708 0 1 0.086288 -0.873493 2617 27 +0.021285 0.152455 8 1 0.105575 -0.864334 1170 26 +1.02577 0.022928 1 1 0.079608 0 3506 26 +0.026834 0.050218 1 1 0.070215 0 938 30 +1.02577 0.037643 1 1 0.074387 0 1280 28 +0.026834 0.022928 1 1 0.09463 0 1424 27 +0.026834 0.022928 1 1 0.105575 0 871 26 +0.026834 0.076766 0 1 0.537133 -0.8098 5451 26 +0.01027 0.186669 0 1 0.105575 0 5440 26 +0.026834 0.152455 0 1 0.120239 -0.8098 62152 26 +1.02577 0.152455 0 1 0.061816 -0.8098 3104 26 +1.02577 0.091489 0 1 0.070215 -0.8098 4145 26 +1.02577 0.091489 0 1 0.074387 -0.837831 1900 27 +0.026834 0.091489 0 1 0.537133 -0.864334 2710 26 +0.026834 0.152455 0 1 0.537133 -0.873493 47467 26 +0.021285 0.050218 1 1 0.086288 0 1935 26 +0.017996 0.063173 1 1 0.09463 0 2780 26 +0.021285 0.186669 0 1 0.09463 -0.760692 22778 26 +0.026834 0.186669 0 2 0.061816 -0.894537 1156 26 +0.026834 0.127708 0 1 0.537133 -0.8098 66759 26 +0.021285 0.076766 0 1 0.105575 0 9586 26 +0.026834 0.076766 0 1 0.09463 0 8840 26 +0.010598 0.24279 0 1 0.079608 -0.760692 6126 26 +0.026834 0.152455 0 1 0.144355 -0.8098 26407 26 +0.026834 0.152455 0 1 0.537133 -0.864334 9161 26 +0.014132 0.24279 0 1 0.537133 -0.864334 25946 26 +0.015706 0.24279 0 1 0.144355 -0.853228 80167 26 +0.015706 0.186669 0 1 0.537133 -0.853228 5720 26 +0.017996 0.186669 0 1 0.537133 -0.864334 10580 26 +0.026834 0.127708 0 1 0.086288 -0.760692 17536 26 +1.02577 0.091489 0 1 0.120239 -0.853228 26683 26 +1.02577 0.076766 0 1 0.144355 -0.853228 10452 26 +1.02577 0.063173 0 1 0.144355 -0.837831 3784 27 +1.02577 0.050218 0 1 0.537133 -0.853228 1706 26 +1.02577 0.050218 0 1 0.144355 -0.8098 1700 26 +1.02577 0.063173 0 1 0.144355 -0.8098 2378 26 +1.02577 0.127708 0 1 0.09463 -0.864334 18053 26 +0.011011 0.050218 8 2 0.061816 0 1522 26 +0.015706 0.050218 0 2 0.061816 -0.873493 1007 27 +0.010598 0.037643 1 2 0.066835 0 1208 26 +0.012997 0.022928 8 2 0.061816 0 1527 26 +0.011524 0.022928 8 2 0.070215 -0.837831 956 30 +0.014132 0.022928 8 3 0.061816 -0.760692 1002 27 +0.015706 0.037643 8 2 0.061816 -0.853228 1143 28 +0.011524 0.050218 8 2 0.061816 -0.760692 856 26 +0.017996 0.24279 0 1 0.537133 -0.873493 80271 26 +0.017996 0.24279 0 1 0.09463 -0.853228 24496 26 +0.017996 0.24279 0 1 0.120239 -0.864334 17092 26 +0.017996 0.24279 0 1 0.105575 -0.853228 8913 26 +0.015706 0.108189 0 1 0.105575 0 5686 26 +0.026834 0.186669 0 1 0.120239 -0.853228 133550 26 +0.026834 0.186669 0 1 0.144355 -0.894537 4608 27 +0.026834 0.186669 0 1 0.086288 -0.837831 7386 26 +0.026834 0.186669 0 1 0.144355 -0.890871 5564 26 +0.026834 0.24279 0 1 0.079608 -0.886424 2373 26 +0.026834 0.186669 8 1 0.120239 -0.894537 1180 26 +0.026834 0.091489 1 1 0.144355 -0.873493 2395 26 +0.026834 0.152455 1 1 0.144355 -0.894537 2140 26 +0.026834 0.24279 0 1 0.105575 -0.890871 20265 26 +0.021285 0.24279 0 1 0.105575 -0.886424 4080 26 +1.02577 0.037643 1 1 0.09463 -0.760692 1505 26 +1.02577 0.037643 0 1 0.120239 0 9762 26 +0.026834 0.037643 0 1 0.537133 0 1963 26 +0.012997 0.127708 1 1 0.537133 -0.760692 6376 26 +0.010598 0.186669 1 1 0.537133 -0.8098 1028 27 +0.011524 0.076766 2 1 0.537133 0 809 26 +0.017996 0.108189 1 1 0.537133 -0.873493 2702 26 +0.014132 0.108189 1 1 0.537133 -0.837831 920 27 +0.017996 0.076766 1 1 0.537133 -0.853228 984 30 +0.015706 0.152455 1 1 0.537133 -0.864334 3873 26 +0.017996 0.152455 1 1 0.537133 -0.890871 961 27 +0.015706 0.186669 1 1 0.537133 -0.886424 1422 27 +0.012178 0.037643 8 2 0.09463 -0.894537 1125 26 +0.015706 0.022928 8 3 0.537133 -0.894537 840 26 +0.017996 0.022928 8 3 0.086288 -0.890871 1071 27 +0.014132 0.037643 8 2 0.086288 -0.890871 2797 26 +0.015706 0.037643 8 2 0.066835 -0.886424 812 29 +0.012997 0.063173 8 2 0.066835 -0.890871 894 27 +0.012997 0.186669 8 2 0.061816 -0.890871 892 26 +0.012178 0.152455 0 2 0.061816 -0.873493 3020 26 +0.015706 0.076766 0 2 0.061816 -0.88069 1180 31 +0.011524 0.152455 0 2 0.061816 -0.864334 1152 28 +0.014132 0.186669 0 2 0.061816 -0.886424 922 27 +0.012997 0.050218 8 2 0.066835 -0.873493 3162 26 +0.012997 0.037643 8 2 0.066835 -0.864334 1002 30 +0.012178 0.050218 8 2 0.064058 -0.853228 1119 27 +0.012178 0.063173 8 2 0.064058 -0.864334 935 27 +0.026834 0.186669 0 1 0.079608 -0.8098 3749 26 +0.011011 0.24279 8 1 0.537133 -0.873493 1493 26 +0.026834 0.127708 0 1 0.09463 -0.760692 8942 26 +0.021285 0.186669 0 1 0.144355 -0.837831 28658 26 +0.021285 0.186669 0 1 0.120239 -0.760692 107031 26 +0.021285 0.186669 0 1 0.144355 -0.8098 18562 26 +0.014132 0.050218 0 2 0.074387 -0.894537 1116 26 +0.011524 0.050218 8 2 0.086288 -0.890871 849 26 +0.011524 0.063173 8 2 0.09463 -0.894537 983 27 +0.01027 0.152455 8 10 0.079608 -0.894537 1032 27 +0.012178 0.063173 8 2 0.09463 -0.894537 866 26 +0.010598 0.152455 8 10 0.070215 -0.894537 847 26 +0.012997 0.050218 8 2 0.086288 -0.890871 838 26 +0.01027 0.091489 8 2 0.09463 -0.88069 2087 26 +0.01027 0.091489 8 2 0.074387 -0.864334 964 27 +0.01027 0.127708 0 8 0.120239 -0.894537 848 26 +0.01027 0.037643 8 2 0.105575 -0.853228 800 26 +0.010598 0.037643 8 2 0.079608 -0.853228 1196 26 +0.012997 0.022928 0 2 0.074387 -0.864334 1599 26 +0.014132 0.037643 8 2 0.074387 -0.886424 827 26 +0.021285 0.063173 0 2 0.070215 -0.897588 1177 26 +0.021285 0.037643 8 2 0.066835 -0.886424 934 27 +0.012997 0.037643 8 2 0.086288 -0.88069 2968 26 +0.011524 0.022928 8 2 0.086288 -0.853228 1243 28 +0.011011 0.037643 8 3 0.079608 -0.873493 1034 27 +0.010598 0.050218 8 2 0.120239 -0.88069 988 27 +0.012997 0.022928 8 2 0.086288 -0.864334 806 26 +0.014132 0.127708 0 1 0.120239 0 13725 26 +0.011011 0.152455 0 1 0.144355 0 9640 26 +0.010598 0.152455 0 1 0.537133 0 927 27 +0.021285 0.24279 0 1 0.105575 -0.853228 73779 26 +0.026834 0.24279 0 1 0.074387 -0.873493 3816 26 +0.026834 0.186669 0 1 0.105575 -0.837831 18142 26 +0.011524 0.24279 8 2 0.09463 -0.897588 5178 26 +0.010598 0.091489 8 2 0.09463 -0.886424 1910 27 +0.011524 0.076766 8 2 0.079608 -0.890871 1181 28 +0.010598 0.108189 8 3 0.079608 -0.890871 1043 27 +0.011011 0.076766 8 2 0.086288 -0.886424 903 27 +0.011011 0.076766 8 3 0.105575 -0.894537 800 26 +0.01027 0.127708 8 4 0.064058 -0.837831 1166 26 +0.010598 0.108189 8 2 0.070215 -0.873493 1229 28 +0.015706 0.24279 0 1 0.144355 -0.837831 66163 26 +0.015706 0.24279 8 1 0.066835 -0.8098 2542 27 +0.015706 0.108189 0 1 0.144355 0 17367 26 +0.017996 0.050218 0 1 0.144355 0 807 26 +0.014132 0.091489 0 1 0.537133 0 1508 26 +0.012997 0.108189 0 1 0.537133 0 879 29 +0.021285 0.050218 0 1 0.144355 0 2953 26 +1.02577 0.091489 0 1 0.144355 -0.853228 6275 26 +0.010598 0.037643 8 2 0.537133 -0.853228 1105 26 +0.010598 0.063173 0 2 0.120239 -0.873493 1738 26 +1.02577 0.24279 0 1 0.061816 -0.873493 1103 26 +1.02577 0.091489 0 1 0.105575 -0.837831 11750 26 +0.021285 0.24279 0 1 0.144355 -0.864334 105670 26 +0.017996 0.24279 0 1 0.537133 -0.864334 13824 26 +0.017996 0.24279 0 1 0.144355 -0.853228 26313 26 +0.021285 0.24279 0 1 0.120239 -0.853228 14460 26 +0.017996 0.24279 0 1 0.144355 -0.837831 62263 26 +0.017996 0.24279 8 1 0.064058 -0.8098 1529 27 +0.021285 0.24279 8 1 0.061816 -0.8098 1113 27 +0.021285 0.24279 0 1 0.066835 -0.837831 1439 27 +0.021285 0.24279 0 1 0.079608 -0.837831 5444 27 +0.015706 0.24279 0 1 0.537133 -0.837831 40194 26 +0.011524 0.186669 0 1 0.079608 0 10591 26 +0.011011 0.186669 0 1 0.086288 0 3195 26 +1.02577 0.091489 0 1 0.079608 -0.760692 20429 26 +1.02577 0.076766 0 1 0.09463 -0.760692 10643 26 +0.014132 0.076766 1 1 0.120239 0 1093 26 +0.010598 0.24279 0 1 0.066835 0 2174 26 +1.02577 0.091489 0 1 0.105575 -0.8098 12678 26 +1.02577 0.091489 0 1 0.086288 -0.760692 3149 27 +1.02577 0.127708 0 1 0.105575 -0.88069 7575 26 +0.017996 0.037643 8 2 0.086288 -0.890871 1802 26 +1.02577 0.152455 0 1 0.09463 -0.864334 31666 26 +1.02577 0.24279 0 1 0.064058 -0.873493 1370 27 +1.02577 0.186669 0 1 0.066835 -0.864334 1986 26 +1.02577 0.24279 8 1 0.070215 -0.890871 1155 26 +0.026834 0.186669 0 1 0.120239 -0.837831 15456 26 +0.021285 0.091489 0 1 0.105575 0 24429 26 +0.015706 0.186669 0 1 0.074387 0 38780 26 +0.026834 0.091489 0 1 0.079608 0 4657 26 +0.012178 0.127708 0 1 0.144355 0 2506 26 +0.026834 0.127708 0 1 0.105575 -0.760692 11450 26 +1.02577 0.050218 0 1 0.537133 -0.837831 2145 26 +0.026834 0.24279 0 1 0.086288 -0.886424 1424 26 +0.014132 0.152455 0 1 0.09463 0 14189 25 +0.021285 0.127708 0 1 0.537133 -0.760692 25371 25 +0.021285 0.24279 0 1 0.120239 -0.837831 41347 25 +0.012178 0.186669 0 1 0.105575 0 49345 25 +1.02577 0.108189 0 1 0.144355 -0.853228 57684 25 +1.02577 0.127708 0 1 0.144355 -0.88069 25107 26 +0.012178 0.24279 0 1 0.086288 -0.760692 27684 25 +0.014132 0.152455 0 1 0.144355 0 50513 25 +0.026834 0.24279 0 1 0.144355 -0.890871 35552 25 +0.017996 0.186669 0 1 0.144355 -0.760692 26946 25 +0.017996 0.24279 0 1 0.120239 -0.8098 96846 25 +0.021285 0.186669 0 1 0.144355 -0.760692 36515 25 +0.017996 0.24279 0 1 0.144355 -0.8098 68390 25 +0.026834 0.127708 1 1 0.144355 -0.853228 29301 25 +0.026834 0.127708 1 1 0.120239 -0.760692 86159 25 +0.026834 0.186669 1 1 0.09463 -0.8098 27139 25 +0.026834 0.127708 1 1 0.144355 -0.8098 25113 25 +0.021285 0.127708 0 1 0.079608 0 62763 25 +1.02577 0.108189 0 1 0.086288 -0.760692 30041 25 +0.015706 0.24279 0 1 0.537133 -0.8098 35700 25 +0.026834 0.152455 1 1 0.144355 -0.8098 40305 25 +0.026834 0.24279 0 1 0.144355 -0.873493 121546 25 +0.021285 0.186669 0 1 0.537133 -0.837831 59569 25 +0.026834 0.24279 0 1 0.537133 -0.890871 37849 25 +1.02577 0.152455 0 1 0.105575 -0.864334 27039 25 +0.017996 0.127708 0 1 0.120239 0 81146 25 +0.026834 0.076766 0 1 0.120239 0 28118 25 +0.026834 0.152455 1 1 0.120239 -0.760692 81939 25 +0.026834 0.152455 0 1 0.537133 -0.8098 33273 25 +1.02577 0.152455 0 1 0.120239 -0.873493 25675 25 +0.021285 0.24279 0 1 0.144355 -0.837831 42857 25 +0.021285 0.24279 0 1 0.105575 -0.8098 39920 25 +1.02577 0.127708 0 1 0.120239 -0.853228 25268 25 +0.012997 0.24279 0 1 0.537133 -0.760692 137964 25 +1.02577 0.127708 0 1 0.105575 -0.8098 56180 25 +0.026834 0.108189 0 1 0.086288 0 40359 25 +0.021285 0.108189 0 1 0.120239 0 31490 25 +0.015706 0.24279 0 1 0.086288 -0.760692 30311 25 +0.026834 0.063173 1 1 0.120239 0 31515 25 +0.017996 0.24279 0 1 0.537133 -0.8098 45582 25 +0.026834 0.24279 0 1 0.144355 -0.864334 66116 25 +0.021285 0.24279 0 1 0.144355 -0.8098 52105 25 +1.02577 0.091489 1 1 0.144355 -0.864334 32197 25 +1.02577 0.152455 0 1 0.105575 -0.8098 63758 25 +0.014132 0.186669 0 1 0.09463 0 37665 25 +1.02577 0.091489 0 1 0.144355 -0.760692 70923 25 +1.02577 0.152455 0 1 0.120239 -0.8098 66622 25 +1.02577 0.127708 0 1 0.144355 -0.837831 32605 25 +1.02577 0.127708 0 1 0.537133 -0.873493 34334 25 +0.026834 0.186669 0 1 0.537133 -0.837831 88478 25 +0.026834 0.152455 0 1 0.144355 -0.760692 36708 25 +0.021285 0.091489 1 1 0.120239 0 29336 25 +0.017996 0.186669 1 1 0.074387 0 30298 25 +0.015706 0.24279 0 1 0.144355 -0.760692 93244 25 +0.026834 0.24279 0 1 0.537133 -0.864334 97876 25 +0.021285 0.24279 0 1 0.537133 -0.837831 34944 25 +1.02577 0.127708 1 1 0.120239 -0.853228 25251 25 +0.012997 0.186669 0 1 0.120239 0 35175 25 +0.017996 0.186669 1 1 0.144355 -0.8098 27488 25 +1.02577 0.091489 0 1 0.537133 -0.760692 39597 25 +1.02577 0.127708 0 1 0.537133 -0.8098 57861 25 +0.015706 0.152455 0 1 0.144355 0 41316 25 +0.026834 0.24279 0 1 0.09463 -0.8098 57491 25 +0.026834 0.24279 0 1 0.144355 -0.853228 51651 25 +0.026834 0.24279 0 1 0.105575 -0.8098 44023 25 +0.021285 0.186669 0 1 0.537133 -0.760692 49261 25 +1.02577 0.108189 1 1 0.105575 -0.760692 45134 25 +0.017996 0.24279 0 1 0.105575 -0.760692 46396 25 +0.017996 0.152455 0 1 0.105575 0 43891 25 +1.02577 0.152455 0 1 0.537133 -0.873493 53022 25 +0.026834 0.127708 1 1 0.144355 -0.760692 27214 25 +1.02577 0.186669 0 1 0.537133 -0.894537 32650 25 +1.02577 0.186669 0 1 0.105575 -0.873493 36378 25 +0.026834 0.186669 0 1 0.105575 -0.760692 56416 25 +0.014132 0.186669 0 1 0.144355 0 46264 25 +1.02577 0.076766 1 1 0.144355 -0.760692 32497 25 +0.014132 0.022928 0 2 0.086288 0 27378 25 +0.026834 0.186669 1 1 0.537133 -0.853228 97193 24 +0.017996 0.186669 0 1 0.086288 0 31043 24 +0.026834 0.186669 1 1 0.120239 -0.8098 27967 24 +1.02577 0.152455 0 1 0.537133 -0.853228 38017 24 +0.015706 0.091489 0 2 0.064058 -0.837831 31058 24 +1.02577 0.127708 0 1 0.120239 -0.760692 50261 24 +1.02577 0.152455 0 1 0.144355 -0.8098 28947 24 +0.026834 0.152455 1 1 0.070215 0 37825 24 +0.026834 0.24279 0 1 0.120239 -0.8098 45880 24 +0.026834 0.186669 0 1 0.120239 -0.760692 25857 24 +0.026834 0.076766 1 1 0.144355 0 40924 24 +1.02577 0.063173 2 1 0.537133 -0.8098 27868 24 +0.021285 0.127708 0 1 0.105575 0 32827 24 +0.021285 0.24279 8 1 0.144355 -0.853228 29050 24 +0.017996 0.24279 1 1 0.120239 -0.760692 47311 24 +1.02577 0.152455 0 1 0.105575 -0.760692 36699 24 +0.021285 0.127708 1 1 0.105575 0 27814 24 +1.02577 0.186669 0 1 0.120239 -0.853228 81788 24 +0.015706 0.186669 0 1 0.144355 0 50061 24 +0.015706 0.091489 8 2 0.070215 -0.864334 32073 24 +0.011011 0.076766 8 2 0.079608 -0.760692 32281 24 +0.026834 0.076766 0 2 0.070215 -0.864334 25616 24 +0.012997 0.091489 0 2 0.066835 -0.760692 28425 24 +0.014132 0.076766 0 2 0.070215 -0.760692 26988 24 +0.017996 0.037643 0 2 0.086288 -0.837831 27244 24 +0.012178 0.063173 0 2 0.09463 -0.8098 29615 24 +0.015706 0.127708 0 2 0.064058 -0.8098 27665 24 +0.012178 0.152455 0 2 0.079608 -0.873493 27798 24 +0.021285 0.152455 0 1 0.105575 0 54675 24 +1.02577 0.063173 0 1 0.09463 0 26138 24 +1.02577 0.186669 0 1 0.144355 -0.873493 35483 24 +0.026834 0.186669 0 1 0.537133 -0.8098 40398 24 +0.026834 0.24279 0 1 0.537133 -0.837831 82756 24 +1.02577 0.186669 0 1 0.120239 -0.837831 39853 24 +0.021285 0.186669 1 1 0.144355 -0.760692 33479 24 +0.011524 0.076766 0 2 0.105575 -0.760692 27224 24 +0.012997 1.43371 0 1 0.537133 -0.894537 43083 24 +0.026834 0.186669 0 1 0.144355 -0.760692 29850 24 +0.012997 0.091489 0 2 0.105575 -0.864334 30296 24 +0.021285 0.091489 8 2 0.064058 -0.760692 26216 24 +0.012997 0.108189 8 2 0.086288 -0.853228 25434 24 +0.012997 0.24279 0 2 0.066835 -0.8098 25992 24 +0.026834 0.24279 0 1 0.144355 -0.8098 37132 24 +1.02577 0.186669 0 1 0.537133 -0.853228 98599 24 +1.02577 0.24279 0 1 0.120239 -0.890871 31001 24 +0.026834 0.127708 1 1 0.537133 -0.760692 52692 24 +0.017996 0.152455 0 1 0.144355 0 37532 24 +0.014132 0.091489 0 2 0.120239 -0.864334 32426 24 +0.017996 0.108189 0 2 0.079608 -0.864334 34857 24 +0.015706 0.063173 0 2 0.105575 -0.837831 30144 24 +0.017996 0.076766 0 2 0.105575 -0.853228 28936 24 +0.015706 0.152455 0 2 0.086288 -0.864334 53878 24 +0.015706 0.050218 0 2 0.09463 -0.760692 29174 24 +1.02577 0.186669 0 1 0.144355 -0.8098 95724 24 +0.021285 0.186669 0 1 0.086288 0 33011 24 +0.017996 0.091489 0 2 0.070215 -0.760692 28336 24 +0.011524 0.127708 0 2 0.079608 -0.760692 29194 24 +0.015706 0.108189 0 2 0.079608 -0.8098 33643 24 +0.015706 0.091489 0 2 0.086288 -0.760692 32329 24 +0.011011 1.43371 0 1 0.537133 -0.873493 56331 24 +0.026834 0.091489 0 1 0.144355 0 29505 24 +0.010598 0.24279 0 1 0.120239 0 25333 24 +0.021285 0.152455 0 1 0.120239 0 29957 24 +0.01027 1.43371 0 1 0.537133 -0.8098 33386 24 +0.017996 0.186669 0 1 0.105575 0 32769 24 +1.02577 0.24279 0 1 0.120239 -0.88069 35087 24 +0.026834 0.127708 0 1 0.120239 0 87047 24 +1.02577 0.127708 0 1 0.537133 -0.760692 32214 24 +0.021285 0.108189 0 2 0.086288 -0.837831 62310 24 +0.026834 0.152455 0 1 0.09463 0 35580 24 +1.02577 0.091489 8 1 0.144355 -0.760692 28301 24 +0.021285 0.186669 0 1 0.105575 0 38477 24 +0.026834 0.24279 8 1 0.079608 -0.760692 28070 24 +0.021285 0.24279 1 1 0.105575 -0.760692 44135 24 +0.017996 0.076766 0 2 0.105575 -0.8098 25871 24 +0.012178 0.127708 0 2 0.105575 -0.8098 49333 24 +0.014132 0.152455 0 2 0.120239 -0.88069 29040 24 +0.011524 0.152455 0 2 0.537133 -0.853228 28437 24 +1.02577 0.063173 1 1 0.120239 0 37721 24 +0.017996 0.24279 8 2 0.064058 -0.760692 26660 24 +1.02577 0.24279 1 1 0.537133 -0.897588 32594 24 +0.026834 0.127708 0 1 0.144355 0 34356 24 +0.012178 1.43371 0 1 0.537133 -0.886424 25509 24 +0.012997 1.43371 0 1 0.537133 -0.88069 47121 24 +0.015706 1.43371 0 1 0.537133 -0.890871 63511 24 +0.014132 1.43371 0 1 0.537133 -0.88069 29142 24 +0.011524 1.43371 0 1 0.537133 -0.864334 38445 24 +1.02577 0.152455 1 1 0.537133 -0.873493 50313 24 +0.015706 0.108189 8 3 0.064058 -0.760692 25083 24 +0.015706 1.43371 0 1 0.537133 -0.873493 113836 23 +0.017996 0.24279 0 1 0.537133 -0.760692 57913 23 +1.02577 0.24279 0 1 0.537133 -0.886424 70766 23 +1.02577 0.24279 0 1 0.144355 -0.873493 58331 23 +0.017996 1.43371 0 1 0.537133 -0.886424 75737 23 +0.012997 0.091489 0 2 0.144355 -0.760692 29120 23 +0.021285 0.076766 0 2 0.120239 -0.853228 28341 23 +0.017996 1.43371 0 1 0.537133 -0.873493 69918 23 +0.011011 1.43371 0 1 0.537133 -0.837831 46444 23 +0.014132 1.43371 0 1 0.537133 -0.864334 58318 23 +0.012997 0.037643 0 3 0.09463 0 27946 23 +1.02577 0.127708 1 1 0.537133 -0.837831 40050 23 +0.021285 0.186669 1 1 0.537133 -0.760692 42430 23 +0.014132 1.43371 0 1 0.537133 -0.853228 85505 23 +0.012997 0.24279 0 1 0.079608 0 26985 23 +0.026834 0.037643 0 2 0.086288 -0.760692 26077 23 +1.02577 0.24279 1 1 0.09463 -0.853228 31718 23 +0.021285 1.43371 0 1 0.537133 -0.894537 41732 23 +0.021285 0.127708 0 2 0.074387 -0.8098 30159 23 +0.015706 0.152455 0 2 0.079608 -0.8098 25472 23 +0.017996 0.152455 1 1 0.120239 0 33482 23 +1.02577 0.091489 1 1 0.079608 0 27644 23 +0.014132 0.152455 0 3 0.074387 -0.8098 50389 23 +0.017996 0.091489 0 3 0.086288 -0.864334 25648 23 +0.021285 0.24279 1 1 0.120239 -0.760692 32954 23 +0.015706 1.43371 0 1 0.537133 -0.864334 34289 23 +0.017996 0.24279 1 1 0.537133 -0.837831 25965 23 +0.026834 0.24279 1 1 0.537133 -0.873493 26476 23 +0.015706 0.076766 0 3 0.09463 -0.760692 38181 23 +0.026834 0.108189 0 2 0.079608 -0.8098 38782 23 +0.021285 0.24279 1 1 0.537133 -0.8098 57288 23 +0.021285 0.24279 8 2 0.074387 -0.864334 26519 23 +0.026834 0.127708 0 1 0.537133 0 37313 23 +1.02577 0.186669 0 1 0.537133 -0.8098 66269 23 +1.02577 0.24279 0 1 0.537133 -0.873493 43087 23 +0.017996 0.127708 0 2 0.144355 -0.88069 31834 23 +0.015706 0.186669 0 2 0.09463 -0.873493 27738 23 +0.012178 0.186669 0 2 0.09463 -0.8098 33016 23 +0.012178 1.43371 0 1 0.537133 -0.837831 40535 23 +0.012997 0.152455 0 2 0.086288 -0.760692 27382 23 +0.017996 0.186669 0 1 0.144355 0 38001 23 +1.02577 0.186669 1 1 0.144355 -0.853228 35538 23 +1.02577 0.091489 1 1 0.09463 0 25120 23 +1.02577 0.24279 0 1 0.105575 -0.837831 44652 23 +0.017996 0.152455 1 1 0.144355 0 28220 23 +0.026834 0.127708 0 2 0.086288 -0.837831 31259 23 +0.017996 0.186669 0 1 0.537133 0 29191 23 +0.021285 0.076766 0 2 0.09463 -0.760692 26317 23 +0.012997 1.43371 0 1 0.537133 -0.837831 27934 23 +1.02577 0.24279 0 1 0.144355 -0.853228 83918 23 +0.026834 0.186669 0 1 0.537133 -0.760692 28870 23 +0.017996 1.43371 0 1 0.537133 -0.864334 48427 23 +0.017996 0.127708 0 2 0.086288 -0.760692 29233 23 +0.026834 0.152455 0 1 0.120239 0 39889 23 +0.011011 0.127708 0 2 0.09463 0 32379 23 +0.015706 1.43371 0 1 0.537133 -0.837831 130893 23 +0.026834 0.24279 0 1 0.120239 -0.760692 75962 23 +0.017996 1.43371 0 1 0.537133 -0.853228 58590 23 +1.02577 0.24279 0 1 0.144355 -0.837831 55417 23 +0.015706 0.127708 0 3 0.086288 -0.8098 27199 23 +1.02577 0.152455 1 1 0.537133 -0.8098 70759 23 +0.021285 0.186669 0 1 0.144355 0 66194 23 +0.015706 0.127708 0 3 0.09463 -0.8098 31165 23 +0.026834 0.24279 1 1 0.144355 -0.8098 28890 23 +0.026834 0.186669 0 1 0.086288 0 31200 23 +0.014132 0.063173 0 2 0.09463 0 25889 23 +0.026834 0.091489 0 2 0.120239 -0.864334 32871 23 +0.015706 1.43371 0 1 0.537133 -0.8098 207066 23 +0.021285 1.43371 0 3 0.064058 -0.760692 27052 23 +1.02577 0.24279 0 1 0.105575 -0.8098 32711 23 +0.021285 0.24279 0 1 0.537133 -0.760692 61500 23 +1.02577 0.152455 0 1 0.537133 -0.760692 48873 23 +0.017996 0.152455 0 2 0.09463 -0.837831 26654 23 +0.021285 0.076766 0 2 0.120239 -0.760692 30642 23 +0.021285 1.43371 0 1 0.537133 -0.873493 155480 23 +0.017996 0.091489 0 2 0.070215 0 32521 23 +0.014132 0.108189 0 2 0.086288 0 26086 23 +0.026834 0.091489 0 3 0.070215 -0.760692 27973 23 +0.012997 0.24279 0 1 0.537133 0 122022 23 +0.014132 0.24279 0 1 0.105575 0 34434 23 +0.026834 0.24279 0 1 0.144355 -0.760692 47410 23 +0.017996 1.43371 0 1 0.537133 -0.837831 70983 23 +0.021285 1.43371 0 1 0.105575 -0.837831 38488 23 +1.02577 0.24279 0 1 0.537133 -0.864334 30189 23 +0.014132 0.152455 0 2 0.105575 -0.8098 26970 23 +0.026834 1.43371 0 2 0.079608 -0.864334 30449 23 +1.02577 0.24279 0 1 0.537133 -0.853228 37105 23 +0.026834 0.127708 2 1 0.105575 0 26191 23 +0.026834 0.24279 0 1 0.537133 -0.8098 34878 23 +0.015706 0.127708 0 2 0.105575 -0.760692 27208 23 +0.026834 0.127708 0 2 0.105575 -0.853228 36880 23 +0.021285 0.127708 0 2 0.09463 -0.760692 29057 23 +0.021285 1.43371 0 1 0.537133 -0.864334 54472 23 +0.021285 1.43371 0 1 0.537133 -0.853228 66315 23 +0.026834 0.186669 2 1 0.537133 -0.8098 28700 23 +0.015706 0.152455 0 2 0.120239 -0.8098 48166 22 +0.021285 0.152455 0 2 0.120239 -0.864334 28765 23 +0.017996 0.186669 0 2 0.079608 -0.760692 34047 22 +0.011524 0.108189 0 3 0.120239 0 29412 22 +1.02577 0.186669 2 1 0.105575 -0.760692 68561 22 +1.02577 0.063173 0 2 0.079608 -0.760692 30021 22 +1.02577 0.152455 0 1 0.074387 0 28347 22 +0.021285 1.43371 0 1 0.537133 -0.837831 80278 22 +0.026834 0.186669 0 1 0.120239 0 71754 22 +0.021285 0.127708 0 2 0.120239 -0.8098 28460 22 +0.014132 0.186669 0 2 0.105575 -0.8098 38535 22 +0.021285 0.127708 0 3 0.086288 -0.8098 29399 22 +0.026834 0.127708 0 2 0.105575 -0.8098 29181 22 +1.02577 0.108189 0 2 0.09463 -0.853228 33483 22 +0.026834 0.091489 0 2 0.537133 -0.864334 28338 22 +0.021285 0.127708 0 2 0.144355 -0.837831 30174 22 +1.02577 0.24279 0 1 0.537133 -0.837831 44707 22 +0.015706 0.24279 0 3 0.079608 -0.8098 27446 22 +1.02577 0.091489 0 1 0.144355 0 37952 22 +0.014132 0.24279 0 1 0.537133 0 30488 22 +0.014132 0.186669 1 2 0.074387 0 27103 22 +0.017996 1.43371 0 1 0.537133 -0.8098 84148 22 +0.017996 0.076766 0 2 0.09463 0 25464 22 +0.026834 0.152455 0 2 0.09463 -0.8098 26709 22 +0.017996 0.24279 0 1 0.086288 0 42797 22 +0.015706 0.24279 0 1 0.120239 0 42089 22 +0.026834 0.127708 8 3 0.074387 -0.760692 28383 22 +0.026834 1.43371 0 1 0.537133 -0.873493 264091 22 +0.011524 1.43371 0 1 0.537133 -0.760692 51329 22 +0.026834 0.108189 1 2 0.120239 -0.837831 30102 22 +0.011524 0.24279 8 4 0.09463 -0.853228 25195 22 +1.02577 0.108189 0 2 0.120239 -0.864334 26183 22 +1.02577 0.076766 1 1 0.537133 0 41425 22 +1.02577 0.24279 1 1 0.144355 -0.837831 48374 22 +0.026834 0.186669 1 1 0.537133 -0.760692 33571 22 +1.02577 0.127708 0 1 0.120239 0 78137 22 +0.021285 0.108189 0 2 0.144355 -0.760692 32653 22 +1.02577 0.24279 0 1 0.537133 -0.8098 111254 22 +0.026834 0.186669 8 3 0.105575 -0.890871 28788 22 +1.02577 0.186669 1 1 0.537133 -0.853228 32216 22 +1.02577 0.186669 0 1 0.144355 -0.760692 54764 22 +0.026834 0.127708 1 2 0.144355 -0.853228 29948 22 +0.017996 0.186669 1 1 0.144355 0 38777 22 +0.021285 0.127708 2 1 0.144355 0 28791 22 +0.026834 0.091489 1 2 0.105575 -0.760692 25926 22 +1.02577 0.186669 1 1 0.537133 -0.8098 31827 22 +0.014132 0.186669 0 2 0.144355 -0.837831 43565 22 +0.017996 0.152455 0 2 0.144355 -0.8098 26912 22 +0.021285 1.43371 0 1 0.537133 -0.8098 114108 22 +0.017996 0.24279 1 4 0.086288 -0.873493 25204 22 +1.02577 0.152455 1 1 0.144355 -0.760692 30159 22 +0.026834 1.43371 0 1 0.105575 -0.853228 25863 22 +0.026834 0.24279 0 1 0.537133 -0.760692 40026 22 +0.026834 1.43371 0 1 0.537133 -0.853228 173526 22 +0.021285 0.24279 1 2 0.086288 -0.8098 33852 22 +0.015706 0.152455 1 2 0.120239 -0.760692 32044 22 +0.015706 0.24279 0 1 0.537133 0 28021 22 +0.021285 0.186669 1 2 0.144355 -0.88069 27622 22 +0.012997 0.091489 0 3 0.537133 0 26061 22 +0.017996 0.24279 0 1 0.105575 0 32726 22 +0.014132 1.43371 0 1 0.537133 -0.760692 89668 22 +1.02577 0.24279 1 1 0.537133 -0.873493 31189 22 +0.026834 0.108189 1 1 0.537133 0 28217 22 +1.02577 0.127708 0 1 0.537133 0 36294 22 +1.02577 0.127708 0 2 0.144355 -0.873493 26885 22 +0.012178 0.152455 0 3 0.09463 0 25966 22 +0.014132 0.108189 0 4 0.120239 -0.8098 26956 22 +0.021285 0.108189 0 2 0.079608 0 33494 22 +0.026834 0.152455 0 2 0.144355 -0.837831 42129 22 +0.026834 0.24279 1 1 0.537133 -0.8098 28539 22 +0.026834 1.43371 0 1 0.537133 -0.837831 132758 22 +0.017996 0.24279 0 1 0.120239 0 25653 22 +0.017996 0.152455 0 3 0.09463 -0.760692 30650 22 +0.021285 0.152455 0 3 0.120239 -0.853228 39881 22 +0.021285 0.127708 0 2 0.537133 -0.8098 25877 21 +0.026834 0.152455 0 1 0.537133 0 35119 21 +0.021285 0.152455 1 1 0.537133 0 34452 22 +0.021285 0.186669 0 2 0.120239 -0.837831 40716 21 +0.015706 0.186669 0 3 0.105575 -0.8098 27143 21 +1.02577 0.127708 0 2 0.09463 -0.8098 32902 21 +1.02577 0.091489 0 2 0.120239 -0.8098 25686 21 +0.015706 1.43371 0 1 0.537133 -0.760692 57372 21 +0.015706 0.152455 0 2 0.09463 0 28879 21 +0.026834 0.186669 0 2 0.537133 -0.88069 30764 21 +0.011524 1.43371 0 1 0.537133 0 42037 21 +0.017996 0.050218 1 3 0.144355 0 25683 21 +0.017996 1.43371 0 1 0.537133 -0.760692 86346 21 +0.017996 0.186669 0 2 0.144355 -0.8098 31608 21 +0.021285 0.186669 0 2 0.09463 -0.760692 27101 21 +1.02577 0.127708 2 1 0.537133 -0.760692 37387 21 +1.02577 0.186669 0 3 0.086288 -0.864334 28066 21 +0.017996 0.24279 0 1 0.144355 0 28854 21 +0.026834 0.186669 0 2 0.105575 -0.8098 25021 21 +1.02577 0.24279 1 1 0.537133 -0.853228 25795 21 +0.021285 0.24279 0 1 0.09463 0 40768 21 +0.017996 0.24279 0 3 0.09463 -0.837831 26407 21 +0.017996 0.24279 0 3 0.105575 -0.864334 27708 21 +1.02577 0.186669 1 1 0.537133 -0.760692 67665 21 +0.021285 0.24279 1 1 0.537133 -0.760692 36340 21 +1.02577 0.108189 0 2 0.144355 -0.8098 33427 21 +0.026834 0.186669 0 2 0.537133 -0.864334 25432 21 +1.02577 0.24279 0 1 0.120239 -0.760692 75912 21 +1.02577 0.152455 0 1 0.105575 0 38161 21 +0.026834 0.152455 1 1 0.144355 0 39626 21 +0.012997 1.43371 0 1 0.537133 0 41443 21 +0.026834 0.186669 0 1 0.537133 0 62571 21 +0.026834 0.127708 0 3 0.09463 -0.760692 31350 21 +1.02577 0.24279 1 1 0.537133 -0.8098 54621 21 +0.021285 0.152455 0 2 0.144355 -0.760692 33475 21 +0.015706 0.127708 0 2 0.537133 0 29787 21 +0.015706 0.24279 0 4 0.079608 -0.760692 25722 21 +0.014132 0.24279 0 3 0.120239 -0.864334 25268 21 +0.026834 0.24279 0 2 0.105575 -0.853228 28659 21 +0.026834 0.152455 1 2 0.144355 -0.8098 30399 21 +0.021285 0.108189 0 2 0.105575 0 27914 21 +0.026834 1.43371 0 1 0.537133 -0.8098 155792 21 +1.02577 0.24279 0 1 0.144355 -0.760692 52017 21 +1.02577 0.152455 0 2 0.537133 -0.873493 33331 21 +0.017996 0.186669 0 3 0.105575 -0.760692 29407 21 +0.017996 0.186669 1 2 0.144355 -0.760692 31761 21 +1.02577 0.108189 1 1 0.144355 0 34074 21 +0.026834 0.186669 0 2 0.144355 -0.8098 28843 21 +0.012997 0.186669 0 3 0.537133 -0.8098 25120 21 +1.02577 0.24279 1 2 0.086288 -0.8098 28295 21 +0.021285 0.186669 1 1 0.537133 0 40755 21 +0.021285 0.24279 0 1 0.120239 0 58219 21 +0.015706 0.24279 0 3 0.105575 -0.8098 26300 21 +0.021285 0.186669 0 3 0.070215 0 26158 21 +0.026834 0.24279 0 1 0.086288 0 25248 21 +1.02577 0.186669 2 1 0.537133 -0.760692 34056 21 +0.026834 0.152455 1 2 0.537133 -0.837831 28047 20 +0.021285 0.24279 0 2 0.120239 -0.853228 28801 20 +1.02577 0.186669 0 3 0.09463 -0.837831 30077 20 +1.02577 0.152455 0 2 0.120239 -0.8098 26849 20 +0.021285 1.43371 0 1 0.537133 -0.760692 123142 20 +1.02577 0.152455 0 1 0.144355 0 40878 20 +0.021285 0.24279 0 1 0.144355 0 41547 20 +1.02577 0.186669 0 2 0.086288 -0.760692 25101 20 +0.026834 0.24279 1 1 0.537133 -0.760692 34607 20 +0.026834 0.127708 0 2 0.079608 0 27969 20 +1.02577 1.43371 0 1 0.537133 -0.897588 34097 20 +1.02577 0.108189 0 2 0.120239 -0.760692 26257 20 +0.026834 0.24279 1 2 0.144355 -0.886424 26103 20 +1.02577 0.186669 0 1 0.09463 0 35017 20 +1.02577 0.108189 1 2 0.144355 -0.8098 28583 20 +0.015706 1.43371 0 1 0.537133 0 81481 20 +1.02577 1.43371 0 3 0.086288 -0.853228 29572 20 +0.026834 0.152455 1 3 0.120239 -0.837831 26716 20 +0.021285 0.24279 0 1 0.537133 0 43470 20 +1.02577 0.24279 0 1 0.537133 -0.760692 53558 20 +1.02577 0.091489 2 1 0.537133 0 31891 20 +0.021285 0.186669 0 3 0.537133 -0.864334 26512 20 +0.017996 0.24279 8 2 0.120239 -0.8098 30128 20 +0.026834 0.186669 0 2 0.537133 -0.8098 26689 20 +1.02577 1.43371 0 1 0.537133 -0.873493 325793 20 +1.02577 1.43371 0 1 0.120239 -0.837831 94111 20 +1.02577 1.43371 0 1 0.537133 -0.864334 101495 20 +0.026834 1.43371 0 4 0.079608 -0.8098 27261 20 +1.02577 0.127708 1 1 0.537133 0 44559 20 +0.026834 0.186669 1 1 0.144355 0 33531 20 +0.026834 0.186669 0 2 0.120239 -0.760692 28041 20 +1.02577 0.127708 0 2 0.537133 -0.8098 28744 20 +1.02577 0.186669 0 1 0.120239 0 49912 20 +1.02577 1.43371 0 1 0.144355 -0.853228 37458 20 +0.017996 0.24279 0 2 0.144355 -0.837831 35708 20 +1.02577 1.43371 0 1 0.537133 -0.853228 96412 20 +0.021285 0.152455 8 3 0.120239 -0.760692 28034 20 +0.014132 0.127708 1 4 0.105575 0 29208 20 +0.021285 0.152455 0 2 0.105575 0 33535 20 +0.017996 1.43371 0 1 0.537133 0 74411 20 +1.02577 0.24279 0 2 0.120239 -0.873493 25171 20 +0.026834 0.24279 0 1 0.120239 0 85068 20 +1.02577 0.186669 0 2 0.144355 -0.837831 38807 20 +1.02577 1.43371 0 1 0.537133 -0.837831 160537 20 +0.026834 1.43371 0 1 0.537133 -0.760692 171289 20 +0.026834 0.24279 1 2 0.09463 -0.760692 29237 20 +0.021285 0.091489 1 2 0.144355 0 26116 20 +0.026834 0.152455 2 1 0.537133 0 29608 20 +1.02577 0.24279 0 3 0.105575 -0.837831 35538 19 +0.026834 0.108189 0 3 0.537133 -0.760692 31866 19 +0.021285 0.186669 0 4 0.105575 -0.8098 30087 19 +0.026834 0.24279 1 2 0.144355 -0.837831 50013 19 +0.017996 0.186669 2 2 0.09463 0 27188 19 +1.02577 0.186669 1 2 0.105575 -0.760692 29915 19 +1.02577 0.24279 1 1 0.144355 -0.760692 26065 19 +0.017996 0.24279 0 3 0.144355 -0.837831 34309 19 +1.02577 0.186669 0 1 0.144355 0 36837 19 +1.02577 0.152455 1 1 0.144355 0 34789 19 +0.026834 0.24279 0 1 0.144355 0 55514 19 +1.02577 0.152455 0 3 0.120239 -0.8098 26169 19 +0.026834 0.108189 0 2 0.120239 0 29857 19 +0.015706 0.24279 1 1 0.144355 0 25258 19 +1.02577 1.43371 0 1 0.537133 -0.8098 187069 19 +1.02577 0.152455 1 1 0.537133 0 25289 19 +1.02577 0.24279 3 1 0.537133 -0.8098 27976 19 +0.015706 0.24279 0 2 0.537133 -0.8098 30947 19 +1.02577 0.186669 0 2 0.537133 -0.837831 26649 19 +0.017996 0.24279 0 4 0.105575 -0.760692 29573 19 +0.014132 0.186669 0 2 0.537133 0 28149 19 +0.026834 0.24279 0 2 0.144355 -0.8098 27773 19 +1.02577 0.091489 1 2 0.537133 -0.760692 31002 19 +0.026834 0.186669 0 3 0.144355 -0.8098 28082 19 +0.026834 0.152455 1 2 0.537133 -0.760692 26132 19 +0.021285 1.43371 0 1 0.537133 0 106139 19 +0.026834 0.24279 0 2 0.537133 -0.864334 26059 19 +0.017996 1.43371 0 4 0.079608 0 25989 19 +0.026834 0.24279 0 1 0.537133 0 42223 19 +0.014132 0.24279 0 4 0.120239 -0.760692 25774 19 +1.02577 0.24279 1 1 0.537133 -0.760692 31842 19 +0.021285 0.186669 1 3 0.144355 -0.760692 25657 19 +1.02577 0.24279 1 1 0.086288 0 30276 19 +0.021285 0.152455 0 2 0.537133 0 26769 19 +1.02577 0.091489 0 3 0.079608 0 27587 19 +1.02577 0.24279 0 2 0.144355 -0.837831 38160 19 +0.026834 1.43371 0 4 0.09463 -0.8098 31482 18 +1.02577 0.186669 2 2 0.144355 -0.8098 39497 18 +0.017996 0.24279 1 1 0.537133 0 33053 18 +0.017996 0.186669 0 3 0.105575 0 25095 18 +1.02577 0.127708 3 1 0.537133 0 26198 18 +0.021285 0.24279 0 3 0.120239 -0.760692 25249 18 +0.026834 0.186669 1 2 0.09463 0 33496 18 +1.02577 0.186669 1 1 0.144355 0 41142 18 +1.02577 0.186669 1 1 0.537133 0 63303 18 +0.026834 1.43371 0 1 0.537133 0 143887 18 +1.02577 0.24279 0 1 0.105575 0 37730 18 +0.026834 0.24279 0 2 0.537133 -0.8098 28950 18 +1.02577 0.24279 0 1 0.120239 0 39953 18 +1.02577 0.186669 1 2 0.537133 -0.837831 29476 18 +1.02577 0.186669 1 3 0.105575 -0.760692 29150 18 +0.026834 0.24279 1 1 0.120239 0 25465 18 +1.02577 1.43371 0 1 0.537133 -0.760692 196333 18 +1.02577 0.152455 0 3 0.537133 -0.8098 30649 18 +0.021285 0.108189 0 4 0.537133 0 25418 18 +0.026834 0.24279 0 3 0.144355 -0.8098 27291 18 +0.021285 0.24279 2 2 0.144355 -0.760692 26222 18 +0.026834 0.127708 1 2 0.144355 0 35159 18 +1.02577 0.152455 1 2 0.537133 -0.760692 33764 18 +1.02577 1.43371 0 3 0.105575 -0.853228 30880 18 +1.02577 0.24279 0 2 0.537133 -0.837831 37842 18 +1.02577 0.24279 0 1 0.144355 0 62444 18 +0.021285 0.24279 1 1 0.537133 0 27868 18 +0.014132 0.24279 0 5 0.09463 0 26278 18 +0.026834 0.186669 0 3 0.537133 -0.760692 29428 17 +1.02577 0.108189 0 2 0.120239 0 28607 17 +1.02577 1.43371 0 4 0.086288 -0.760692 25209 17 +1.02577 0.24279 1 3 0.120239 -0.8098 31101 17 +0.021285 0.186669 0 2 0.537133 0 25751 17 +1.02577 0.24279 0 1 0.537133 0 58029 17 +1.02577 0.186669 2 1 0.537133 0 43911 17 +0.026834 0.24279 1 1 0.537133 0 49436 17 +0.026834 1.43371 0 4 0.120239 -0.873493 35057 17 +1.02577 0.24279 2 2 0.537133 -0.853228 31283 17 +0.026834 0.152455 0 3 0.120239 0 29854 17 +0.026834 1.43371 0 3 0.120239 -0.837831 40357 17 +1.02577 0.186669 1 2 0.537133 -0.760692 36292 17 +0.021285 0.186669 1 4 0.144355 -0.760692 25897 17 +0.026834 0.24279 0 2 0.537133 -0.760692 32817 17 +1.02577 0.24279 0 3 0.144355 -0.8098 26361 17 +1.02577 0.127708 1 2 0.120239 0 29746 17 +1.02577 1.43371 0 4 0.105575 -0.8098 25744 16 +0.026834 0.24279 1 3 0.537133 -0.853228 27053 16 +0.021285 0.186669 2 3 0.120239 0 25454 16 +1.02577 0.127708 2 3 0.537133 -0.760692 29641 16 +0.021285 0.24279 0 2 0.105575 0 26272 16 +1.02577 1.43371 0 1 0.537133 0 169106 16 +1.02577 0.24279 1 2 0.537133 -0.8098 27286 16 +0.015706 0.24279 0 5 0.144355 -0.760692 29342 16 +1.02577 0.24279 2 1 0.120239 0 27276 16 +0.026834 0.186669 0 2 0.537133 0 26022 16 +0.021285 1.43371 0 2 0.144355 -0.873493 28625 16 +1.02577 0.24279 1 1 0.144355 0 30206 16 +1.02577 0.24279 1 1 0.537133 0 50779 16 +1.02577 0.091489 2 2 0.537133 0 25155 16 +1.02577 1.43371 0 2 0.120239 -0.8098 29340 16 +1.02577 0.152455 0 2 0.537133 0 26048 16 +0.026834 1.43371 0 2 0.144355 -0.837831 56943 16 +0.026834 0.24279 2 1 0.537133 0 26351 16 +0.021285 1.43371 0 5 0.09463 0 25614 16 +0.026834 0.152455 2 3 0.144355 0 26195 16 +0.021285 0.24279 0 4 0.537133 -0.8098 28864 15 +1.02577 0.24279 3 2 0.144355 -0.760692 29119 15 +0.017996 0.24279 0 4 0.120239 0 28860 15 +1.02577 0.152455 1 4 0.144355 -0.760692 31636 15 +0.021285 1.43371 0 5 0.120239 -0.760692 29963 15 +0.021285 1.43371 0 2 0.537133 -0.873493 34082 15 +1.02577 0.24279 2 2 0.537133 -0.760692 35545 15 +1.02577 0.24279 0 3 0.09463 0 27011 15 +1.02577 1.43371 0 2 0.144355 -0.837831 32431 15 +0.021285 1.43371 0 5 0.144355 -0.853228 25601 15 +0.017996 1.43371 0 2 0.537133 -0.8098 54160 15 +1.02577 0.186669 2 3 0.537133 -0.760692 25528 15 +0.026834 1.43371 0 2 0.537133 -0.864334 26470 15 +0.026834 0.186669 2 2 0.537133 0 25842 15 +1.02577 1.43371 1 1 0.537133 -0.897588 32305 15 +0.026834 1.43371 0 2 0.537133 -0.837831 25459 15 +0.026834 1.43371 1 1 0.537133 -0.886424 79891 14 +0.026834 1.43371 1 1 0.537133 -0.88069 39957 14 +0.021285 0.24279 0 2 0.144355 0 25614 14 +0.026834 1.43371 1 1 0.537133 -0.873493 50533 14 +1.02577 1.43371 1 1 0.537133 -0.864334 277030 14 +1.02577 0.24279 1 3 0.537133 -0.8098 28783 14 +1.02577 0.24279 3 1 0.537133 0 39992 14 +1.02577 1.43371 1 1 0.537133 -0.853228 160683 14 +1.02577 1.43371 0 4 0.144355 -0.853228 25823 14 +0.026834 1.43371 0 2 0.537133 -0.8098 26796 14 +0.026834 1.43371 0 4 0.105575 0 26444 14 +1.02577 0.186669 1 2 0.144355 0 34398 14 +1.02577 1.43371 1 1 0.537133 -0.837831 197264 14 +1.02577 1.43371 0 2 0.537133 -0.837831 73466 14 +1.02577 0.24279 1 4 0.144355 -0.760692 32128 14 +0.021285 1.43371 0 2 0.537133 -0.760692 31521 14 +0.015706 0.24279 2 3 0.537133 0 25069 14 +1.02577 1.43371 0 4 0.144355 -0.8098 35834 13 +1.02577 1.43371 1 5 0.09463 -0.8098 26185 13 +1.02577 1.43371 1 1 0.537133 -0.8098 259549 13 +1.02577 0.108189 1 4 0.537133 0 25748 13 +0.026834 0.24279 0 2 0.537133 0 28067 13 +1.02577 1.43371 1 4 0.079608 0 27396 13 +1.02577 0.186669 8 2 0.537133 0 31414 13 +0.026834 0.186669 1 4 0.537133 0 28704 13 +0.014132 1.43371 1 1 0.537133 -0.760692 38579 13 +0.021285 1.43371 1 1 0.537133 -0.760692 112185 13 +1.02577 1.43371 1 1 0.537133 -0.760692 255012 13 +0.021285 1.43371 0 2 0.537133 0 30902 12 +1.02577 1.43371 0 2 0.537133 -0.760692 60539 12 +1.02577 0.24279 0 4 0.537133 -0.760692 25505 12 +0.014132 1.43371 1 1 0.537133 0 66318 12 +0.015706 1.43371 1 1 0.537133 0 33725 12 +1.02577 0.24279 1 3 0.120239 0 35219 12 +1.02577 1.43371 1 1 0.09463 0 27897 12 +0.017996 1.43371 1 1 0.537133 0 54249 12 +0.021285 1.43371 1 1 0.537133 0 89650 12 +0.026834 1.43371 1 1 0.537133 0 148626 12 +0.026834 1.43371 2 1 0.537133 -0.853228 26017 12 +1.02577 1.43371 1 1 0.537133 0 220204 12 +1.02577 1.43371 2 1 0.537133 -0.873493 27920 12 +0.017996 0.24279 2 5 0.537133 0 25977 12 +1.02577 1.43371 2 1 0.537133 -0.837831 47826 11 +1.02577 1.43371 1 6 0.105575 -0.760692 29271 11 +1.02577 0.24279 1 2 0.537133 0 46869 11 +1.02577 1.43371 2 1 0.537133 -0.8098 40820 11 +1.02577 0.24279 8 5 0.537133 -0.8098 25549 11 +1.02577 1.43371 2 5 0.120239 -0.760692 35158 11 +1.02577 1.43371 2 4 0.105575 0 32060 10 +1.02577 1.43371 2 1 0.537133 -0.760692 75169 10 +1.02577 1.43371 0 2 0.537133 0 32475 10 +1.02577 0.24279 1 3 0.537133 0 37256 10 +1.02577 1.43371 2 1 0.144355 0 64137 10 +1.02577 1.43371 2 1 0.537133 0 143158 10 +0.026834 1.43371 0 3 0.537133 -0.88069 27403 10 +0.021285 1.43371 0 6 0.144355 0 30084 10 +1.02577 1.43371 3 5 0.144355 -0.853228 29785 9 +1.02577 0.076766 3 3 0.537133 0 1010 12 +0.026834 1.43371 1 5 0.079608 0 1112 12 +1.02577 0.24279 4 1 0.537133 0 1037 12 +0.026834 0.152455 4 4 0.537133 0 1235 11 +1.02577 0.24279 4 3 0.537133 -0.760692 1069 11 +1.02577 0.152455 3 3 0.144355 0 1106 11 +0.026834 0.24279 2 2 0.537133 0 2793 11 +0.026834 0.108189 2 5 0.537133 0 1070 11 +1.02577 0.186669 0 4 0.120239 0 1018 10 +0.021285 0.152455 8 7 0.105575 -0.8098 1091 10 +0.026834 1.43371 0 5 0.144355 -0.760692 3541 10 +1.02577 0.24279 2 4 0.537133 -0.760692 2056 10 +0.026834 1.43371 3 1 0.537133 -0.864334 1089 10 +0.026834 0.24279 1 4 0.144355 0 1803 10 +1.02577 0.24279 1 5 0.079608 0 1033 10 +1.02577 0.24279 2 2 0.537133 0 4686 10 +1.02577 0.186669 2 3 0.537133 0 2039 10 +0.026834 1.43371 8 5 0.105575 0 1254 10 +1.02577 1.43371 8 1 0.120239 0 2331 10 +1.02577 0.127708 2 4 0.537133 0 1103 10 +1.02577 1.43371 8 1 0.144355 -0.760692 1019 10 +0.021285 1.43371 0 3 0.537133 -0.873493 6728 9 +1.02577 1.43371 3 1 0.537133 -0.890871 1013 9 +0.021285 1.43371 0 3 0.537133 -0.853228 17967 9 +1.02577 1.43371 8 5 0.144355 -0.837831 9489 9 +0.014132 0.24279 0 6 0.537133 -0.760692 1013 9 +0.021285 1.43371 3 1 0.537133 -0.8098 1170 9 +0.021285 1.43371 0 3 0.537133 -0.837831 12579 9 +1.02577 1.43371 3 1 0.144355 0 6284 9 +0.026834 0.186669 2 5 0.144355 0 1079 9 +1.02577 0.186669 1 4 0.144355 0 1909 9 +1.02577 1.43371 3 1 0.537133 -0.853228 4595 9 +0.026834 1.43371 0 3 0.537133 -0.853228 11683 9 +0.026834 1.43371 0 3 0.537133 -0.837831 6025 9 +0.017996 1.43371 0 3 0.537133 -0.8098 10529 9 +1.02577 1.43371 0 5 0.144355 -0.760692 3589 9 +1.02577 1.43371 3 1 0.537133 -0.837831 2146 9 +0.015706 1.43371 0 4 0.537133 -0.894537 1444 9 +0.014132 1.43371 0 4 0.537133 -0.886424 1500 9 +0.015706 0.24279 1 7 0.144355 0 1197 9 +0.017996 1.43371 0 4 0.537133 -0.88069 4152 9 +0.026834 0.24279 8 3 0.537133 0 1675 9 +0.021285 1.43371 0 3 0.537133 -0.8098 4935 9 +0.026834 1.43371 2 5 0.144355 -0.8098 9758 9 +1.02577 1.43371 1 5 0.144355 -0.8098 4290 9 +1.02577 1.43371 0 3 0.537133 -0.837831 52103 9 +1.02577 0.24279 4 2 0.537133 0 1068 9 +0.026834 1.43371 2 5 0.144355 -0.760692 16266 9 +1.02577 0.152455 4 4 0.537133 0 1069 9 +0.011011 1.43371 0 5 0.537133 -0.864334 1389 9 +0.021285 1.43371 8 5 0.120239 0 9913 9 +0.011524 1.43371 0 5 0.537133 -0.8098 4518 9 +0.015706 1.43371 0 5 0.537133 -0.886424 1035 9 +1.02577 1.43371 3 1 0.537133 -0.8098 3550 9 +0.026834 1.43371 1 5 0.120239 0 4486 9 +1.02577 1.43371 8 4 0.144355 -0.760692 8311 9 +0.015706 1.43371 0 5 0.537133 -0.873493 2324 9 +0.014132 1.43371 0 4 0.537133 -0.837831 3598 9 +0.021285 0.24279 1 4 0.537133 0 1012 9 +0.026834 0.24279 0 4 0.537133 0 1018 9 +0.017996 1.43371 0 4 0.537133 -0.864334 2365 9 +0.021285 1.43371 0 4 0.537133 -0.88069 2993 8 +0.012997 1.43371 0 4 0.537133 -0.8098 1100 8 +0.021285 1.43371 0 4 0.537133 -0.873493 1084 8 +0.017996 1.43371 0 4 0.537133 -0.853228 1808 8 +0.014132 1.43371 3 1 0.537133 0 1276 8 +0.026834 1.43371 1 3 0.537133 -0.897588 2603 8 +1.02577 1.43371 0 4 0.120239 0 1285 8 +0.026834 1.43371 0 3 0.537133 -0.8098 7220 8 +0.012997 1.43371 0 5 0.537133 -0.8098 1329 8 +1.02577 1.43371 3 1 0.537133 0 49550 8 +1.02577 0.186669 3 5 0.537133 -0.760692 1003 8 +1.02577 1.43371 1 2 0.537133 -0.897588 2126 8 +1.02577 1.43371 1 3 0.537133 -0.853228 96831 8 +0.026834 1.43371 2 3 0.537133 -0.890871 1080 8 +0.026834 1.43371 0 4 0.537133 -0.894537 1226 8 +0.021285 1.43371 0 4 0.537133 -0.837831 7300 8 +0.026834 1.43371 0 4 0.537133 -0.837831 11563 8 +1.02577 1.43371 1 4 0.120239 0 4219 8 +0.017996 1.43371 1 4 0.537133 -0.853228 1070 8 +0.015706 1.43371 0 3 0.537133 -0.760692 6294 8 +1.02577 0.24279 1 5 0.105575 0 1272 8 +0.015706 1.43371 0 4 0.537133 -0.8098 2012 8 +0.014132 1.43371 0 5 0.537133 -0.8098 1032 8 +1.02577 0.24279 3 4 0.144355 0 2222 8 +1.02577 1.43371 1 3 0.537133 -0.837831 32114 8 +0.021285 1.43371 1 4 0.537133 -0.837831 1223 9 +0.026834 1.43371 1 3 0.537133 -0.8098 22041 8 +0.017996 1.43371 8 5 0.144355 0 13042 8 +1.02577 1.43371 2 3 0.120239 0 1458 8 +0.026834 1.43371 1 4 0.537133 -0.853228 1253 8 +1.02577 0.186669 3 4 0.537133 0 1213 8 +0.021285 1.43371 0 4 0.537133 -0.8098 4342 8 +0.015706 1.43371 0 5 0.537133 -0.8098 1397 8 +1.02577 0.24279 3 3 0.537133 0 1197 8 +0.017996 1.43371 0 3 0.537133 -0.760692 3258 8 +1.02577 1.43371 1 2 0.537133 -0.8098 14817 8 +0.021285 1.43371 8 5 0.144355 0 7124 8 +0.017996 1.43371 0 5 0.537133 -0.853228 1896 8 +0.012178 1.43371 0 4 0.537133 -0.760692 1361 8 +0.017996 1.43371 0 5 0.537133 -0.8098 1250 8 +1.02577 1.43371 0 3 0.537133 -0.8098 11598 8 +0.017996 1.43371 1 3 0.537133 -0.760692 10071 8 +0.021285 1.43371 1 2 0.537133 -0.760692 5713 8 +0.026834 0.127708 1 7 0.537133 -0.760692 1043 8 +0.026834 1.43371 2 4 0.144355 0 13640 8 +1.02577 1.43371 3 5 0.120239 0 1591 8 +1.02577 1.43371 0 4 0.537133 -0.837831 24154 8 +0.026834 1.43371 1 2 0.537133 -0.760692 9858 8 +0.021285 1.43371 1 3 0.537133 -0.760692 6368 8 +1.02577 0.24279 0 5 0.537133 -0.760692 1073 8 +0.014132 1.43371 1 4 0.537133 -0.760692 1814 8 +1.02577 1.43371 2 3 0.537133 -0.837831 19608 8 +0.017996 1.43371 3 4 0.537133 -0.8098 1640 8 +0.026834 1.43371 2 3 0.537133 -0.8098 2609 8 +0.021285 1.43371 0 5 0.537133 -0.873493 1569 8 +1.02577 1.43371 1 3 0.537133 -0.8098 3435 8 +0.026834 0.24279 0 6 0.537133 -0.853228 1336 8 +1.02577 1.43371 1 2 0.537133 -0.760692 16476 8 +0.014132 1.43371 0 5 0.537133 -0.760692 1108 8 +0.021285 1.43371 3 3 0.537133 -0.760692 3938 7 +0.026834 1.43371 8 4 0.537133 -0.837831 1087 7 +1.02577 0.24279 1 4 0.537133 0 2953 7 +0.011524 1.43371 0 3 0.537133 0 1250 7 +1.02577 1.43371 2 3 0.537133 -0.8098 4385 7 +1.02577 1.43371 4 1 0.537133 0 10914 7 +0.026834 1.43371 0 4 0.537133 -0.8098 3659 7 +1.02577 1.43371 1 4 0.537133 -0.853228 3619 7 +0.021285 1.43371 1 2 0.537133 0 16923 7 +1.02577 1.43371 2 2 0.144355 0 12276 7 +0.021285 1.43371 0 5 0.537133 -0.837831 1893 7 +0.012178 1.43371 1 3 0.537133 0 1039 7 +1.02577 1.43371 0 6 0.144355 -0.8098 1321 7 +0.021285 1.43371 3 5 0.537133 -0.8098 2462 7 +1.02577 1.43371 3 4 0.144355 0 6674 7 +1.02577 1.43371 1 4 0.537133 -0.837831 1192 7 +0.021285 0.24279 8 6 0.537133 -0.760692 1112 7 +0.026834 0.24279 3 5 0.537133 0 2249 7 +1.02577 1.43371 1 7 0.105575 -0.760692 1040 7 +0.012997 1.43371 2 3 0.537133 0 1845 7 +0.015706 1.43371 0 3 0.537133 0 2975 7 +0.026834 1.43371 3 3 0.537133 -0.760692 14137 7 +0.026834 1.43371 1 2 0.537133 0 12181 7 +0.015706 1.43371 0 4 0.537133 -0.760692 1091 7 +1.02577 1.43371 3 5 0.144355 0 1635 7 +1.02577 1.43371 2 2 0.537133 -0.760692 5985 7 +0.015706 1.43371 4 3 0.537133 0 2885 7 +0.017996 1.43371 2 4 0.537133 -0.760692 2260 7 +1.02577 1.43371 1 2 0.537133 0 19396 7 +0.011524 1.43371 2 5 0.537133 0 1465 7 +1.02577 1.43371 0 4 0.537133 -0.8098 5227 7 +0.021285 1.43371 2 2 0.537133 0 5080 7 +1.02577 1.43371 1 4 0.537133 -0.8098 1920 7 +0.026834 1.43371 3 5 0.537133 -0.8098 7155 7 +1.02577 1.43371 4 3 0.537133 -0.760692 18961 7 +1.02577 1.43371 5 1 0.537133 0 1785 7 +0.021285 0.186669 8 7 0.537133 0 1034 7 +1.02577 0.24279 2 7 0.144355 -0.8098 1005 7 +0.026834 1.43371 2 2 0.537133 0 6456 7 +0.017996 1.43371 3 3 0.537133 0 4914 7 +0.021285 1.43371 4 4 0.537133 -0.760692 3283 7 +0.011524 1.43371 2 7 0.537133 -0.760692 1181 6 +0.012997 1.43371 2 5 0.537133 0 1473 6 +0.021285 1.43371 2 3 0.537133 0 7514 6 +1.02577 1.43371 2 2 0.537133 0 12631 6 +1.02577 0.152455 0 6 0.537133 0 1230 6 +0.026834 1.43371 3 2 0.537133 0 2405 6 +0.026834 1.43371 3 4 0.537133 -0.760692 4841 6 +0.026834 0.24279 0 7 0.537133 -0.760692 1160 6 +1.02577 1.43371 0 5 0.537133 -0.837831 8750 6 +0.017996 1.43371 0 5 0.537133 -0.760692 1178 6 +1.02577 1.43371 3 2 0.537133 0 4021 6 +1.02577 1.43371 8 5 0.537133 -0.837831 2366 6 +1.02577 1.43371 4 2 0.537133 0 1398 6 +1.02577 1.43371 0 5 0.537133 -0.8098 1927 6 +0.014132 1.43371 0 5 0.537133 0 1006 6 +0.026834 1.43371 4 3 0.537133 0 12275 6 +1.02577 0.24279 3 5 0.537133 0 2124 6 +0.012997 1.43371 0 7 0.537133 -0.760692 1040 6 +0.026834 1.43371 2 7 0.144355 0 1037 6 +0.021285 1.43371 4 5 0.537133 -0.760692 1375 6 +0.015706 1.43371 4 5 0.537133 0 2167 6 +1.02577 1.43371 4 4 0.537133 -0.760692 6694 6 +0.017996 1.43371 0 4 0.537133 0 1662 6 +0.015706 1.43371 8 7 0.537133 -0.837831 1273 6 +1.02577 0.24279 8 6 0.537133 -0.8098 1229 5 +0.021285 0.24279 1 9 0.144355 -0.8098 1038 5 +1.02577 1.43371 6 3 0.537133 0 19553 5 +0.017996 1.43371 0 7 0.537133 -0.837831 1010 5 +0.017996 1.43371 2 5 0.537133 0 1420 5 +0.021285 1.43371 0 4 0.537133 0 2478 5 +0.026834 1.43371 0 5 0.537133 -0.760692 1383 5 +1.02577 1.43371 2 7 0.120239 0 1160 5 +1.02577 1.43371 2 5 0.537133 -0.760692 3104 5 +0.026834 1.43371 1 4 0.537133 0 5806 5 +0.021285 1.43371 6 5 0.537133 0 1512 5 +0.026834 1.43371 1 5 0.537133 0 1661 5 +1.02577 0.24279 8 7 0.537133 -0.760692 1125 5 +0.015706 1.43371 0 6 0.537133 0 1079 5 +1.02577 1.43371 7 4 0.537133 0 8102 5 +0.021285 1.43371 1 7 0.537133 -0.837831 1668 5 +0.021285 0.24279 2 8 0.537133 0 1013 5 +0.021285 1.43371 2 6 0.537133 -0.760692 1420 5 +0.026834 1.43371 1 7 0.537133 -0.8098 3090 4 +1.02577 1.43371 7 5 0.537133 0 2701 4 +1.02577 1.43371 1 8 0.144355 -0.760692 1048 4 +1.02577 1.43371 0 7 0.537133 -0.837831 3445 4 +0.021285 1.43371 8 7 0.537133 0 1231 4 +1.02577 0.24279 2 7 0.537133 0 1321 4 +1.02577 1.43371 8 7 0.537133 -0.8098 1703 4 +1.02577 1.43371 8 6 0.537133 -0.760692 1220 4 +0.017996 1.43371 1 9 0.537133 0 1080 4 +1.02577 1.43371 2 7 0.537133 0 2087 4 +1.02577 0.24279 8 9 0.537133 -0.760692 1032 4 +1.02577 1.43371 8 8 0.537133 -0.760692 1025 3 +1.02577 1.43371 3 9 0.537133 0 1370 3 +1.02577 1.43371 3 10 0.537133 0 1458 3 diff --git a/Analysis/config/phredTable.GX9v1.Recal.h5 b/Analysis/config/phredTable.GX9v1.Recal.h5 new file mode 100644 index 00000000..87fe4760 Binary files /dev/null and b/Analysis/config/phredTable.GX9v1.Recal.h5 differ diff --git a/Analysis/config/phredTable.GX9v1.h5 b/Analysis/config/phredTable.GX9v1.h5 new file mode 100644 index 00000000..76f4ecd6 Binary files /dev/null and b/Analysis/config/phredTable.GX9v1.h5 differ diff --git a/Analysis/crop/lbTest.cpp b/Analysis/crop/lbTest.cpp new file mode 100644 index 00000000..c6464862 --- /dev/null +++ b/Analysis/crop/lbTest.cpp @@ -0,0 +1,241 @@ +/* Copyright (C) 2010 Ion Torrent Systems, Inc. All Rights Reserved */ +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __linux__ +#include +#endif +#ifdef __APPLE__ +#include +#include +#endif +#include +#include +#include "ByteSwapUtils.h" +#include "datahdr.h" +#include "LinuxCompat.h" +// #include "Raw2Wells.h" +#include "Image.h" +#include "crop/Acq.h" +#include "IonVersion.h" +#include "Utils.h" + + + + +void usage (char *name ) +{ + fprintf ( stdout, "%s - Utility to investigate using less bits to transmit data.\n",name ); + fprintf ( stdout, "options:\n" ); + fprintf ( stdout, "\n" ); + fprintf ( stdout, "usage:\n" ); + fprintf ( stdout, " %s \n",name ); + fprintf ( stdout, "\n" ); + exit ( 1 ); +} + +void MaskBits(RawImage *img, int bits) +{ + short mask=(1<image; + int limit=img->frameStride*img->frames; + for(int idx=0;idxframes;frm++){ + uint64_t avg=0; + short *imgPtr=&img->image[frm*img->frameStride]; + for(int idx=0;idxframeStride;idx++){ + avg += imgPtr[idx]; + } + avgTrace[frm]=avg/(uint64_t)img->frameStride; + } + for(int frm=1;frmframes;frm++){ + avgTrace[frm]-=avgTrace[0]; + } + avgTrace[0]=0; + + printf("Avg Trc %s:\n ",fname); + for(int frm=0;frmframes;frm++){ + //avgTrace[frm] = (avgTrace[frm] * 15) / 10; + printf(" %03d",avgTrace[frm]); + } + printf("\n"); +} + +void modAvgTrace(RawImage *img, unsigned short *avg, int sub) +{ + for(int frm=0;frmframes;frm++){ + short *imgPtr=&img->image[frm*img->frameStride]; + short subVal=avg[frm]; + for(int idx=0;idxframeStride;idx++){ + if(sub) + imgPtr[idx] -= subVal; + else + imgPtr[idx] += subVal; + } + } +} + +void PrintHistogram(Image *mimg, char *fname,const char *txt) +{ + RawImage *img = mimg->raw; +#define NUMBINS 16 + uint64_t bins[NUMBINS]={0}; + + for(int frm=1;frmframes;frm++){ + short *imgPtr=&img->image[frm*img->frameStride]; + short *pimgPtr=&img->image[(frm-1)*img->frameStride]; + for(int idx=0;idxframeStride;idx++){ + short val = imgPtr[idx]-pimgPtr[idx]; + if(val <0) + val=-val; + for(int bit=15;bit >=0;bit--){ + if((1<cols,img->rows); + + +} + +void ZeroFirstFrame(RawImage *img) +{ + for(int idx=0;idxframeStride;idx++){ + short *imgPtr=&img->image[idx]; + short subVal=imgPtr[0]; + for(int frm=1;frmframes;frm++){ + imgPtr[frm*img->frameStride] -= subVal-32; + } + imgPtr[0]=32; + } +} + + + +int main ( int argc, char *argv[] ) +{ + //int cropx = 624, cropy = 125, cropw = 100, croph = 100; + int cropx = 0, cropy = 0, cropw = 0, croph = 0; + int i,x,y,idx; + char srcFile[1024],dstFile[1024]; + char *srcDir; + unsigned short avgTrace[105]; + unsigned short avgTrace1[105]; + Image loader_extraG, loader_src, loader_dst; + bool allocate = true; + RawImage *src_extraG,*src_raw,*dst_raw; + struct timeval tv; + double startT; + double stopT; + + if ( argc < 2 ) { + usage ( argv[0]); + } + + srcDir = argv[1]; + + sprintf(srcFile,"%s/extraG_0000.dat",srcDir); + sprintf(dstFile,"%s/op",srcDir); + mkdir(dstFile,0644); + + gettimeofday ( &tv, NULL ); + startT = ( double ) tv.tv_sec + ( ( double ) tv.tv_usec/1000000 ); + + if(!loader_extraG.LoadRaw ( srcFile, 0, allocate, false, false )) + { + printf("failed to load file %s\n",srcFile); + return -1; + } + gettimeofday ( &tv, NULL ); + stopT = ( double ) tv.tv_sec + ( ( double ) tv.tv_usec/1000000 ); + printf ( "Converted: %s in %0.2lf sec\n", srcFile,stopT - startT ); + fflush ( stdout ); + src_extraG = loader_extraG.raw; + + // determine the average trace + getAvgTrace(src_extraG,avgTrace,srcFile); + + + for(int fnum=0;fnum<4;fnum++){ + sprintf(srcFile,"%s/acq_000%d.dat",srcDir,fnum); + + gettimeofday ( &tv, NULL ); + startT = ( double ) tv.tv_sec + ( ( double ) tv.tv_usec/1000000 ); + + if(!loader_src.LoadRaw ( srcFile, 0, allocate, false, false )) + { + printf("failed to load file %s\n",srcFile); + return -1; + } + gettimeofday ( &tv, NULL ); + stopT = ( double ) tv.tv_sec + ( ( double ) tv.tv_usec/1000000 ); + printf ( "Converted: %s in %0.2lf sec\n", srcFile,stopT - startT ); + fflush ( stdout ); + src_raw = loader_src.raw; + + sprintf(dstFile,"%s/op/acq_000%d.dat_orig",srcDir,fnum); + PrintHistogram(&loader_src,dstFile,""); + getAvgTrace(src_raw,avgTrace1,srcFile); + printf("Sub Avg Trc :\n "); + for(int frm=0;frmframes;frm++){ + //avgTrace[frm] = (avgTrace[frm] * 15) / 10; + printf(" %03d",(avgTrace[frm] * 15) / 10); + } + printf("\n"); + + + // subtract extraG trace + modAvgTrace(src_raw, avgTrace, 1); + + sprintf(dstFile,"%s/op/acq_000%d.dat_subt",srcDir,fnum); + PrintHistogram(&loader_src,dstFile,""); + + //ZeroFirstFrame(src_raw); + + // mask off upper bits.. + MaskBits(src_raw,8); + + // determine the histogram of differences + sprintf(dstFile,"%s/op/acq_000%d.dat_mask",srcDir,fnum); + PrintHistogram(&loader_src,dstFile,""); + + // try to re-construct the traces.. + // add extraG trace + + // save re-constructed traces + } + return 0; +} + + diff --git a/Analysis/ionstats/ionstats_alignment.h b/Analysis/ionstats/ionstats_alignment.h index 68be516d..cc737b72 100644 --- a/Analysis/ionstats/ionstats_alignment.h +++ b/Analysis/ionstats/ionstats_alignment.h @@ -39,7 +39,7 @@ #define DEFAULT_DEBUG_ERROR_FLOW -1 #define DEFAULT_DEBUG_ALIGNED_FLOW -1 #define DEFAULT_DEBUG_POSITIVE_REF_FLOW -1 -#define DEFAULT_N_THREADS 5 +#define DEFAULT_N_THREADS 0 #define DEFAULT_THREADS_SHARE_MEMORY "false" using namespace std; diff --git a/Analysis/validate_reference.pl b/Analysis/validate_reference.pl index 52b056fe..7638311b 100755 --- a/Analysis/validate_reference.pl +++ b/Analysis/validate_reference.pl @@ -103,7 +103,7 @@ sub error my $origname = $name; if ($name=~s/^[\s\*\=]+//g) {error("Sequence name '$origname' starts with a white space, or an asterisk or equal sign at line $line !\n",4);} # if ($name=~s/\:/_/g) {error("Sequence name '$origname' contains a colon at line $line, which should be replaced by an underscore to avoid breaking samtools mpileup!\n",14)} - if ($name=~/[^\w\.\-\+\s\|\,\:]/) {error("Sequence name '$name' contains a non-alphanumeric character at line $line !\n",13)} + if ($name=~s/[^\w\.\-\+\s\|\,\:]/_/g) {error("Sequence name '$origname' contains a non-alphanumeric character at line $line !\n",13)} $emptyline = ''; } else diff --git a/Analysis/version b/Analysis/version index ba71ac5a..1241b4e9 100644 --- a/Analysis/version +++ b/Analysis/version @@ -1,4 +1,4 @@ # Version for target of current development cycle MAJOR=5 -MINOR=16 +MINOR=18 RELEASE=6 diff --git a/LICENSE.txt b/LICENSE.txt index 9edf73b6..8fb701c1 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,12 +1,13 @@ -Torrent Suite Software Version 5.8 +This end-user license agreement contains 4 separate and distinct licenses: (1) Torrent Suite(TM) Software Version 5.18 Open Source License (pgs. 1-32), (2) Service & Support Telemetry Module Software Version 2.0.1 End User License Agreement (pgs. 32 - 47), (3) Ion Chef(TM) Instrument Software Version 5.18 License Agreement (pgs. 47 - 182), and (4) Ion GeneStudio(TM) S5 V5.18 License Agreement (pgs. 182 - 236). + +(1) Torrent Suite(TM) Software Version 5.18 ===================================================================== -Torrent Suite(tm) Software v5.8: This software provides for the analysis and storage of data received from the Ion Personal Genome Machine(tm) Sequencer, -the Ion Proton(tm) Sequencer, the Ion GeneStudio S5 Sequencer or the Ion GeneStudio S5 XL Sequencer, -the Ion GeneStudio S5 Prime or the Ion GeneStudio S5 Pro. +Torrent Suite(TM) Software v5.18: This software provides for the analysis and storage of data received from the Ion Personal Genome Machine(TM) (PGM(TM)) Sequencer, the Ion Proton(TM) Sequencer, the Ion S5TM Sequencer, the Ion S5TM XL Sequencer, or the Ion GeneStudio(TM) S5 Prime. +The Ion Chef(TM) System provides automated, high-throughput template preparation and chip loading for use with an Ion Personal Genome Machine(TM) PGM(TM) Sequencer, Ion Proton(TM) Sequencer, Ion S5(TM) Sequencer, Ion S5(TM) XL Sequencer, or the Ion GeneStudio(TM) S5 Prime. -November 30, 2017 +May 26th, 2022 -Copyright (C) 2017 Life Technologies Corporation +Copyright (C) 2011 - 2022 Life Technologies Corporation All Rights Reserved. This program is free software; you can redistribute it and/or modify it @@ -23,12 +24,13 @@ with this program (see Section 2 below); if not, write to the Free Software Foun 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can also find the GPL version 2 on the GNU web site: https://www.gnu.org/licenses/gpl-2.0.html - -1. Third Party Software Notices and Licenses ===================================================================== - + 1. Third Party Software Notices and Licenses +===================================================================== + This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found below. In order to use this software, the end-user must abide by the terms and conditions of these third party licenses. + Armadillo ------------------------------------------------------------- @@ -37,622 +39,238 @@ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -Mozilla Public License Version 2.0 -------------------------------------------------------------- - -1. Definitions -------------------------------------------------------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions -------------------------------------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------------------------------------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination -------------------------------------------------------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - - - -6. Disclaimer of Warranty -------------------------------------------------------------- - -Covered Software is provided under this License on an "as is" basis, without -warranty of any kind, either expressed, implied, or statutory, including, -without limitation, warranties that the Covered Software is free of defects, -merchantable, fit for a particular purpose or non-infringing. The entire risk -as to the quality and performance of the Covered Software is with You. Should -any Covered Software prove defective in any respect, You (not any Contributor) -assume the cost of any necessary servicing, repair, or correction. This -disclaimer of warranty constitutes an essential part of this License. No use of -any Covered Software is authorized under this License except under this -disclaimer. - - -7. Limitation of Liability -------------------------------------------------------------- - -Under no circumstances and under no legal theory, whether tort (including -negligence), contract, or otherwise, shall any Contributor, or anyone who -distributes Covered Software as permitted above, be liable to You for any -direct, indirect, special, incidental, or consequential damages of any -character including, without limitation, damages for lost profits, loss of -goodwill, work stoppage, computer failure or malfunction, or any and all other -commercial damages or losses, even if such party shall have been informed of -the possibility of such damages. This limitation of liability shall not apply -to liability for death or personal injury resulting from such party's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - - -8. Litigation -------------------------------------------------------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous -------------------------------------------------------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License -------------------------------------------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------------------------- - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice -------------------------------------------------------------- - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (C) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any`` + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + +HTS Lib +Samtools + + + + The MIT/Expat License +Copyright (C) 2008-2014 Genome Research Ltd. -HTS Lib and Samtools -------------------------------------------------------------- + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The MIT/Expat License -Copyright (C) 2008-2014 Genome Research Ltd. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. -VCF Lib -------------------------------------------------------------- +## VCF Lib The MIT License (see text above) -Copyright (c) 2012 Erik Garrison -Blas and Lapack -------------------------------------------------------------- -Copyright (c) 1992-2013 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright (C) 2012 Erik Garrison -Copyright (c) 2000-2013 The University of California Berkeley. All rights reserved. +Blas -Copyright (c) 2006-2013 The University of Colorado Denver. All rights reserved. +Lapack + +Copyright (C) 1992-2013 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (C) 2000-2013 The University of California Berkeley. All + rights reserved. +Copyright (C) 2006-2013 The University of Colorado Denver. All rights + reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer listed - in this license in the documentation and/or other materials - provided with the distribution. - - Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +* Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. The copyright holders provide no reassurances that the source code provided does not infringe any patent, copyright, or any other @@ -673,794 +291,608 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Django -------------------------------------------------------------- -Copyright (c) Django Software Foundation and individual contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of Django nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Cuda Toolkit -------------------------------------------------------------- -END USER LICENSE AGREEMENT (EULA) - -Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. - -1.1. Definitions - - 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. - - 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. - - 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. - -1.2. Grant of License - - 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: - - 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; (c) Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. - - 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - - 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - - 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - - 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - - 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -No Modifications -If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - -1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - -1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - -1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - -1.6. Disclaimer of Warranties and Limitations on Liability - - 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. - - 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - -1.7. Miscellaneous - - 1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - - 1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other -party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - - 1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or (c) Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. - 1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. - 1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +## Django +Copyright (C) Django Software Foundation and individual contributors. - 1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. +All rights reserved. - 1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. -1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. -Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - -1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: - - -1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - -2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - -3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html. In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: - - LLVM Release License - - University of Illinois/NCSA Open Source License Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: - - PCRE LICENCE - - PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. - - - THE BASIC LIBRARY FUNCTIONS - - Written by: Philip Hazel - Email local part: ph10 - Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. - Copyright (c) 1997-2012 University of Cambridge All rights reserved. - - PCRE JUST-IN-TIME COMPILATION SUPPORT - - Written by: Zoltan Herczeg - Email local part: hzmester - Emain domain: freemail.hu - Copyright(c) 2010-2012 Zoltan Herczeg All rights reserved. - - STACK-LESS JUST-IN-TIME COMPILER - - Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(c) 2009-2012 Zoltan Herczeg All rights reserved. - - THE C++ WRAPPER FUNCTIONS - - Contributed by: Google Inc. Copyright (c) 2007-2012, Google Inc. All rights reserved. - - THE "BSD" LICENCE - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- (C) Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright (c) 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright (C) 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Ansible -------------------------------------------------------------- - -Kendo UI -------------------------------------------------------------- - -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright (c) 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, -but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds -of works. - -The licenses for most software and other practical works are designed to take away your -freedom to share and change the works. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change all versions of a program--to -make sure it remains free software for all its users. We, the Free Software Foundation, use -the GNU General Public License for most of our software; it applies also to any other -work released this way by its authors. You can apply it to your programs, too. -When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute copies -of free software (and charge for them if you wish), that you receive source code or can -get it if you want it, that you can change the software or use pieces of it in new free -programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking -you to surrender the rights. Therefore, you have certain responsibilities if you distribute -copies of the software, or if you modify it: responsibilities to respect the freedom of -others. -For example, if you distribute copies of such a program, whether gratis or for a fee, you -must pass on to the recipients the same freedoms that you received. You must make sure -that they, too, receive or can get the source code. And you must show them these terms -so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - - (1) assert copyright on the software, and - (2) offer you this License giving you legal permission to copy, distribute and/or modify it. -For the developers' and authors' protection, the GPL clearly explains that there is no -warranty for this free software. For both users' and authors' sake, the GPL requires that -modified versions be marked as changed, so that their problems will not be attributed -erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the -software inside them, although the manufacturer can do so. This is fundamentally -incompatible with the aim of protecting users' freedom to change the software. The -systematic pattern of such abuse occurs in the area of products for individuals to use, -which is precisely where it is most unacceptable. Therefore, we have designed this version -of the GPL to prohibit the practice for those products. If such problems arise substantially -in other domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not -allow patents to restrict development and use of software on general-purpose computers, -but in those that do, we wish to avoid the special danger that patents applied to a free -program could make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. -"This License" refers to version 3 of the GNU General Public License. -"Copyright" also means copyright-like laws that apply to other kinds of works, such as -semiconductor masks. -"The Program" refers to any copyrightable work licensed under this License. Each -licensee is addressed as "you". "Licensees" and "recipients" may be individuals or -organizations. -To "modify" a work means to copy from or adapt all or part of the work in a fashion -requiring copyright permission, other than the making of an exact copy. The resulting -work is called a "modified version" of the earlier work or a work "based on" the earlier -work. -A "covered work" means either the unmodified Program or a work based on the Program. -To "propagate" a work means to do anything with it that, without permission, would -make you directly or secondarily liable for infringement under applicable copyright law, -except executing it on a computer or modifying a private copy. Propagation includes -copying, distribution (with or without modification), making available to the public, and -in some countries other activities as well. -To "convey" a work means any kind of propagation that enables other parties to make or -receive copies. Mere interaction with a user through a computer network, with no transfer -of a copy, is not conveying. -An interactive user interface displays "Appropriate Legal Notices" to the extent that it -includes a convenient and prominently visible feature that (1) displays an appropriate -copyright notice, and (2) tells the user that there is no warranty for the work (except to -the extent that warranties are provided), that licensees may convey the work under this -License, and how to view a copy of this License. If the interface presents a list of user -commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The "source code" for a work means the preferred form of the work for making -modifications to it. "Object code" means any non-source form of a work. -A "Standard Interface" means an interface that either is an official standard defined by a -recognized standards body, or, in the case of interfaces specified for a particular -programming language, one that is widely used among developers working in that -language. -The "System Libraries" of an executable work include anything, other than the work as a -whole, that (a) is included in the normal form of packaging a Major Component, but -which is not part of that Major Component, and (b) serves only to enable use of the work -with that Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A "Major Component", in -this context, means a major essential component (kernel, window system, and so on) of -the specific operating system (if any) on which the executable work runs, or a compiler -used to produce the work, or an object code interpreter used to run it. -The "Corresponding Source" for a work in object code form means all the source code -needed to generate, install, and (for an executable work) run the object code and to -modify the work, including scripts to control those activities. However, it does not -include the work's System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but which are not part -of the work. For example, Corresponding Source includes interface definition files -associated with source files for the work, and the source code for shared libraries and -dynamically linked subprograms that the work is specifically designed to require, such as -by intimate data communication or control flow between those subprograms and other -parts of the work. -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the -Program, and are irrevocable provided the stated conditions are met. This License -explicitly affirms your unlimited permission to run the unmodified Program. The output -from running a covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your rights of fair use or -other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey covered -works to others for the sole purpose of having them make modifications exclusively for -you, or provide you with facilities for running those works, provided that you comply -with the terms of this License in conveying all material for which you do not control -copyright. Those thus making or running the covered works for you must do so -exclusively on your behalf, under your direction and control, on terms that prohibit them -from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated -below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any -applicable law fulfilling obligations under article 11 of the WIPO copyright treaty -adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of -such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of -technological measures to the extent such circumvention is effected by exercising rights -under this License with respect to the covered work, and you disclaim any intention to -limit operation or modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any -medium, provided that you conspicuously and appropriately publish on each copy an -appropriate copyright notice; keep intact all notices stating that this License and any non- -permissive terms added in accord with section 7 apply to the code; keep intact all notices -of the absence of any warranty; and give all recipients a copy of this License along with -the Program. -You may charge any price or no price for each copy that you convey, and you may offer -support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from -the Program, in the form of source code under the terms of section 4, provided that you -also meet all of these conditions: - a) The work must carry prominent notices stating that you modified it, and giving -a relevant date. - b) The work must carry prominent notices stating that it is released under this -License and any conditions added under section 7. This requirement modifies the -requirement in section 4 to "keep intact all notices". - c) You must license the entire work, as a whole, under this License to anyone who -comes into possession of a copy. This License will therefore apply, along with any -applicable section 7 additional terms, to the whole of the work, and all its parts, -regardless of how they are packaged. This License gives no permission to license -the work in any other way, but it does not invalidate such permission if you have -separately received it. - d) If the work has interactive user interfaces, each must display Appropriate Legal -Notices; however, if the Program has interactive interfaces that do not display -Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are -not by their nature extensions of the covered work, and which are not combined with it -such as to form a larger program, in or on a volume of a storage or distribution medium, is -called an "aggregate" if the compilation and its resulting copyright are not used to limit -the access or legal rights of the compilation's users beyond what the individual works -permit. Inclusion of a covered work in an aggregate does not cause this License to apply -to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, -provided that you also convey the machine-readable Corresponding Source under the -terms of this License, in one of these ways: - a) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by the Corresponding Source fixed -on a durable physical medium customarily used for software interchange. - b) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by a written offer, valid for at least -three years and valid for as long as you offer spare parts or customer support for -that product model, to give anyone who possesses the object code either (1) a -copy of the Corresponding Source for all the software in the product that is -covered by this License, on a durable physical medium customarily used for -software interchange, for a price no more than your reasonable cost of physically -performing this conveying of source, or (2) access to copy the Corresponding -Source from a network server at no charge. - c) Convey individual copies of the object code with a copy of the written offer to -provide the Corresponding Source. This alternative is allowed only occasionally -and noncommercially, and only if you received the object code with such an offer, -in accord with subsection 6b. - d) Convey the object code by offering access from a designated place (gratis or -for a charge), and offer equivalent access to the Corresponding Source in the same -way through the same place at no further charge. You need not require recipients -to copy the Corresponding Source along with the object code. If the place to copy -the object code is a network server, the Corresponding Source may be on a -different server (operated by you or a third party) that supports equivalent -copying facilities, provided you maintain clear directions next to the object code -saying where to find the Corresponding Source. Regardless of what server hosts -the Corresponding Source, you remain obligated to ensure that it is available for as -long as needed to satisfy these requirements. - e) Convey the object code using peer-to-peer transmission, provided you inform -other peers where the object code and Corresponding Source of the work are -being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the object -code work. -A "User Product" is either (1) a "consumer product", which means any tangible personal -property which is normally used for personal, family, or household purposes, or (2) -anything designed or sold for incorporation into a dwelling. In determining whether a -product is a consumer product, doubtful cases shall be resolved in favor of coverage. For -a particular product received by a particular user, "normally used" refers to a typical or -common use of that class of product, regardless of the status of the particular user or of -the way in which the particular user actually uses, or expects or is expected to use, the -product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent the -only significant mode of use of the product. -"Installation Information" for a User Product means any methods, procedures, -authorization keys, or other information required to install and execute modified versions -of a covered work in that User Product from a modified version of its Corresponding -Source. The information must suffice to ensure that the continued functioning of the -modified object code is in no case prevented or interfered with solely because -modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, -a User Product, and the conveying occurs as part of a transaction in which the right of -possession and use of the User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the Corresponding Source -conveyed under this section must be accompanied by the Installation Information. But -this requirement does not apply if neither you nor any third party retains the ability to -install modified object code on the User Product (for example, the work has been -installed in ROM). -The requirement to provide Installation Information does not include a requirement to -continue to provide support service, warranty, or updates for a work that has been -modified or installed by the recipient, or for the User Product in which it has been -modified or installed. Access to a network may be denied when the modification itself -materially and adversely affects the operation of the network or violates the rules and -protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with -this section must be in a format that is publicly documented (and with an implementation -available to the public in source code form), and must require no special password or key -for unpacking, reading or copying. - -7. Additional Terms. -"Additional permissions" are terms that supplement the terms of this License by making -exceptions from one or more of its conditions. Additional permissions that are applicable -to the entire Program shall be treated as though they were included in this License, to the -extent that they are valid under applicable law. If additional permissions apply only to -part of the Program, that part may be used separately under those permissions, but the -entire Program remains governed by this License without regard to the additional -permissions. -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional permissions -may be written to require their own removal in certain cases when you modify the work.) -You may place additional permissions on material, added by you to a covered work, for -which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered -work, you may (if authorized by the copyright holders of that material) supplement the -terms of this License with terms: - a) Disclaiming warranty or limiting liability differently from the terms of sections -15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or author -attributions in that material or in the Appropriate Legal Notices displayed by -works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or requiring that -modified versions of such material be marked in reasonable ways as different -from the original version; or - d) Limiting the use for publicity purposes of names of licensors or authors of the -material; or - e) Declining to grant rights under trademark law for use of some trade names, -trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that material by anyone -who conveys the material (or modified versions of it) with contractual -assumptions of liability to the recipient, for any liability that these contractual -assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered "further restrictions" within the -meaning of section 10. If the Program as you received it, or any part of it, contains a -notice stating that it is governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains a further restriction -but permits relicensing or conveying under this License, you may add to a covered work -material governed by the terms of that license document, provided that the further -restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the -relevant source files, a statement of the additional terms that apply to those files, or a -notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately -written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under -this License. Any attempt otherwise to propagate or modify it is void, and will -automatically terminate your rights under this License (including any patent licenses -granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular -copyright holder is reinstated (a) provisionally, unless and until the copyright holder -explicitly and finally terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to 60 days after the -cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the -copyright holder notifies you of the violation by some reasonable means, this is the first -time you have received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after your receipt of the -notice. -Termination of your rights under this section does not terminate the licenses of parties -who have received copies or rights from you under this License. If your rights have been -terminated and not permanently reinstated, you do not qualify to receive new licenses for -the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the -Program. Ancillary propagation of a covered work occurring solely as a consequence of -using peer-to-peer transmission to receive a copy likewise does not require acceptance. -However, nothing other than this License grants you permission to propagate or modify -any covered work. These actions infringe copyright if you do not accept this License. -Therefore, by modifying or propagating a covered work, you indicate your acceptance of -this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from -the original licensors, to run, modify and propagate that work, subject to this License. -You are not responsible for enforcing compliance by third parties with this License. -An "entity transaction" is a transaction transferring control of an organization, or -substantially all assets of one, or subdividing an organization, or merging organizations. If -propagation of a covered work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever licenses to the work -the party's predecessor in interest had or could give under the previous paragraph, plus a -right to possession of the Corresponding Source of the work from the predecessor in -interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or -affirmed under this License. For example, you may not impose a license fee, royalty, or -other charge for exercise of rights granted under this License, and you may not initiate -litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent -claim is infringed by making, using, selling, offering for sale, or importing the Program or -any portion of it. - -11. Patents. -A "contributor" is a copyright holder who authorizes use under this License of the -Program or a work on which the Program is based. The work thus licensed is called the -contributor's "contributor version". -A contributor's "essential patent claims" are all patent claims owned or controlled by the -contributor, whether already acquired or hereafter acquired, that would be infringed by -some manner, permitted by this License, of making, using, or selling its contributor -version, but do not include claims that would be infringed only as a consequence of -further modification of the contributor version. For purposes of this definition, "control" -includes the right to grant patent sublicenses in a manner consistent with the requirements -of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under -the contributor's essential patent claims, to make, use, sell, offer for sale, import and -otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a "patent license" is any express agreement or -commitment, however denominated, not to enforce a patent (such as an express -permission to practice a patent or covenant not to sue for patent infringement). To "grant" -such a patent license to a party means to make such an agreement or commitment not to -enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of charge and -under the terms of this License, through a publicly available network server or other -readily accessible means, then you must either (1) cause the Corresponding Source to be -so available, or (2) arrange to deprive yourself of the benefit of the patent license for this -particular work, or (3) arrange, in a manner consistent with the requirements of this -License, to extend the patent license to downstream recipients. "Knowingly relying" -means you have actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work in a country, -would infringe one or more identifiable patents in that country that you have reason to -believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or -propagate by procuring conveyance of, a covered work, and grant a patent license to -some of the parties receiving the covered work authorizing them to use, propagate, -modify or convey a specific copy of the covered work, then the patent license you grant -is automatically extended to all recipients of the covered work and works based on it. -A patent license is "discriminatory" if it does not include within the scope of its coverage, -prohibits the exercise of, or is conditioned on the non-exercise of one or more of the -rights that are specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is in the business of -distributing software, under which you make payment to the third party based on the -extent of your activity of conveying the work, and under which the third party grants, to -any of the parties who would receive the covered work from you, a discriminatory patent -license (a) in connection with copies of the covered work conveyed by you (or copies -made from those copies), or (b) primarily for and in connection with specific products or -compilations that contain the covered work, unless you entered into that arrangement, or -that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or -other defenses to infringement that may otherwise be available to you under applicable -patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that -contradict the conditions of this License, they do not excuse you from the conditions of -this License. If you cannot convey a covered work so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as a consequence -you may not convey it at all. For example, if you agree to terms that obligate you to -collect a royalty for further conveying from those to whom you convey the Program, the -only way you could satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or -combine any covered work with a work licensed under version 3 of the GNU Affero -General Public License into a single combined work, and to convey the resulting work. -The terms of this License will continue to apply to the part which is the covered work, but -the special requirements of the GNU Affero General Public License, section 13, -concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in spirit to the -present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a -certain numbered version of the GNU General Public License "or any later version" -applies to it, you have the option of following the terms and conditions either of that -numbered version or of any later version published by the Free Software Foundation. If -the Program does not specify a version number of the GNU General Public License, you -may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU -General Public License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no -additional obligations are imposed on any author or copyright holder as a result of your -choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT -PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN -WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF -THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO -MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE -OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR -OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given -local legal effect according to their terms, reviewing courts shall apply local law that most -closely approximates an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a copy of the Program -in return for a fee. - -ion_timeout.sh -------------------------------------------------------------- - -GNU Lesser General Public License (LGPL) - -Version 2.1, February 1999 +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -Preamble +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. -This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. +3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. -When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. -For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. -We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. +## Cuda Toolkit -To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. +END USER LICENSE AGREEMENT (EULA) -Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. -Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. +1.1. Definitions -When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. -We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. -For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. -In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. -Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +1.2. Grant of License -The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- + 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; (C) Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. -0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. +No Modifications -2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: +If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - a) The modified work must itself be a software library. - b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. - c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. - d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. +1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) +1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (C)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. +1.6. Disclaimer of Warranties and Limitations on Liability + 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. + 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. +1.7. Miscellaneous -3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. +1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. +1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - This option is useful when you wish to copy part of the code of the Library into a program that is not a library. +1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or (C) Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. -4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. -If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. +1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. -5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. +1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. +1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. - When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. +1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. - If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. +Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. +1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: -6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. +1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: +2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. - c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html + In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. -It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. +4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: +### LLVM Release License +University of Illinois/NCSA Open Source License Copyright (C) 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. -7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: +5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: +### PCRE LICENCE +-- +PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. +### THE BASIC LIBRARY FUNCTIONS +-- +Written by: Philip Hazel Email local part: ph10 Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. Copyright (C) 1997-2012 University of Cambridge All rights reserved. +### PCRE JUST-IN-TIME COMPILATION SUPPORT +-- +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(C) 2010-2012 Zoltan Herczeg All rights reserved. STACK-LESS JUST-IN-TIME COMPILER +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(C) 2009-2012 Zoltan Herczeg All rights reserved. THE C++ WRAPPER FUNCTIONS +Contributed by: Google Inc. Copyright (C) 2007-2012, Google Inc. All rights reserved. THE "BSD" LICENCE +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. - b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. +7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. +8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. +9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. +10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- (C) Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. +11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright (C) 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright (C) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (C) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. +14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright (C) 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. +15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. +Ansible +Kendo UI - NO WARRANTY + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies of this license document, + but changing it is not allowed. + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds + of works. + The licenses for most software and other practical works are designed to take away your + freedom to share and change the works. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change all versions of a program--to + make sure it remains free software for all its users. We, the Free Software Foundation, use + the GNU General Public License for most of our software; it applies also to any other + work released this way by its authors. You can apply it to your programs, too. + When we speak of free software, we are referring to freedom, not price. Our General + Public Licenses are designed to make sure that you have the freedom to distribute copies + of free software (and charge for them if you wish), that you receive source code or can + get it if you want it, that you can change the software or use pieces of it in new free + programs, and that you know you can do these things. + To protect your rights, we need to prevent others from denying you these rights or asking + you to surrender the rights. Therefore, you have certain responsibilities if you distribute + copies of the software, or if you modify it: responsibilities to respect the freedom of + others. + For example, if you distribute copies of such a program, whether gratis or for a fee, you + must pass on to the recipients the same freedoms that you received. You must make sure + that they, too, receive or can get the source code. And you must show them these terms + so they know their rights. + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright + on the software, and (2) offer you this License giving you legal permission to copy, + distribute and/or modify it. + For the developers' and authors' protection, the GPL clearly explains that there is no + warranty for this free software. For both users' and authors' sake, the GPL requires that + modified versions be marked as changed, so that their problems will not be attributed + erroneously to authors of previous versions. + Some devices are designed to deny users access to install or run modified versions of the + software inside them, although the manufacturer can do so. This is fundamentally + incompatible with the aim of protecting users' freedom to change the software. The + systematic pattern of such abuse occurs in the area of products for individuals to use, + which is precisely where it is most unacceptable. Therefore, we have designed this version + of the GPL to prohibit the practice for those products. If such problems arise substantially + in other domains, we stand ready to extend this provision to those domains in future + versions of the GPL, as needed to protect the freedom of users. + Finally, every program is threatened constantly by software patents. States should not + allow patents to restrict development and use of software on general-purpose computers, + but in those that do, we wish to avoid the special danger that patents applied to a free + program could make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + The precise terms and conditions for copying, distribution and modification follow. + TERMS AND CONDITIONS + 0. Definitions. + "This License" refers to version 3 of the GNU General Public License. + "Copyright" also means copyright-like laws that apply to other kinds of works, such as + semiconductor masks. + "The Program" refers to any copyrightable work licensed under this License. Each + licensee is addressed as "you". "Licensees" and "recipients" may be individuals or + organizations. + To "modify" a work means to copy from or adapt all or part of the work in a fashion + requiring copyright permission, other than the making of an exact copy. The resulting + work is called a "modified version" of the earlier work or a work "based on" the earlier + work. + A "covered work" means either the unmodified Program or a work based on the Program. + To "propagate" a work means to do anything with it that, without permission, would + make you directly or secondarily liable for infringement under applicable copyright law, + except executing it on a computer or modifying a private copy. Propagation includes + copying, distribution (with or without modification), making available to the public, and + in some countries other activities as well. + To "convey" a work means any kind of propagation that enables other parties to make or + receive copies. Mere interaction with a user through a computer network, with no transfer + of a copy, is not conveying. + An interactive user interface displays "Appropriate Legal Notices" to the extent that it + includes a convenient and prominently visible feature that (1) displays an appropriate + copyright notice, and (2) tells the user that there is no warranty for the work (except to + the extent that warranties are provided), that licensees may convey the work under this + License, and how to view a copy of this License. If the interface presents a list of user + commands or options, such as a menu, a prominent item in the list meets this criterion. + 1. Source Code. + The "source code" for a work means the preferred form of the work for making + modifications to it. "Object code" means any non-source form of a work. + A "Standard Interface" means an interface that either is an official standard defined by a + recognized standards body, or, in the case of interfaces specified for a particular + programming language, one that is widely used among developers working in that + language. + The "System Libraries" of an executable work include anything, other than the work as a + whole, that (a) is included in the normal form of packaging a Major Component, but + which is not part of that Major Component, and (b) serves only to enable use of the work + with that Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A "Major Component", in + this context, means a major essential component (kernel, window system, and so on) of + the specific operating system (if any) on which the executable work runs, or a compiler + used to produce the work, or an object code interpreter used to run it. + The "Corresponding Source" for a work in object code form means all the source code + needed to generate, install, and (for an executable work) run the object code and to + modify the work, including scripts to control those activities. However, it does not + include the work's System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but which are not part + of the work. For example, Corresponding Source includes interface definition files + associated with source files for the work, and the source code for shared libraries and + dynamically linked subprograms that the work is specifically designed to require, such as + by intimate data communication or control flow between those subprograms and other + parts of the work. + The Corresponding Source need not include anything that users can regenerate + automatically from other parts of the Corresponding Source. + The Corresponding Source for a work in source code form is that same work. + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the + Program, and are irrevocable provided the stated conditions are met. This License + explicitly affirms your unlimited permission to run the unmodified Program. The output + from running a covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your rights of fair use or + other equivalent, as provided by copyright law. + You may make, run and propagate covered works that you do not convey, without + conditions so long as your license otherwise remains in force. You may convey covered + works to others for the sole purpose of having them make modifications exclusively for + you, or provide you with facilities for running those works, provided that you comply + with the terms of this License in conveying all material for which you do not control + copyright. Those thus making or running the covered works for you must do so + exclusively on your behalf, under your direction and control, on terms that prohibit them + from making any copies of your copyrighted material outside their relationship with you. + Conveying under any other circumstances is permitted solely under the conditions stated + below. Sublicensing is not allowed; section 10 makes it unnecessary. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any + applicable law fulfilling obligations under article 11 of the WIPO copyright treaty + adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of + such measures. + When you convey a covered work, you waive any legal power to forbid circumvention of + technological measures to the extent such circumvention is effected by exercising rights + under this License with respect to the covered work, and you disclaim any intention to + limit operation or modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of technological measures. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any + medium, provided that you conspicuously and appropriately publish on each copy an + appropriate copyright notice; keep intact all notices stating that this License and any non- + permissive terms added in accord with section 7 apply to the code; keep intact all notices + of the absence of any warranty; and give all recipients a copy of this License along with + the Program. + You may charge any price or no price for each copy that you convey, and you may offer + support or warranty protection for a fee. + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from + the Program, in the form of source code under the terms of section 4, provided that you + also meet all of these conditions: + * a) The work must carry prominent notices stating that you modified it, and giving + a relevant date. + * b) The work must carry prominent notices stating that it is released under this + License and any conditions added under section 7. This requirement modifies the + requirement in section 4 to "keep intact all notices". + * c) You must license the entire work, as a whole, under this License to anyone who + comes into possession of a copy. This License will therefore apply, along with any + applicable section 7 additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no permission to license + the work in any other way, but it does not invalidate such permission if you have + separately received it. + * d) If the work has interactive user interfaces, each must display Appropriate Legal + Notices; however, if the Program has interactive interfaces that do not display + Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are + not by their nature extensions of the covered work, and which are not combined with it + such as to form a larger program, in or on a volume of a storage or distribution medium, is + called an "aggregate" if the compilation and its resulting copyright are not used to limit + the access or legal rights of the compilation's users beyond what the individual works + permit. Inclusion of a covered work in an aggregate does not cause this License to apply + to the other parts of the aggregate. + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, + provided that you also convey the machine-readable Corresponding Source under the + terms of this License, in one of these ways: + * a) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by the Corresponding Source fixed + on a durable physical medium customarily used for software interchange. + * b) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by a written offer, valid for at least + three years and valid for as long as you offer spare parts or customer support for + that product model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the product that is + covered by this License, on a durable physical medium customarily used for + software interchange, for a price no more than your reasonable cost of physically + performing this conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. + * c) Convey individual copies of the object code with a copy of the written offer to + provide the Corresponding Source. This alternative is allowed only occasionally + and noncommercially, and only if you received the object code with such an offer, + in accord with subsection 6b. + * d) Convey the object code by offering access from a designated place (gratis or + for a charge), and offer equivalent access to the Corresponding Source in the same + way through the same place at no further charge. You need not require recipients + to copy the Corresponding Source along with the object code. If the place to copy + the object code is a network server, the Corresponding Source may be on a + different server (operated by you or a third party) that supports equivalent + copying facilities, provided you maintain clear directions next to the object code + saying where to find the Corresponding Source. Regardless of what server hosts + the Corresponding Source, you remain obligated to ensure that it is available for as + long as needed to satisfy these requirements. + * e) Convey the object code using peer-to-peer transmission, provided you inform + other peers where the object code and Corresponding Source of the work are + being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the + Corresponding Source as a System Library, need not be included in conveying the object + code work. + A "User Product" is either (1) a "consumer product", which means any tangible personal + property which is normally used for personal, family, or household purposes, or (2) + anything designed or sold for incorporation into a dwelling. In determining whether a + product is a consumer product, doubtful cases shall be resolved in favor of coverage. For + a particular product received by a particular user, "normally used" refers to a typical or + common use of that class of product, regardless of the status of the particular user or of + the way in which the particular user actually uses, or expects or is expected to use, the + product. A product is a consumer product regardless of whether the product has + substantial commercial, industrial or non-consumer uses, unless such uses represent the + only significant mode of use of the product. + "Installation Information" for a User Product means any methods, procedures, + authorization keys, or other information required to install and execute modified versions + of a covered work in that User Product from a modified version of its Corresponding + Source. The information must suffice to ensure that the continued functioning of the + modified object code is in no case prevented or interfered with solely because + modification has been made. + If you convey an object code work under this section in, or with, or specifically for use in, + a User Product, and the conveying occurs as part of a transaction in which the right of + possession and use of the User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the Corresponding Source + conveyed under this section must be accompanied by the Installation Information. But + this requirement does not apply if neither you nor any third party retains the ability to + install modified object code on the User Product (for example, the work has been + installed in ROM). + The requirement to provide Installation Information does not include a requirement to + continue to provide support service, warranty, or updates for a work that has been + modified or installed by the recipient, or for the User Product in which it has been + modified or installed. Access to a network may be denied when the modification itself + materially and adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + Corresponding Source conveyed, and Installation Information provided, in accord with + this section must be in a format that is publicly documented (and with an implementation + available to the public in source code form), and must require no special password or key + for unpacking, reading or copying. + 7. Additional Terms. + "Additional permissions" are terms that supplement the terms of this License by making + exceptions from one or more of its conditions. Additional permissions that are applicable + to the entire Program shall be treated as though they were included in this License, to the + extent that they are valid under applicable law. If additional permissions apply only to + part of the Program, that part may be used separately under those permissions, but the + entire Program remains governed by this License without regard to the additional + permissions. + When you convey a copy of a covered work, you may at your option remove any + additional permissions from that copy, or from any part of it. (Additional permissions + may be written to require their own removal in certain cases when you modify the work.) + You may place additional permissions on material, added by you to a covered work, for + which you have or can give appropriate copyright permission. + Notwithstanding any other provision of this License, for material you add to a covered + work, you may (if authorized by the copyright holders of that material) supplement the + terms of this License with terms: + * a) Disclaiming warranty or limiting liability differently from the terms of sections + 15 and 16 of this License; or + * b) Requiring preservation of specified reasonable legal notices or author + attributions in that material or in the Appropriate Legal Notices displayed by + works containing it; or + * c) Prohibiting misrepresentation of the origin of that material, or requiring that + modified versions of such material be marked in reasonable ways as different + from the original version; or + * d) Limiting the use for publicity purposes of names of licensors or authors of the + material; or + * e) Declining to grant rights under trademark law for use of some trade names, + trademarks, or service marks; or + * f) Requiring indemnification of licensors and authors of that material by anyone + who conveys the material (or modified versions of it) with contractual + assumptions of liability to the recipient, for any liability that these contractual + assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered "further restrictions" within the + meaning of section 10. If the Program as you received it, or any part of it, contains a + notice stating that it is governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains a further restriction + but permits relicensing or conveying under this License, you may add to a covered work + material governed by the terms of that license document, provided that the further + restriction does not survive such relicensing or conveying. + If you add terms to a covered work in accord with this section, you must place, in the + relevant source files, a statement of the additional terms that apply to those files, or a + notice indicating where to find the applicable terms. + Additional terms, permissive or non-permissive, may be stated in the form of a separately + written license, or stated as exceptions; the above requirements apply either way. + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under + this License. Any attempt otherwise to propagate or modify it is void, and will + automatically terminate your rights under this License (including any patent licenses + granted under the third paragraph of section 11). + However, if you cease all violation of this License, then your license from a particular + copyright holder is reinstated (a) provisionally, unless and until the copyright holder + explicitly and finally terminates your license, and (b) permanently, if the copyright holder + fails to notify you of the violation by some reasonable means prior to 60 days after the + cessation. + Moreover, your license from a particular copyright holder is reinstated permanently if the + copyright holder notifies you of the violation by some reasonable means, this is the first + time you have received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after your receipt of the + notice. + Termination of your rights under this section does not terminate the licenses of parties + who have received copies or rights from you under this License. If your rights have been + terminated and not permanently reinstated, you do not qualify to receive new licenses for + the same material under section 10. + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the + Program. Ancillary propagation of a covered work occurring solely as a consequence of + using peer-to-peer transmission to receive a copy likewise does not require acceptance. + However, nothing other than this License grants you permission to propagate or modify + any covered work. These actions infringe copyright if you do not accept this License. + Therefore, by modifying or propagating a covered work, you indicate your acceptance of + this License to do so. + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from + the original licensors, to run, modify and propagate that work, subject to this License. + You are not responsible for enforcing compliance by third parties with this License. + An "entity transaction" is a transaction transferring control of an organization, or + substantially all assets of one, or subdividing an organization, or merging organizations. If + propagation of a covered work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever licenses to the work + the party's predecessor in interest had or could give under the previous paragraph, plus a + right to possession of the Corresponding Source of the work from the predecessor in + interest, if the predecessor has it or can get it with reasonable efforts. + You may not impose any further restrictions on the exercise of the rights granted or + affirmed under this License. For example, you may not impose a license fee, royalty, or + other charge for exercise of rights granted under this License, and you may not initiate + litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent + claim is infringed by making, using, selling, offering for sale, or importing the Program or + any portion of it. + 11. Patents. + A "contributor" is a copyright holder who authorizes use under this License of the + Program or a work on which the Program is based. The work thus licensed is called the + contributor's "contributor version". + A contributor's "essential patent claims" are all patent claims owned or controlled by the + contributor, whether already acquired or hereafter acquired, that would be infringed by + some manner, permitted by this License, of making, using, or selling its contributor + version, but do not include claims that would be infringed only as a consequence of + further modification of the contributor version. For purposes of this definition, "control" + includes the right to grant patent sublicenses in a manner consistent with the requirements + of this License. + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under + the contributor's essential patent claims, to make, use, sell, offer for sale, import and + otherwise run, modify and propagate the contents of its contributor version. + In the following three paragraphs, a "patent license" is any express agreement or + commitment, however denominated, not to enforce a patent (such as an express + permission to practice a patent or covenant not to sue for patent infringement). To "grant" + such a patent license to a party means to make such an agreement or commitment not to + enforce a patent against the party. + If you convey a covered work, knowingly relying on a patent license, and the + Corresponding Source of the work is not available for anyone to copy, free of charge and + under the terms of this License, through a publicly available network server or other + readily accessible means, then you must either (1) cause the Corresponding Source to be + so available, or (2) arrange to deprive yourself of the benefit of the patent license for this + particular work, or (3) arrange, in a manner consistent with the requirements of this + License, to extend the patent license to downstream recipients. "Knowingly relying" + means you have actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work in a country, + would infringe one or more identifiable patents in that country that you have reason to + believe are valid. + If, pursuant to or in connection with a single transaction or arrangement, you convey, or + propagate by procuring conveyance of, a covered work, and grant a patent license to + some of the parties receiving the covered work authorizing them to use, propagate, + modify or convey a specific copy of the covered work, then the patent license you grant + is automatically extended to all recipients of the covered work and works based on it. + A patent license is "discriminatory" if it does not include within the scope of its coverage, + prohibits the exercise of, or is conditioned on the non-exercise of one or more of the + rights that are specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is in the business of + distributing software, under which you make payment to the third party based on the + extent of your activity of conveying the work, and under which the third party grants, to + any of the parties who would receive the covered work from you, a discriminatory patent + license (a) in connection with copies of the covered work conveyed by you (or copies + made from those copies), or (b) primarily for and in connection with specific products or + compilations that contain the covered work, unless you entered into that arrangement, or + that patent license was granted, prior to 28 March 2007. + Nothing in this License shall be construed as excluding or limiting any implied license or + other defenses to infringement that may otherwise be available to you under applicable + patent law. + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that + contradict the conditions of this License, they do not excuse you from the conditions of + this License. If you cannot convey a covered work so as to satisfy simultaneously your + obligations under this License and any other pertinent obligations, then as a consequence + you may not convey it at all. For example, if you agree to terms that obligate you to + collect a royalty for further conveying from those to whom you convey the Program, the + only way you could satisfy both those terms and this License would be to refrain entirely + from conveying the Program. + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or + combine any covered work with a work licensed under version 3 of the GNU Affero + General Public License into a single combined work, and to convey the resulting work. + The terms of this License will continue to apply to the part which is the covered work, but + the special requirements of the GNU Affero General Public License, section 13, + concerning interaction through a network will apply to the combination as such. + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU + General Public License from time to time. Such new versions will be similar in spirit to the + present version, but may differ in detail to address new problems or concerns. + Each version is given a distinguishing version number. If the Program specifies that a + certain numbered version of the GNU General Public License "or any later version" + applies to it, you have the option of following the terms and conditions either of that + numbered version or of any later version published by the Free Software Foundation. If + the Program does not specify a version number of the GNU General Public License, you + may choose any version ever published by the Free Software Foundation. + If the Program specifies that a proxy can decide which future versions of the GNU + General Public License can be used, that proxy's public statement of acceptance of a + version permanently authorizes you to choose that version for the Program. + Later license versions may give you additional or different permissions. However, no + additional obligations are imposed on any author or copyright holder as a result of your + choosing to follow a later version. + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT + PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN + WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE + THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER + EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF + THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, + YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR + CORRECTION. + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO + MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE + OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO + LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES + SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM + TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given + local legal effect according to their terms, reviewing courts shall apply local law that most + closely approximates an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a copy of the Program + in return for a fee. -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OEM Plupload -------------------------------------------------------------------------- -GNU General Public License + GNU General Public License Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc., - -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA See Section 2 below for text of GPL v2.0 license. Font awesome -------------------------------------------------------------------------- The Font Awesome font is licensed under the SIL OFL 1.1: This Font Software is licensed under the SIL Open Font License, Version 1.1. - This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ------------------------------------------------------------ + + SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- @@ -1556,95 +988,5245 @@ Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: The MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -2. GNU General Public License version 2 (GPL v2) +===================================================================== + 2. GNU General Public License version 2 (GPL v2) ===================================================================== GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc. +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -Preamble +###Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - The precise terms and conditions for copying, distribution and modification follow. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. - 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +###End of (1) Torrent Suite(TM) Software Version 5.18 Open Source License + +**************************************************** + (2) BEGINS: +================================================================================ + +LIFE TECHNOLOGIES CORPORATION + +END USER LICENSE AGREEMENT +## FOR SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 + +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THIS SOFTWARE PRODUCT. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND/OR USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND/OR USE THE SOFTWARE. +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable license, with no rights to sublicense, to install and/or use the Software only in object code (machine readable) format and only on single computers owned or controlled by you (or in a single network, if your Software is designated as a network version) for the sole purpose of managing, analyzing, viewing, editing, reporting and/or printing data provided by Life Technologies or generated by Life Technologies instruments for research use only. +If the software uses registration codes, access to the number of licenses copies of Software is controlled by a registration code. For example, if you have a registration code that enables you to use three copies of Software simultaneously, you cannot install Software on more than three separate computers. +You may make one copy of the Software in machine-readable form solely for backup or archival purposes. You must reproduce on any such copy all copyright notices and any other proprietary legends found on the original. You may not make any other copies of the Software. + +RESTRICTIONS + +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You agree to use Software, and data generated by Software, for the sole purpose of review and analysis of data generated by Life Technologies instruments. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties, if any, made by Life Technologies may be voided by abuse or misuse of the Software. +LIMITATION OF LIABILITY +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. + +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors) technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +July 15, 2020 + +Appendix 1 + +Life Technologies Corporation + +Third Party Copyright Notices and Licenses + SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + +Asn1crypto Copyright (C) 2015-2018 Will Bond +Six Copyright (C) 2010-2018 Benjamin Peterson + + + +The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Boto3 + +Botocore + +Pelix + +S3transfer + +Apache License + +Version 2.0, January 2004 + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +1. You must give any other recipients of the Work or Derivative Works a copy of this License; and +2. You must cause any modified files to carry prominent notices stating that You changed the files; and +3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +Concurrent + +The Python Software Foundation License Version 2 + + 1. This LICENSE AGREEMENT is between the Python Software Foundation + ("PSF"), and the Individual or Organization ("Licensee") accessing and + otherwise using this software ("Python") in source or binary form and + its associated documentation. + + 2. Subject to the terms and conditions of this License Agreement, PSF + hereby grants Licensee a nonexclusive, royalty-free, world-wide + license to reproduce, analyze, test, perform and/or display publicly, + prepare derivative works, distribute, and otherwise use Python + alone or in any derivative version, provided, however, that PSF's + License Agreement and PSF's notice of copyright, i.e., "Copyright (C) + 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights + Reserved" are retained in Python alone or in any derivative version + prepared by Licensee. + + 3. In the event Licensee prepares a derivative work that is based on + or incorporates Python or any part thereof, and wants to make + the derivative work available to others as provided herein, then + Licensee hereby agrees to include in any such work a brief summary of + the changes made to Python. + + 4. PSF is making Python available to Licensee on an "AS IS" + basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR + IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND + DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS + FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT + INFRINGE ANY THIRD PARTY RIGHTS. + + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON + FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS + A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, + OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + + 6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. + + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote + products or services of Licensee, or any third party. + + 8. By copying, installing or otherwise using Python, Licensee + agrees to be bound by the terms and conditions of this License + Agreement. + +Paho + +Eclipse Distribution License - v 1.0 + +Copyright (C) 2007, Eclipse Foundation, Inc. and its licensors. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +AND + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + + + "Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + + i)changes to the Program, and + + ii)additions to the Program; + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. +"Contributor" means any person or entity that distributes the Program. +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. +"Program" means the Contributions distributed in accordance with this Agreement. +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained within the Program. + Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + + This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +## Docutils + + Public Domain Dedication + + The persons who have associated their work with this project (the "Dedicator": David Goodger and the many contributors to the Docutils project) hereby dedicate the entire copyright, less the exceptions listed below, in the work of authorship known as "Docutils" identified below (the "Work") to the public domain. + + The primary repository for the Work is the Internet World Wide Web site . The Work consists of the files within the "docutils" module of the Docutils project Subversion repository (Internet host docutils.svn.sourceforge.net, filesystem path /svnroot/docutils), whose Internet web interface is located at . Files dedicated to the public domain may be identified by the inclusion, near the beginning of each file, of a declaration of the form: + + Copyright: This document/module/DTD/stylesheet/file/etc. has been + placed in the public domain. + + Dedicator makes this dedication for the benefit of the public at large and to the detriment of Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. + + Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. + +## Dateutil + + Copyright (C) 2003-2011 - Gustavo Niemeyer + + Copyright (C) 2012-2014 - Tomi Pievilainen + + Copyright (C) 2014 - Yaron de Leeuw + + All rights reserved. + + Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +## Enum + +Copyright (C) 2013, Ethan Furman. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + Neither the name Ethan Furman nor the names of any + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +## Jmespath + +Copyright (C) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, dis- +tribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the fol- +lowing conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +## Oscrypto + +Copyright (C) 2015-2018 Will Bond + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +## Pubsub + +Copyright (C) since 2006, Oliver Schoenborn +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +###END OF (2) SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 END USER LICENSE AGREEMENT +**************************************************** +(3) BEGINS: +======================================== + + +LIFE TECHNOLOGIES CORPORATION + +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY + +FOR ION CHEF(TM) INSTRUMENT SOFTWARE VERSION 5.18 INSTRUMENT OPERATING SOFTWARE + +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. +RESTRICTIONS +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. + +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + + +Appendix 1 + +Life Technologies Corporation + +Third Party Copyright Notices and Licenses + +Ion Chef Instrument Software(TM) VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + + +3-clause BSD License + +OpenCV + +By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, +copy or use the software. + + + +License Agreement + +For Open Source Computer Vision Library +(3-clause BSD License) + + +Copyright (C) 2000-2020, Intel Corporation, all rights reserved. Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved. + +Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved. Copyright (C) 2015-2016, Itseez Inc., all rights reserved. + +Copyright (C) 2019-2020, Xperience AI, all rights reserved. Third party copyrights are property of their respective owners. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. + + + + +GPL v2 + +DirectFB + +(C) Copyright 2017-2021 DirectFB2 Open Source Project (fork of DirectFB) (C) Copyright 2012-2016 DirectFB integrated media GmbH + +(C) Copyright 2001-2013 The world wide DirectFB Open Source Community (directfb.org) (C) Copyright 2000-2004 Convergence (integrated media) GmbH + + +DirectFB was originally written by Denis Oliver Kropp, Andreas Shimokawa, + +Marek Pikarski, Sven Neumann, Ville Syrjala and Claudio Ciccani. + +DirectFB2 is the work of Nicolas Caramelli whose goal is to preserve and maintain DirectFB GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +## MIT derivative curl + +Copyright (C) 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +GPL v2 + +Python 2.7.2 + +###CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (C) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. + + +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior +permission. + + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +GPL v2 mtd-utils + +http://git.infradead.org/mtd-utils.git/blob/HEAD:/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. +You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +LGPL GTK+ http://www.gtk.org/ + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +NTP License (NTP) NTP http://www.ntp.org/ntpfaq/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +GPL v2 + +GDK-PixBuf + +https://docs.gtk.org/gdk-pixbuf/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +PSP log4cpp https://sourceforge.net/p/log4cpp/codegit/ci/master/tree/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies +the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + + + +GPL v2 + + +busybox md5sum wget + + +https://www.busybox.net/license.html + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do +these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Tar + +https://www.gnu.org/software/tar/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Linux Kernel + +https://www.kernel.org/doc/html/v4.18/process/license-rules.html#:~:text=The%20Linux%20Kernel% +20is%20provideddescribed%20in%20the%20COPYING%20file + + +GNU GENERAL PUBLIC LICENSE Version 2, June 1991 + + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. + + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original authors' reputations. + + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + + +The precise terms and conditions for copying, distribution and modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + + + You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + + + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + + + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + + + In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + + + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + + + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + + + The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to this License. + + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +Mozilla Public License, v. 2.0 + +DHCP + +Mozilla Public License +Version 2.0 + +1. Definitions + + 1.1. "Contributor" +means each individual or legal entity that creates, contributes to the creation of, or owns Covered +Software. + + + 1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used by a Contributor and that particular +Contributor's Contribution. + + + 1.3. "Contribution" +means Covered Software of a particular Contributor. + + + 1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. + + + 1.5. "Incompatible With Secondary Licenses" +means +that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or that the Covered Software was made available under the terms of version 1.1 or earlier of the License, +but not also under the terms of a Secondary License. + + + 1.6. "Executable Form" +means any form of the work other than Source Code Form. + + + 1.7. "Larger Work" +means a work that combines Covered Software with other material, in a separate file or files, that is not +Covered Software. + + + 1.8. "License" +means this document. + + + 1.9. "Licensable" +means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. + + + 1.10. "Modifications" +means any of the following: + + any file in Source Code Form that results from an addition to, deletion from, or modification of the +contents of Covered Software; or + + + any new file in Source Code Form that contains any Covered Software. + + + 1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. + + + 1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. + + + 1.13. "Source Code Form" +means the form of the work preferred for making modifications. + + + 1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + + 2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. + + + 2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become effective for each +Contribution on the date the Contributor first distributes such Contribution. + + + 2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: +for any code that a Contributor has removed from Covered Software; or for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or +under Patent Claims infringed by Covered Software in the absence of its Contributions. +T. his License does not grant any rights in the trademarks, service marks, or logos of any Contributor +(except as may be necessary to comply with the notice requirements in Section 3.4). + + + 2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). + + + 2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. + + + 2.6. Fair Use + + This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. + + + 2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. + + +3. Responsibilities + + + 3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. + + 3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and +You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. + + 3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). + + + 3.4. Notices + + You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. + + + 3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations +to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of +liability specific to any jurisdiction. + + +4. Inability to Comply Due to Statute or Regulation + + + If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. + + +5. Termination + + + 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time +You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. + + + 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. + + + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. + + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer. + + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability +for death or personal injury resulting from such party's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. + + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. + + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. + +10. Versions of the License + + + 10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. + + + 10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. + + + 10.3. Modified Versions + + If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). + + + 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + + If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. + + + Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the +MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + + + If it is not possible or desirable to put the notice in a particular file, then You may include the notice in +a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. +You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice +This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public +License, v. 2.0. + + + + +## Private PTC CUSTOMER AGREEMENT Axeda Agent Embedded +======================================================================= + +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR +THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, +THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, +OR USES ANY +SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN +A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A +(AS APPLICABLE, "PTC"). +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS +AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING +ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS +AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO +BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, +CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS +PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN +YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN +THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF +ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT +HAS BEEN ACCEPTED. +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC +DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN +ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS +SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE +PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING +TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED +PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION +AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE +COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE +PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING +ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING +TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING +USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS +AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND +ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH +DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON +SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO +OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US +FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY +RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) +OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR +TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE +ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF +YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS +AGREEMENT. +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO +SPECIFIC GEOGRAPHIES. + + + +### PTC Clickwrap Customer Agreement - Rev. 12/14 + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed +Products identified in the Quote +during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable +usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage +("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to +install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the +Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic +institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer +does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non educational research or funded educational research conducted using the facilities of an academic institution or under an +academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a +violation of the terms of this Agreement. + + (C) If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on +the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable +Designated Country. Customer may, from time to time, change the Designated Computer, Designated +Network, and/or the +Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall +give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, +Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the +Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a +"Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the +Customer to install, +operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted +Global License allows the +Customer to install, operate and use such Licensed Product at any Customer site(s) located in the +Designated Country +and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech +Republic, Poland, +Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; + + (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or +consulting services to any third parties, or for commercial time-sharing or service bureau use; + + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed +Products, or otherwise +attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in +Schedule A, if applicable; + + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or +otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in +part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are +explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or +in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation +into computer memory for the purpose of executing the Licensed Products in accordance with this +Section 1, and/or (b) to +make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the +property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, +proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). +If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, +without limiting PTC's right to +terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or +penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a +Concurrent User Product, +the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the +number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated +Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may +use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the +Licensed Product is +licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated +Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses +a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" +or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer +may add and/or substitute from time to time new Registered Users as long as the aggregate number of +Registered Users does not +exceed at any point in time the number of Licenses in effect at such time for that particular Licensed +Product and, provided further, +that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at +PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on +the computer server that is designated by the Customer in connection with the initial installation of such product and that has one +unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner +(physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such +server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change +the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case (a) Customer shall +give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server +Products to a different +Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software +components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule +of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software +products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to +Customer directly by the +manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled +Third Party Products are also +described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party +Components and/or Bundled Third +Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing +Third Party Components or +Bundled Third Party Products may be subject to additional or different third party terms, of which PTC +shall notify the Customer at +the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the +Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on +Support Services for such software. +After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis +of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed +Software that formed the basis for +Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that +PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC +access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably +requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. +2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to +the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer +has issued a password or other unique identifier to enable such individual to use the Registered User +Product). Such report shall be +certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written +request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the +Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including +applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay +shall be grounds for termination in accordance with Section 7 hereof. + + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed +Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed +Products. All copies of the Licensed Products, in whatever form provided by PTC or made by +Customer, shall remain the property of +PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License +granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a +right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source +code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify +the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. +See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed +Products for which Usage License +Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support +Services in accordance with +Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the +Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or +Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) +evaluation, "trial" or "express" +Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) +Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, +(v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed +Products that are provided by +PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third +Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty +given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product +(s) or (b) use diligent efforts to +repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the +Error is received by PTC +within the Warranty Period and Customer supplies such additional information regarding the Error as +PTC may reasonably request. +If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a +workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by +PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed +Product(s) upon return of such +Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC +or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those +contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement +signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or +Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER +WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING +ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN +ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND +ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS +SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED +PRODUCTS, INCLUDING +THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING +LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed +Products will be uninterrupted or +error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 PTC's Obligation to Indemnify Customer. PTC, at its own expense, will defend any action brought against Customer based on a +claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its +option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified +promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on +such claim and all negotiations for its settlement or compromise and shall bear the costs of the same +(save where one or more of the +exclusions in Section 5.3 applies); and (C) Customer shall cooperate fully at PTC's expense with PTC +in the defense, settlement or +compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all +claims relating to infringement of any intellectual property right. + + 5.2 PTC's Right to Act to Prevent a Claim. If a claim described in Section 5.1 hereof occurs or, in +PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed +Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or (C) +terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by +Customer for such Licensed Product +depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be +equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclusions from PTC's Obligation to Indemnify Customer. PTC shall have no liability to Customer under Section 5.1 hereof or +otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed +Product in combination +with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed +Product in an application or environment for which it was not designed or not contemplated under this +Agreement; (C) use of other +than a current release of the Licensed Product(s) provided to Customer; (d) modification of the +Licensed Product by anyone other +than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other +proprietary right in which Customer has an interest. + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of +PTC, its subsidiaries and +affiliates, and each of their respective directors, officers, employees or agents, with respect to the +Licensed Products and Services, +including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, +trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 +ABOVE, THE MAXIMUM +LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, +FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE +RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, +SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR +THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED +ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD +IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES +THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR +ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF +PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS +OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS +INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND (C) SPECIAL, +INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE +HOWSOEVER CAUSED; IN EACH +CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective +directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer +recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and +limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the +Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section +6 shall not apply to any +claim in respect of death or personal injury. + + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses +(i) through (vii) of +Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer +or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's +creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against +Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence +dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section + + 7.1(a) above) of this +Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed +Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable +satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this +Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for +which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in +Customer's possession or in use. +7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this +Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way +connected with this Agreement shall be governed by and construed in accordance with the laws of the +Commonwealth of +Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform +Computer Information +Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the +International Sale of Goods. +All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal +courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or +anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual +property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the +Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the +personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all +actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and +binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute +arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to +Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be +provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 +Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have +been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; (C) if given by express +courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by +sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any +of Customer's rights or +obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, +and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior +written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. +No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed +by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this +Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal +requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the +Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer +acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and +regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, +received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or +technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's +home country or countries, and that the transfer of the Licensed Products or related technology to +Customer's employees, affiliates, +or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall +be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services +requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby +warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. +Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State +Department's Nonproliferation +Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked +Persons or any similar Export +Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export +restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States +Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the +Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of +a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. +Government, including but not limited to persons listed on the Restricted Parties Lists, or (C) engaged in activities related to the +design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) +engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to +which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will +comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law +and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, +loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any +provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the +remaining provisions and such provisions determined to be invalid shall be deemed severed from this +Agreement and, to the extent +possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between +PTC and Customer +with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding +unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended +beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such +licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a +customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products +are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial +license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed +Product(s) under a United States +government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the +Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer +agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government +contract. +Schedule A - Purchases from PTC Affiliates +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the +License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set +forth below. +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +Belgium, Netherlands, Luxembourg +Parametric Technology Nederland B.V. Netherlands +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, Germany +France Parametric Technology S.A. France Ireland PTC Software and Services (Ireland) Limited +Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the +European Union +PTC Software and Services (Ireland) Limited +Republic of Ireland Turkey, Kosovo, Serbia, Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and Albania +PTC Software and Services (Ireland) Limited +Republic of Ireland +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the Chamber of Commerce and Industry of the Russian Federation in Moscow Belarus, Moldova, Ukraine, +Armenia, Georgia, Azerbaijan, Kazakhstan, Kyrgyzstan, Tajikistan, Turkmenistan, and Uzbekistan +PTC Software and Services (Ireland) Limited +Republic of Ireland +Norway, Sweden, and Denmark, Finland, Iceland, and the Faeroe Islands +PTC Sweden AB Sweden +Japan PTC Japan K.K. Japan / Tokyo District Court +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +China Parametric Technology (Shanghai) Software Co., Ltd. +The People's Republic of China/China International Economic and Trade Arbitration Commission in Shanghai +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited +India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries including Australia and New Zealand, but excluding China, Japan and Taiwan) +PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order +Commonwealth of Massachusetts, +United States + +*Specific Provisions for Austria, Germany and Switzerland: +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following +provisions shall have no applicability to any Licensed Products or Services purchased outside of +Austria, Germany or Switzerland. + +References to sections below are references to the applicable sections in the body of the Agreement. + +Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve +information necessary to achieve interoperability of an independently created computer program with other software +programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and +(iii) PTC, upon +Customer's written request, has not made available the information required for this within a reasonable period. + +Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of +Warranties) are hereby +replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) +months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty +period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the +Customer inspects the +Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this +Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the +Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the +Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious +Errors in writing +within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are +preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product +(s) or (b) repair +the Error, provided that notice of the Error is received by PTC within the periods set forth in Section +4.2 and Customer +provides such additional information regarding the Error as PTC may reasonably request. If the repair +(either by providing +a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error +by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: +(i) rescission of the +affected order so that PTC provides a refund of the license fees paid by Customer for the applicable +Licensed Product(s) +upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. +Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation +period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of +PTC or any of its +resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those +contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of +Customer by an +authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based +on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 +shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a +substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is +solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of +independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of +PTC or its sales +representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the +Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to +be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an +order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on +PTC only to the extent +to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" +or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for +PTC resulting from such guarantee. + +Section 6 is hereby replaced by the following provisions: +6. Limitation of Liability + + 6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a +material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused +by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + + 6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC +breaches material +contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of +PTC who are not +officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, +unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + + 6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + + 6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or +loss of profit. + + 6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, +shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this +knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed +Product(s), the +warranty limitation period pursuant to Section 4.2 shall apply. + + 6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act +(Produkthaftungsgesetz), for injury +of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition +(Beschaffenheitsgarantie) remains unaffected. + + 6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + + 6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of +Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or +inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of +appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other +phenomena which could put individual data or an entire data stock at risk. Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as +specified either in the Quote or at the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC +at the time of installation of +the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as +"fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer +Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with +Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable +installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at +the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student +Edition," "Schools Edition," + +"Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic +Edition/Version," or otherwise +designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable +Documentation, provided that Customer +informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. + +"License" shall have the meaning set out in Section 1.1 of the body of the Agreement. + +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified +in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant +to the terms hereof) or, if no +Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the +License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the +date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License +will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or +the invoice, and such License includes Support Services during such License Term at no additional fee. "License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked +Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked +Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable +Quote, as well as (i) any +software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software +product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 +hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services +purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc. com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and +conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support +Services ordered, may also include +telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C +attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC +as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in +accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, +subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC +and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. +Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the +applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to +connect to an ERP system and a CRM system, two licenses of such adapter will be required. The +Licensed Products that are Per +Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the +applicable Licensed Product or, if no such document is provided, Customer's purchase order for such +Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a +Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the +Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed +Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the +Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town +(based on postal address) +shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed +Products. "Training Services" +does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed +Products for purposes of this +Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed +Product in the original Designated Country and the License fee applicable to the installation of such +Licensed Product in the +Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable +Licensed Product and that, during the +period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed +Product in accordance with the +terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of +the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a +time period of twelve (12) months or for such other period specified in Customer's order accepted by +PTC (a "Support Services +Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that +for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no +additional fee. If Customer does not order Support Services to commence on shipment of the Licensed +Product(s), or if Customer at +any time discontinues Support Services, and in either case subsequently wishes to obtain Support +Services, Customer must pay (i) the +then current fees for Support Services and (ii) the fees for Support Services for any period for which + +Customer has not purchased +Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are +described on http://www.ptc.com at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. +With respect to Registered User Products, e-Learning products and Integrity Concurrent User and +Server Licensed Products, Support +Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide +Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with +the level of Support Services Customer has purchased. The services offered under any Support Services +Plan may change from time +to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to +Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize +PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which +PTC will provide telephone support will vary depending upon the level of Support Services ordered by +Customer. For all levels of +Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business +hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support + +Services that include +telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total +number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with +Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC +shall use diligent efforts +to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC +during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may +reasonably request. + +(C) New Releases. PTC will provide Customer with one copy of each New Release for each Licensed +Product for which +Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. +Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous +release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; +thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as +described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, +environment, databases or other system components which adversely affect the Licensed Products; (iii) +caused by Customer's +modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of +the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or +peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of +the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a +failure by the Customer to implement recommendations in respect of solutions to Errors previously +provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for +Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by +Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is +responsible for the distribution of New Releases to any of Customer's additional locations where +Licensed Products are authorized to +be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address +for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed +Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality +contained within the Licensed Products, all of which are Customer's sole responsibility + + + + +## MIT JsonCpp +============================ + + +The JsonCpp library's source code, including accompanying documentation, tests and demonstration applications, are licensed under the following conditions... + + +The author (Baptiste Lepilleur) explicitly disclaims copyright in all jurisdictions which recognize such a disclaimer. In such jurisdictions, this software is released into the Public Domain. + + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright (C) 2007-2010 by Baptiste Lepilleur, and is released under the terms of the MIT License (see below). + + +In jurisdictions which recognize Public Domain property, the user of this software may choose to accept it either as 1) Public Domain, 2) under the conditions of the MIT License (see below), or 3) under the terms of dual Public Domain/MIT License conditions described here, as they choose. + + +The MIT License is about as close to Public Domain as a license can get, and is described in clear, concise terms at: + + +http://en.wikipedia.org/wiki/MIT_License + + +### The full text of the MIT License follows: +Copyright (C) 2007-2010 Baptiste Lepilleur + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## Open source HPND License + +PIL +The Python Imaging Library (PIL) is + + +Copyright (C) 1997-2011 by Secret Labs AB Copyright (C) 1995-2011 by Fredrik Lundh + + +Pillow is the friendly PIL fork. It is + + +Copyright (C) 2010-2022 by Alex Clark and contributors +Like PIL, Pillow is licensed under the open source HPND License: + + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + + +Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + + +END OF (3) ) Ion Chef(TM) Instrument Software Version 5.18 END USER LICENSE AGREEMENT +**************************************************** +**************************************************** +**************************************************** +**************************************************** +**************************************************** +(4) BEGINS: + +LIFE TECHNOLOGIES CORPORATION +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY +FOR ION GENESTUDIOTM S5 INSTRUMENT SOFTWAREVERSION 5.18 INSTRUMENT OPERATING SOFTWARE +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. + +RESTRICTIONS + +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +7. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +8. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +9. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +10. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +11. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +12. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + +Appendix 1 + +Life Technologies Corporation +Third Party Copyright Notices and Licenses + +Ion GeneStudioTM S5 Instrument Software VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + +MIT/X derivate license libcurl +The curl license +COPYRIGHT AND PERMISSION NOTICE + + +Copyright (C) 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +## MIT +json library + +Copyright (C) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================== +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## LGPL-2.1 + +libjpeg + +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 + +Name: libjpeg8-empty + + +Files: * + +Copyright: 2011 Linaro Limited + +License: LGPL-2.1 + +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License (LGPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +* This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +* You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Library General Public +License, version 2, can be found in /usr/share/common-licenses/LGPL-2.1. + + + +## LGPL-2.1 libpthread +This is the Debian prepackaged version of the Embedded GNU C Library version 2.19. + + +It was put together by the GNU Libc Maintainers +from + + +* Most of the GNU C library is under the following copyright: + + +Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + +You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +02110-1301 USA + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. + + +* The utilities associated with GNU C library is under the following copyright: + + +Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/GPL-2'. + + +* All code incorporated from 4.4 BSD is distributed under the following license: + + +Copyright (C) 1991 Regents of the University of California. All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. [This condition was removed.] +4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software +without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The DNS resolver code, taken from BIND 4.9.5, is copyrighted both by UC Berkeley and by Digital Equipment Corporation. The DEC portions are under the following license: +Portions Copyright (C) 1993 by Digital Equipment Corporation. Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that the name of Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the document or software without specific, written prior permission. + + +THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP. +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +* The Sun RPC support (from rpcsrc-4.0) is covered by the following license: +Copyright (C) 2010, Oracle America, Inc. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the "Oracle America, Inc." nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following CMU license covers some of the support code for Mach, derived from Mach 3.0: + + +Mach Operating System +Copyright (C) 1991,1990,1989 Carnegie Mellon University +All Rights Reserved. + + +Permission to use, copy, modify and distribute this software and its documentation is hereby granted, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, and that both notices appear in supporting documentation. + + +CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS'' CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + + +Carnegie Mellon requests users of this software to return to + + +Software Distribution Coordinator School of Computer Science Carnegie Mellon University Pittsburgh PA 15213-3890 + + +or Software.Distribution@CS.CMU.EDU any improvements or extensions that they make and grant Carnegie Mellon the rights to redistribute these changes. +* The file if_ppp.h is under the following CMU license: Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following license covers the files from Intel's "Highly Optimized +Mathematical Functions for Itanium" collection: + +Intel License Agreement + + +Copyright (C) 2000, Intel Corporation + + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + +* The name of Intel Corporation may not be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright +(C) by Craig Metz and are distributed under the following license: + + +* The Inner Net License, Version 2.00 + + +The author(s) grant permission for redistribution and use in source and +binary forms, with or without modification, of the software and documentation provided that the following conditions are met: + + +0. If you receive a version of the software that is specifically labelled +as not being for redistribution (check the version message and/or README), +you are not permitted to redistribute that version of the software in any way or form. +1. All terms of the all other applicable copyrights and licenses must be followed. +2. Redistributions of source code must retain the authors' copyright notice(s), this list of conditions, and the following disclaimer. +3. Redistributions in binary form must reproduce the authors' copyright notice(s), this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. +4. [The copyright holder has authorized the removal of this clause.] +5. Neither the name(s) of the author(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. If these license terms cause you a real problem, contact the author. */ + +## MIT +libxml + +https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home + + +The MIT License +OSI Approved License LogoLicense Copyright: Unknown. License License: Unknown. +License Contact: Unknown. + +SPDX short identifier: MIT Further resources... + +Begin license text. +Copyright + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +End license text. + + + + +## LGPL-2.1+ +libudev + +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: systemd +Upstream-Contact: systemd-devel@lists.freedesktop.org +Source: https://www.freedesktop.org/wiki/Software/systemd/ + + +Files: debian/* +Copyright: 2010-2013 Tollef Fog Heen +2013-2015 Michael Biebl +2013 Michael Stapelberg License: LGPL-2.1+ + + +Files: * + +Copyright: 2008-2015 Kay Sievers + +2010-2015 Lennart Poettering +2012-2015 Zbigniew Ja (TM) drzejewski-Szmek +2013-2015 Tom Gundersen +2013-2015 Daniel Mack +2010-2015 Harald Hoyer +2013-2015 David Herrmann +2013, 2014 Thomas H.P. Andersen +2013, 2014 Daniel Buch +2014 Susant Sahani +2009-2015 Intel Corporation +2000, 2005 Red Hat, Inc. +2009 Alan Jenkins +2010 ProFUSION embedded systems +2010 Maarten Lankhorst +1995-2004 Miquel van Smoorenburg +1999 Tom Tromey +2011 Michal Schmidt +2012 B. Poettering +2012 Holger Hans Peter Freyther +2012 Dan Walsh +2012 Roberto Sassu +2013 David Strauss +2013 Marius Vollmer +2013 Jan Janssen +2013 Simon Peeters +License: LGPL-2.1+ + + +Files: src/basic/siphash24.h src/basic/siphash24.c +Copyright: 2012 Jean-Philippe Aumasson +2012 Daniel J. Bernstein License: CC0-1.0 + + +Files: src/basic/securebits.h +Copyright: Linus Torvalds License: GPL-2 + + +Files: src/basic/ioprio.h +Copyright: Jens Axboe License: GPL-2 + + +Files: src/shared/linux/auto_dev-ioctl.h +Copyright: 2008 Red Hat, Inc. +2008 Ian Kent License: GPL-2+ + + +Files: src/basic/sparse-endian.h +Copyright: 2012 Josh Triplett License: Expat + + +Files: src/journal/lookup3.c src/journal/lookup3.h +Copyright: none +License: public-domain +You can use this free for any purpose. It's in the public domain. It has no warranty. + + +Files: src/udev/* +Copyright: 2003-2012 Kay Sievers +2003-2004 Greg Kroah-Hartman +2004 Chris Friesen +2004, 2009, 2010 David Zeuthen +2005, 2006 SUSE Linux Products GmbH +2003 IBM Corp. +2007 Hannes Reinecke +2009 Canonical Ltd. +2009 Scott James Remnant +2009 Martin Pitt +2009 Piter Punk +2009, 2010 Lennart Poettering +2009 Filippo Argiolas +2010 Maxim Levitsky +2011 ProFUSION embedded systems +2011 Karel Zak +2014 Zbigniew Ja (TM) drzejewski-Szmek +2014 David Herrmann +2014 Carlos Garnacho License: GPL-2+ + + +Files: src/udev/udev-ctrl.c src/udev/udevadm-hwdb.c src/udev/udev-builtin.c src/udev/udev-builtin-net_id.c +src/udev/udev-builtin-net_setup_link.c src/udev/udev-builtin-hwdb.c src/udev/udev-builtin-btrfs.c src/udev/udev-builtin-keyboard.c +src/udev/net/link-config.h src/udev/net/link-config.c src/udev/net/ethtool-util.c src/udev/net/ethtool-util.h +Copyright: 2007-2013 Kay Sievers +2013 Tom Gundersen License: LGPL-2.1+ + + +Files: src/udev/scsi_id/scsi.h Copyright: 2003 IBM Corp. License: GPL-2 + + +License: Expat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +## License: GPL-2 +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. +*On Debian and systems the full text of the GNU General Public +License version 2 can be found in the file +`/usr/share/common-licenses/GPL-2` + + +## License: GPL-2+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +* You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2` (TM) . + + +## License: LGPL-2.1+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. +* You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Lesser General Public +License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1`(TM) . + +## License: CC0-1.0 +To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. + +* You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see . +* On Debian systems, the complete text of the CC0 1.0 Universal license can be found in `/usr/share/common-licenses/CC0-1.0` (TM) . + + +## Libpng license libpng12 + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE + + +### PNG Reference Library License version 2 + + +* Copyright (C) 1995-2019 The PNG Reference Library Authors. +* Copyright (C) 2018-2019 Cosmin Truta. +* Copyright (C) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. +* Copyright (C) 1996-1997 Andreas Dilger. +* Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +The software is supplied "as is", without warranty of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or anyone distributing the software, be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of, or in connection with the software, or the use or other dealings in the software, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this software, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you +use this software in a product, an acknowledgment in the product documentation would be appreciated, but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + + +## PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) + + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are Copyright (C) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are derived from libpng-1.0.6, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors: + + +Simon-Pierre Cadieux +Eric S. Raymond Mans Rullgard Cosmin Truta Gilles Vollant James Yu +Mandar Sahastrabuddhe +Google Inc. Vadim Barkov + + +and with the following additions to the disclaimer: + + +There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes +or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + + +Some files in the "contrib" directory and some configure-generated files that are distributed with libpng have other copyright owners, and are released under other open source licenses. + + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright (C) 1998-2000 Glenn Randers-Pehrson, are derived from libpng-0.96, and are distributed according to the same disclaimer and license as libpng-0.96, with the following individuals added to the list of Contributing Authors: + +Tom Lane +Glenn Randers-Pehrson +Willem van Schaik + + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (C) 1996-1997 Andreas Dilger, are derived from libpng-0.88, and are distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors: + + +John Bowler Kevin Bracey Sam Bushell +Magnus Holmgren +Greg Roelofs +Tom Tanner + + +Some files in the "scripts" directory have other copyright owners, but are released under this license. + + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +For the purposes of this copyright and license, "Contributing Authors" is defined as the following set of individuals: + + +Andreas Dilger Dave Martindale Guy Eric Schalnat Paul Schmidt +Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this source code must not be misrepresented. + + +2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + +The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use +this source code in a product, acknowledgment is not required but would be appreciated. + + +LGPL-2.1 libnuma +This package was debianized by Ian Wienand +on Wed, 15 Dec 2004. + + +libnuma sources are available from https://github.com/numactl/numactl + + +Upstream Authors: +Andi Kleen Copyright (C) 2004 Andi Kleen +numactl and the demo programs are under the GNU General Public License, v.2 libnuma is under the GNU Lesser General Public License, v2.1. +The manpages are under the same license as the Linux manpages (see the files) + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. The full text of the License may be found in /usr/share/common-licenses/GPL. + + +The redistribution of portions of this program are controlled by the GNU Lesser General Public License as published by the Free Software Foundation. The full text of the License may be found in + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +Parts of the numademo program are derived from the STREAM benchmark, available from + +http://www.cs.virginia.edu/stream/ + + +Proprietary license from PTC Axeda Agent Embedded +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, OR USES ANY SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A (AS APPLICABLE, "PTC"). + +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. + +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT HAS BEEN ACCEPTED. + +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. + +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT- OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). + +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS AGREEMENT. + +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO SPECIFIC GEOGRAPHIES. + + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed Products identified in the Quote during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage ("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non- educational research or funded educational research conducted using the facilities of an academic institution or under an academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a violation of the terms of this Agreement. + + (C) If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable Designated Country. Customer may, from time to time, change the Designated Computer, Designated Network, and/or the Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a "Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) located in the Designated Country and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech Republic, Poland, Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or consulting services to any third parties, or for commercial time-sharing or service bureau use; + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed Products, or otherwise attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in Schedule A, if applicable; + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation into computer memory for the purpose of executing the Licensed Products in accordance with this Section 1, and/or (b) to make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). + + If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, without limiting PTC's right to terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be +entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a Concurrent User Product, the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the Licensed Product is licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer may add and/or substitute from time to time new Registered Users as long as the aggregate number of Registered Users does not exceed at any point in time the number of Licenses in effect at such time for that particular Licensed Product and, provided further, that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on the computer server that is designated by the Customer in connection with the initial installation of such product and that has one unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner (physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case +(a) Customer shall give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server Products to a different Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to Customer directly by the manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled Third Party Products are also described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party Components and/or Bundled Third Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing Third Party Components or Bundled Third Party Products may be subject to additional or different third party terms, of which PTC shall notify the Customer at the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on Support Services for such software. After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed Software that formed the basis for Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. + + 2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product). Such report shall be certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay shall be grounds for termination in accordance with Section 7 hereof. + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed Products. All copies of the Licensed Products, in whatever form provided by PTC or made by Customer, shall remain the property of PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. + + See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed Products for which Usage License Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support Services in accordance with Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) evaluation, "trial" or "express" Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, (v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed Products that are provided by PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product(s) or (b) use diligent efforts to repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the Error is received by PTC within the Warranty Period and Customer supplies such additional information regarding the Error as PTC may reasonably request. If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED PRODUCTS, INCLUDING THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed Products will be uninterrupted or error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 P TC's Ob li gati on to Ind emn ify C u sto mer . PTC, at its own expense, will defend any action brought against Customer based on a claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on such claim and all negotiations for its settlement or compromise and shall bear the costs of the same (save where one or more of the exclusions in Section 5.3 applies); and (C) Customer shall cooperate fully at PTC's expense with PTC in the defense, settlement or compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all claims relating to infringement of any intellectual property right. + + 5.2 P TC's Righ t to Act to P reven t a Clai m + + + If a claim described in Section 5.1 hereof occurs or, in PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or (C) terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by Customer for such Licensed Product depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclu sio n s fro m P TC's Ob li gati o n to In d emn ify Cu sto mer . PTC shall have no liability to Customer under Section 5.1 hereof or otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed Product in combination with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed Product in an application or environment for which it was not designed or not contemplated under this Agreement; (C) use of other than a current release of the Licensed Product(s) provided to Customer; (d) modification of the Licensed Product by anyone other than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other proprietary right in which Customer has an interest. + + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of PTC, its subsidiaries and affiliates, and each of their respective directors, officers, employees or agents, with respect to the Licensed Products and Services, including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 ABOVE, THE MAXIMUM LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND (C) SPECIAL, INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE HOWSOEVER CAUSED; IN EACH CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section 6 shall not apply to any claim in respect of death or personal injury. + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses (i) through (vii) of Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section 7.1(a) above) of this Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in Customer's possession or in use. + + 7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way connected with this Agreement shall be governed by and construed in accordance with the laws of the Commonwealth of Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform Computer Information Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the International Sale of Goods. All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; (C) if given by express courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any of Customer's rights or obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's home country or countries, and that the transfer of the Licensed Products or related technology to Customer's employees, affiliates, or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State Department's Nonproliferation Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked Persons or any similar Export Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. Government, including but not limited to persons listed on the Restricted Parties Lists, or (C) engaged in activities related to the design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the remaining provisions and such provisions determined to be invalid shall be deemed severed from this Agreement and, to the extent possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between PTC and Customer with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed Product(s) under a United States government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government contract. + + +Schedule A - Purchases from PTC Affiliates + +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set forth below. + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +Belgium, Netherlands, Parametric Technology Nederland B.V. Netherlands +Luxembourg +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, +Germany +France Parametric Technology S.A. France +Ireland PTC Software and Services (Ireland) +Limited Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, +Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the PTC Software and Services (Ireland) +Limited Republic of Ireland +European Union +Turkey, Kosovo, Serbia, PTC Software and Services (Ireland) +Limited Republic of Ireland +Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and +Albania +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the +Chamber of Commerce and Industry of the Russian Federation in Moscow + +Belarus Moldova, Ukraine, PTC Software and Services (Ireland) +Limited Republic of Ireland +Armenia, Georgia, Azerbaijan, +Kazakhstan, Kyrgyz stan, +Tajikistan, Turkmenistan, and +Uzbekistan +Norway, Sweden, and Denmark, PTC Sweden AB Sweden +Finland, Iceland, and the Faeroe +Islands +Japan PTC Japan K.K. Japan / Tokyo District Court + + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +China Parametric Technology (Shanghai) The People's Republic of China/China +International Economic and Trade +Arbitration Commission in Shanghai + Software Co., Ltd. +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +including Australia and New +Zealand, but excluding China, +Japan and Taiwan) +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order Commonwealth of Massachu setts, + United States + +* Specific Provisions for Austria, Germany and Switzerland: + +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following provisions shall have no applicability to any Licensed Products or Services purchased outside of Austria, Germany or Switzerland. References to sections below are references to the applicable sections in the body of the Agreement. + +* Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve information necessary to achieve interoperability of an independently created computer program with other software programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and (iii) PTC, upon Customer's written request, has not made available the information required for this within a reasonable period. + +* Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of Warranties) are hereby replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the Customer inspects the Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious Errors in writing within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product(s) or (b) repair the Error, provided that notice of the Error is received by PTC within the periods set forth in Section 4.2 and Customer provides such additional information regarding the Error as PTC may reasonably request. If the repair (either by providing a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: (i) rescission of the affected order so that PTC provides a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of PTC or its sales representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on PTC only to the extent to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for PTC resulting from such guarantee. + +* Section 6 is hereby replaced by the following provisions: + +6.Limitation of Liability + +6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + +6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC breaches material contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of PTC who are not officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + +6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + +6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or loss of profit. + +6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed Product(s), the warranty limitation period pursuant to Section 4.2 shall apply. + +6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act (Produkthaftungsgesetz), for injury of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition (Beschaffenheitsgarantie) remains unaffected. + +6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + +6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other phenomena which could put individual data or an entire data stock at risk. + +Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as "fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student Edition," "Schools Edition," "Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic Edition/Version," or otherwise designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable Documentation, provided that Customer informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. "License" shall have the meaning set out in Section 1.1 of the body of the Agreement. +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant to the terms hereof) or, if no Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or the invoice, and such License includes Support Services during such License Term at no additional fee. + +"License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable Quote, as well as (i) any software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc.com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support Services ordered, may also include telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to connect to an ERP system and a CRM system, two licenses of such adapter will be required. The Licensed Products that are Per Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the applicable Licensed Product or, if no such document is provided, Customer's purchase order for such Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town (based on postal address) shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed Products. "Training Services" does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed Products for purposes of this Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed Product in the original Designated Country and the License fee applicable to the installation of such Licensed Product in the Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable Licensed Product and that, during the period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed Product in accordance with the terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: + +Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a time period of twelve (12) months or for such other period specified in Customer's order accepted by PTC (a "Support Services Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no additional fee. If Customer does not order Support Services to commence on shipment of the Licensed Product(s), or if Customer at any time discontinues Support Services, and in either case subsequently wishes to obtain Support Services, Customer must pay (i) the then current fees for Support Services and (ii) the fees for Support Services for any period for which Customer has not purchased Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are described on http://www.ptc.com at + +http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. With respect to Registered User Products, e-Learning products and Integrity Concurrent User and Server Licensed Products, Support Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with the level of Support Services Customer has purchased. The services offered under any Support Services Plan may change from time to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which PTC will provide telephone support will vary depending upon the level of Support Services ordered by Customer. For all levels of Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support Services that include telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC shall use diligent efforts to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may reasonably request. + +(C) New Releases. PTC will provide Customer with one copy of each New Release for each Licensed Product for which Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, environment, databases or other system components which adversely affect the Licensed Products; (iii) caused by Customer's modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a failure by the Customer to implement recommendations in respect of solutions to Errors previously provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is responsible for the distribution of New Releases to any of Customer's additional locations where Licensed Products are authorized to be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality contained within the Licensed Products, all of which are Customer's sole responsibility. + + +END OF (4) Ion GeneStudio(TM) S5 V5.18 END USER LICENSE AGREEMENT +**************************************************** + diff --git a/TSVersion b/TSVersion index 0e4f8068..fd182799 100644 --- a/TSVersion +++ b/TSVersion @@ -1,4 +1,4 @@ # Version for target of current development cycle TS_MAJOR=5 -TS_MINOR=16 -TS_RELEASE=0 +TS_MINOR=18 +TS_RELEASE=1 diff --git a/buildTools/LICENSE.txt.in b/buildTools/LICENSE.txt.in index 35147afd..578b2923 100644 --- a/buildTools/LICENSE.txt.in +++ b/buildTools/LICENSE.txt.in @@ -1,18 +1,13 @@ -@CMAKE_PROJECT_NAME@ -- @PROJECT_DESCRIPTION@ +This end-user license agreement contains 4 separate and distinct licenses: (1) Torrent Suite™ Software Version 5.18 Open Source License (pgs. 1-32), (2) Service & Support Telemetry Module Software Version 2.0.1 End User License Agreement (pgs. 32 - 47), (3) Ion Chef™ Instrument Software Version 5.18 License Agreement (pgs. 47 - 182), and (4) Ion GeneStudio™ S5 V5.18 License Agreement (pgs. 182 - 236). -This document contains 2 separate and distinct licenses: (1) Torrent Suite(tm) Software Version 5.16 Open Source License -and (2) Service & Support Telemetry Module Software Version 2.0.1 End User License Agreement. - -(1) Torrent Suite(tm) Software Version 5.16 -======================================== - -Torrent Suite(tm) Software v5.16: This software provides for the analysis and storage of data received from -the Ion GeneStudio S5 Sequencer or the Ion GeneStudio S5 XL Sequencer, the Ion GeneStudio S5 Prime -or the Ion GeneStudio S5 Plus. +(1) Torrent Suite™ Software Version 5.18 +===================================================================== +Torrent Suite™ Software v5.18: This software provides for the analysis and storage of data received from the Ion Personal Genome Machine™ (PGM™) Sequencer, the Ion Proton™ Sequencer, the Ion S5TM Sequencer, the Ion S5TM XL Sequencer, or the Ion GeneStudio™ S5 Prime. +The Ion Chef™ System provides automated, high-throughput template preparation and chip loading for use with an Ion Personal Genome Machine™ PGMTM Sequencer, Ion Proton™ Sequencer, Ion S5™ Sequencer, Ion S5™ XL Sequencer, or the Ion GeneStudio™ S5 Prime. -January 27, 2021 +May 26th, 2022 -Copyright (C) 2011 - 2021 Life Technologies Corporation +Copyright © 2011 - 2022 Life Technologies Corporation All Rights Reserved. This program is free software; you can redistribute it and/or modify it @@ -29,17 +24,12 @@ with this program (see Section 2 below); if not, write to the Free Software Foun 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can also find the GPL version 2 on the GNU web site: https://www.gnu.org/licenses/gpl-2.0.html - -1. Third Party Software Notices and Licenses ===================================================================== - -This software uses third party software components from several sources. Portions of these software components are -copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of -source code or if a link is used to point the end-user to a source-code repository, and the source code is not -available at such site, the distributor must, for a time determined by license, offer to provide source code. -In such cases, please contact your Life Technologies representative. As well, various licenses require that the -end-user receive a copy of the license or certain notices. Such licenses and notices may be found below. -In order to use this software, the end-user must abide by the terms and conditions of these third party licenses. + 1. Third Party Software Notices and Licenses +===================================================================== + +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found below. In order to use this software, the end-user must abide by the terms and conditions of these third party licenses. + Armadillo ------------------------------------------------------------- @@ -49,622 +39,238 @@ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -Mozilla Public License Version 2.0 -------------------------------------------------------------- - -1. Definitions -------------------------------------------------------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions -------------------------------------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------------------------------------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination -------------------------------------------------------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - - - -6. Disclaimer of Warranty -------------------------------------------------------------- - -Covered Software is provided under this License on an "as is" basis, without -warranty of any kind, either expressed, implied, or statutory, including, -without limitation, warranties that the Covered Software is free of defects, -merchantable, fit for a particular purpose or non-infringing. The entire risk -as to the quality and performance of the Covered Software is with You. Should -any Covered Software prove defective in any respect, You (not any Contributor) -assume the cost of any necessary servicing, repair, or correction. This -disclaimer of warranty constitutes an essential part of this License. No use of -any Covered Software is authorized under this License except under this -disclaimer. - - -7. Limitation of Liability -------------------------------------------------------------- - -Under no circumstances and under no legal theory, whether tort (including -negligence), contract, or otherwise, shall any Contributor, or anyone who -distributes Covered Software as permitted above, be liable to You for any -direct, indirect, special, incidental, or consequential damages of any -character including, without limitation, damages for lost profits, loss of -goodwill, work stoppage, computer failure or malfunction, or any and all other -commercial damages or losses, even if such party shall have been informed of -the possibility of such damages. This limitation of liability shall not apply -to liability for death or personal injury resulting from such party's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - - -8. Litigation -------------------------------------------------------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous -------------------------------------------------------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License -------------------------------------------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------------------------- - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice -------------------------------------------------------------- - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - - -HTS Lib and Samtools -------------------------------------------------------------- - -The MIT/Expat License -Copyright (C) 2008-2014 Genome Research Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - - -VCF Lib -------------------------------------------------------------- - + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + © You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any`` + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + +HTS Lib +Samtools + + + + The MIT/Expat License +Copyright © 2008-2014 Genome Research Ltd. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + +## VCF Lib The MIT License (see text above) -Copyright (c) 2012 Erik Garrison -Blas and Lapack -------------------------------------------------------------- -Copyright (c) 1992-2013 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright © 2012 Erik Garrison -Copyright (c) 2000-2013 The University of California Berkeley. All rights reserved. +Blas -Copyright (c) 2006-2013 The University of Colorado Denver. All rights reserved. +Lapack + +Copyright © 1992-2013 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright © 2000-2013 The University of California Berkeley. All + rights reserved. +Copyright © 2006-2013 The University of Colorado Denver. All rights + reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer listed - in this license in the documentation and/or other materials - provided with the distribution. - - Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +* Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. The copyright holders provide no reassurances that the source code provided does not infringe any patent, copyright, or any other @@ -685,793 +291,608 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Django -------------------------------------------------------------- -Copyright (c) Django Software Foundation and individual contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of Django nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Cuda Toolkit -------------------------------------------------------------- -END USER LICENSE AGREEMENT (EULA) - -Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. - -1.1. Definitions - - 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. - - 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. - - 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. - -1.2. Grant of License - - 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: - - 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; (c) Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. - - 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - - 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - - 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - - 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - - 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -No Modifications -If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - -1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - -1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - -1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - -1.6. Disclaimer of Warranties and Limitations on Liability - - 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. - - 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - -1.7. Miscellaneous - - 1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - - 1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other -party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - - 1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or (c) Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. - - 1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. - 1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. - - 1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. - -1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. -Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - -1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: - - -1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - -2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - -3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html. In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: - - LLVM Release License - - University of Illinois/NCSA Open Source License Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: - - PCRE LICENCE - - PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. - - - THE BASIC LIBRARY FUNCTIONS - - Written by: Philip Hazel - Email local part: ph10 - Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. - Copyright (c) 1997-2012 University of Cambridge All rights reserved. - - PCRE JUST-IN-TIME COMPILATION SUPPORT - - Written by: Zoltan Herczeg - Email local part: hzmester - Emain domain: freemail.hu - Copyright(c) 2010-2012 Zoltan Herczeg All rights reserved. - - STACK-LESS JUST-IN-TIME COMPILER - - Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(c) 2009-2012 Zoltan Herczeg All rights reserved. - - THE C++ WRAPPER FUNCTIONS - - Contributed by: Google Inc. Copyright (c) 2007-2012, Google Inc. All rights reserved. - - THE "BSD" LICENCE - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- (C) Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright (c) 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright (C) 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## Django +Copyright © Django Software Foundation and individual contributors. -Ansible -------------------------------------------------------------- - -Kendo UI -------------------------------------------------------------- - -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright (c) 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, -but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds -of works. - -The licenses for most software and other practical works are designed to take away your -freedom to share and change the works. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change all versions of a program--to -make sure it remains free software for all its users. We, the Free Software Foundation, use -the GNU General Public License for most of our software; it applies also to any other -work released this way by its authors. You can apply it to your programs, too. -When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute copies -of free software (and charge for them if you wish), that you receive source code or can -get it if you want it, that you can change the software or use pieces of it in new free -programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking -you to surrender the rights. Therefore, you have certain responsibilities if you distribute -copies of the software, or if you modify it: responsibilities to respect the freedom of -others. -For example, if you distribute copies of such a program, whether gratis or for a fee, you -must pass on to the recipients the same freedoms that you received. You must make sure -that they, too, receive or can get the source code. And you must show them these terms -so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - - (1) assert copyright on the software, and - (2) offer you this License giving you legal permission to copy, distribute and/or modify it. -For the developers' and authors' protection, the GPL clearly explains that there is no -warranty for this free software. For both users' and authors' sake, the GPL requires that -modified versions be marked as changed, so that their problems will not be attributed -erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the -software inside them, although the manufacturer can do so. This is fundamentally -incompatible with the aim of protecting users' freedom to change the software. The -systematic pattern of such abuse occurs in the area of products for individuals to use, -which is precisely where it is most unacceptable. Therefore, we have designed this version -of the GPL to prohibit the practice for those products. If such problems arise substantially -in other domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not -allow patents to restrict development and use of software on general-purpose computers, -but in those that do, we wish to avoid the special danger that patents applied to a free -program could make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. -"This License" refers to version 3 of the GNU General Public License. -"Copyright" also means copyright-like laws that apply to other kinds of works, such as -semiconductor masks. -"The Program" refers to any copyrightable work licensed under this License. Each -licensee is addressed as "you". "Licensees" and "recipients" may be individuals or -organizations. -To "modify" a work means to copy from or adapt all or part of the work in a fashion -requiring copyright permission, other than the making of an exact copy. The resulting -work is called a "modified version" of the earlier work or a work "based on" the earlier -work. -A "covered work" means either the unmodified Program or a work based on the Program. -To "propagate" a work means to do anything with it that, without permission, would -make you directly or secondarily liable for infringement under applicable copyright law, -except executing it on a computer or modifying a private copy. Propagation includes -copying, distribution (with or without modification), making available to the public, and -in some countries other activities as well. -To "convey" a work means any kind of propagation that enables other parties to make or -receive copies. Mere interaction with a user through a computer network, with no transfer -of a copy, is not conveying. -An interactive user interface displays "Appropriate Legal Notices" to the extent that it -includes a convenient and prominently visible feature that (1) displays an appropriate -copyright notice, and (2) tells the user that there is no warranty for the work (except to -the extent that warranties are provided), that licensees may convey the work under this -License, and how to view a copy of this License. If the interface presents a list of user -commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The "source code" for a work means the preferred form of the work for making -modifications to it. "Object code" means any non-source form of a work. -A "Standard Interface" means an interface that either is an official standard defined by a -recognized standards body, or, in the case of interfaces specified for a particular -programming language, one that is widely used among developers working in that -language. -The "System Libraries" of an executable work include anything, other than the work as a -whole, that (a) is included in the normal form of packaging a Major Component, but -which is not part of that Major Component, and (b) serves only to enable use of the work -with that Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A "Major Component", in -this context, means a major essential component (kernel, window system, and so on) of -the specific operating system (if any) on which the executable work runs, or a compiler -used to produce the work, or an object code interpreter used to run it. -The "Corresponding Source" for a work in object code form means all the source code -needed to generate, install, and (for an executable work) run the object code and to -modify the work, including scripts to control those activities. However, it does not -include the work's System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but which are not part -of the work. For example, Corresponding Source includes interface definition files -associated with source files for the work, and the source code for shared libraries and -dynamically linked subprograms that the work is specifically designed to require, such as -by intimate data communication or control flow between those subprograms and other -parts of the work. -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the -Program, and are irrevocable provided the stated conditions are met. This License -explicitly affirms your unlimited permission to run the unmodified Program. The output -from running a covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your rights of fair use or -other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey covered -works to others for the sole purpose of having them make modifications exclusively for -you, or provide you with facilities for running those works, provided that you comply -with the terms of this License in conveying all material for which you do not control -copyright. Those thus making or running the covered works for you must do so -exclusively on your behalf, under your direction and control, on terms that prohibit them -from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated -below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any -applicable law fulfilling obligations under article 11 of the WIPO copyright treaty -adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of -such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of -technological measures to the extent such circumvention is effected by exercising rights -under this License with respect to the covered work, and you disclaim any intention to -limit operation or modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any -medium, provided that you conspicuously and appropriately publish on each copy an -appropriate copyright notice; keep intact all notices stating that this License and any non- -permissive terms added in accord with section 7 apply to the code; keep intact all notices -of the absence of any warranty; and give all recipients a copy of this License along with -the Program. -You may charge any price or no price for each copy that you convey, and you may offer -support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from -the Program, in the form of source code under the terms of section 4, provided that you -also meet all of these conditions: - a) The work must carry prominent notices stating that you modified it, and giving -a relevant date. - b) The work must carry prominent notices stating that it is released under this -License and any conditions added under section 7. This requirement modifies the -requirement in section 4 to "keep intact all notices". - c) You must license the entire work, as a whole, under this License to anyone who -comes into possession of a copy. This License will therefore apply, along with any -applicable section 7 additional terms, to the whole of the work, and all its parts, -regardless of how they are packaged. This License gives no permission to license -the work in any other way, but it does not invalidate such permission if you have -separately received it. - d) If the work has interactive user interfaces, each must display Appropriate Legal -Notices; however, if the Program has interactive interfaces that do not display -Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are -not by their nature extensions of the covered work, and which are not combined with it -such as to form a larger program, in or on a volume of a storage or distribution medium, is -called an "aggregate" if the compilation and its resulting copyright are not used to limit -the access or legal rights of the compilation's users beyond what the individual works -permit. Inclusion of a covered work in an aggregate does not cause this License to apply -to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, -provided that you also convey the machine-readable Corresponding Source under the -terms of this License, in one of these ways: - a) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by the Corresponding Source fixed -on a durable physical medium customarily used for software interchange. - b) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by a written offer, valid for at least -three years and valid for as long as you offer spare parts or customer support for -that product model, to give anyone who possesses the object code either (1) a -copy of the Corresponding Source for all the software in the product that is -covered by this License, on a durable physical medium customarily used for -software interchange, for a price no more than your reasonable cost of physically -performing this conveying of source, or (2) access to copy the Corresponding -Source from a network server at no charge. - c) Convey individual copies of the object code with a copy of the written offer to -provide the Corresponding Source. This alternative is allowed only occasionally -and noncommercially, and only if you received the object code with such an offer, -in accord with subsection 6b. - d) Convey the object code by offering access from a designated place (gratis or -for a charge), and offer equivalent access to the Corresponding Source in the same -way through the same place at no further charge. You need not require recipients -to copy the Corresponding Source along with the object code. If the place to copy -the object code is a network server, the Corresponding Source may be on a -different server (operated by you or a third party) that supports equivalent -copying facilities, provided you maintain clear directions next to the object code -saying where to find the Corresponding Source. Regardless of what server hosts -the Corresponding Source, you remain obligated to ensure that it is available for as -long as needed to satisfy these requirements. - e) Convey the object code using peer-to-peer transmission, provided you inform -other peers where the object code and Corresponding Source of the work are -being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the object -code work. -A "User Product" is either (1) a "consumer product", which means any tangible personal -property which is normally used for personal, family, or household purposes, or (2) -anything designed or sold for incorporation into a dwelling. In determining whether a -product is a consumer product, doubtful cases shall be resolved in favor of coverage. For -a particular product received by a particular user, "normally used" refers to a typical or -common use of that class of product, regardless of the status of the particular user or of -the way in which the particular user actually uses, or expects or is expected to use, the -product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent the -only significant mode of use of the product. -"Installation Information" for a User Product means any methods, procedures, -authorization keys, or other information required to install and execute modified versions -of a covered work in that User Product from a modified version of its Corresponding -Source. The information must suffice to ensure that the continued functioning of the -modified object code is in no case prevented or interfered with solely because -modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, -a User Product, and the conveying occurs as part of a transaction in which the right of -possession and use of the User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the Corresponding Source -conveyed under this section must be accompanied by the Installation Information. But -this requirement does not apply if neither you nor any third party retains the ability to -install modified object code on the User Product (for example, the work has been -installed in ROM). -The requirement to provide Installation Information does not include a requirement to -continue to provide support service, warranty, or updates for a work that has been -modified or installed by the recipient, or for the User Product in which it has been -modified or installed. Access to a network may be denied when the modification itself -materially and adversely affects the operation of the network or violates the rules and -protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with -this section must be in a format that is publicly documented (and with an implementation -available to the public in source code form), and must require no special password or key -for unpacking, reading or copying. - -7. Additional Terms. -"Additional permissions" are terms that supplement the terms of this License by making -exceptions from one or more of its conditions. Additional permissions that are applicable -to the entire Program shall be treated as though they were included in this License, to the -extent that they are valid under applicable law. If additional permissions apply only to -part of the Program, that part may be used separately under those permissions, but the -entire Program remains governed by this License without regard to the additional -permissions. -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional permissions -may be written to require their own removal in certain cases when you modify the work.) -You may place additional permissions on material, added by you to a covered work, for -which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered -work, you may (if authorized by the copyright holders of that material) supplement the -terms of this License with terms: - a) Disclaiming warranty or limiting liability differently from the terms of sections -15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or author -attributions in that material or in the Appropriate Legal Notices displayed by -works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or requiring that -modified versions of such material be marked in reasonable ways as different -from the original version; or - d) Limiting the use for publicity purposes of names of licensors or authors of the -material; or - e) Declining to grant rights under trademark law for use of some trade names, -trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that material by anyone -who conveys the material (or modified versions of it) with contractual -assumptions of liability to the recipient, for any liability that these contractual -assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered "further restrictions" within the -meaning of section 10. If the Program as you received it, or any part of it, contains a -notice stating that it is governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains a further restriction -but permits relicensing or conveying under this License, you may add to a covered work -material governed by the terms of that license document, provided that the further -restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the -relevant source files, a statement of the additional terms that apply to those files, or a -notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately -written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under -this License. Any attempt otherwise to propagate or modify it is void, and will -automatically terminate your rights under this License (including any patent licenses -granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular -copyright holder is reinstated (a) provisionally, unless and until the copyright holder -explicitly and finally terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to 60 days after the -cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the -copyright holder notifies you of the violation by some reasonable means, this is the first -time you have received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after your receipt of the -notice. -Termination of your rights under this section does not terminate the licenses of parties -who have received copies or rights from you under this License. If your rights have been -terminated and not permanently reinstated, you do not qualify to receive new licenses for -the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the -Program. Ancillary propagation of a covered work occurring solely as a consequence of -using peer-to-peer transmission to receive a copy likewise does not require acceptance. -However, nothing other than this License grants you permission to propagate or modify -any covered work. These actions infringe copyright if you do not accept this License. -Therefore, by modifying or propagating a covered work, you indicate your acceptance of -this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from -the original licensors, to run, modify and propagate that work, subject to this License. -You are not responsible for enforcing compliance by third parties with this License. -An "entity transaction" is a transaction transferring control of an organization, or -substantially all assets of one, or subdividing an organization, or merging organizations. If -propagation of a covered work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever licenses to the work -the party's predecessor in interest had or could give under the previous paragraph, plus a -right to possession of the Corresponding Source of the work from the predecessor in -interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or -affirmed under this License. For example, you may not impose a license fee, royalty, or -other charge for exercise of rights granted under this License, and you may not initiate -litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent -claim is infringed by making, using, selling, offering for sale, or importing the Program or -any portion of it. - -11. Patents. -A "contributor" is a copyright holder who authorizes use under this License of the -Program or a work on which the Program is based. The work thus licensed is called the -contributor's "contributor version". -A contributor's "essential patent claims" are all patent claims owned or controlled by the -contributor, whether already acquired or hereafter acquired, that would be infringed by -some manner, permitted by this License, of making, using, or selling its contributor -version, but do not include claims that would be infringed only as a consequence of -further modification of the contributor version. For purposes of this definition, "control" -includes the right to grant patent sublicenses in a manner consistent with the requirements -of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under -the contributor's essential patent claims, to make, use, sell, offer for sale, import and -otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a "patent license" is any express agreement or -commitment, however denominated, not to enforce a patent (such as an express -permission to practice a patent or covenant not to sue for patent infringement). To "grant" -such a patent license to a party means to make such an agreement or commitment not to -enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of charge and -under the terms of this License, through a publicly available network server or other -readily accessible means, then you must either (1) cause the Corresponding Source to be -so available, or (2) arrange to deprive yourself of the benefit of the patent license for this -particular work, or (3) arrange, in a manner consistent with the requirements of this -License, to extend the patent license to downstream recipients. "Knowingly relying" -means you have actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work in a country, -would infringe one or more identifiable patents in that country that you have reason to -believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or -propagate by procuring conveyance of, a covered work, and grant a patent license to -some of the parties receiving the covered work authorizing them to use, propagate, -modify or convey a specific copy of the covered work, then the patent license you grant -is automatically extended to all recipients of the covered work and works based on it. -A patent license is "discriminatory" if it does not include within the scope of its coverage, -prohibits the exercise of, or is conditioned on the non-exercise of one or more of the -rights that are specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is in the business of -distributing software, under which you make payment to the third party based on the -extent of your activity of conveying the work, and under which the third party grants, to -any of the parties who would receive the covered work from you, a discriminatory patent -license (a) in connection with copies of the covered work conveyed by you (or copies -made from those copies), or (b) primarily for and in connection with specific products or -compilations that contain the covered work, unless you entered into that arrangement, or -that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or -other defenses to infringement that may otherwise be available to you under applicable -patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that -contradict the conditions of this License, they do not excuse you from the conditions of -this License. If you cannot convey a covered work so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as a consequence -you may not convey it at all. For example, if you agree to terms that obligate you to -collect a royalty for further conveying from those to whom you convey the Program, the -only way you could satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or -combine any covered work with a work licensed under version 3 of the GNU Affero -General Public License into a single combined work, and to convey the resulting work. -The terms of this License will continue to apply to the part which is the covered work, but -the special requirements of the GNU Affero General Public License, section 13, -concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in spirit to the -present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a -certain numbered version of the GNU General Public License "or any later version" -applies to it, you have the option of following the terms and conditions either of that -numbered version or of any later version published by the Free Software Foundation. If -the Program does not specify a version number of the GNU General Public License, you -may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU -General Public License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no -additional obligations are imposed on any author or copyright holder as a result of your -choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT -PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN -WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF -THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO -MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE -OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR -OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given -local legal effect according to their terms, reviewing courts shall apply local law that most -closely approximates an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a copy of the Program -in return for a fee. - -ion_timeout.sh -------------------------------------------------------------- +All rights reserved. -GNU Lesser General Public License (LGPL) -Version 2.1, February 1999 +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -Preamble +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. -This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. +3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. -When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. -For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. -We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. +## Cuda Toolkit -To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. +END USER LICENSE AGREEMENT (EULA) -Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. -Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. +1.1. Definitions -When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. -We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. -For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. -In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. -Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +1.2. Grant of License -The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- + 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; © Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. -0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. +No Modifications -2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: +If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - a) The modified work must itself be a software library. - b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. - c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. - d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. +1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) +1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs ©(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. +1.6. Disclaimer of Warranties and Limitations on Liability + 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. + 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. +1.7. Miscellaneous -3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. +1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. +1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - This option is useful when you wish to copy part of the code of the Library into a program that is not a library. +1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or © Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. -4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. -If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. +1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. -5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. +1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. +1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. - When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. +1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. - If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. +Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. +1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: -6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. +1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: +2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. - c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html + In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. -It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. +4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: +### LLVM Release License +University of Illinois/NCSA Open Source License Copyright © 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. -7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: +5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: +### PCRE LICENCE +-- +PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. +### THE BASIC LIBRARY FUNCTIONS +-- +Written by: Philip Hazel Email local part: ph10 Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. Copyright © 1997-2012 University of Cambridge All rights reserved. +### PCRE JUST-IN-TIME COMPILATION SUPPORT +-- +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright© 2010-2012 Zoltan Herczeg All rights reserved. STACK-LESS JUST-IN-TIME COMPILER +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright© 2009-2012 Zoltan Herczeg All rights reserved. THE C++ WRAPPER FUNCTIONS +Contributed by: Google Inc. Copyright © 2007-2012, Google Inc. All rights reserved. THE "BSD" LICENCE +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. - b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright © 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. +7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright © 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. +8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright © 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. +9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright © 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. +10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- © Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. +11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright © 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright © 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright © 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. +14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright © 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. +15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. +Ansible +Kendo UI - NO WARRANTY + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + Copyright © 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies of this license document, + but changing it is not allowed. + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds + of works. + The licenses for most software and other practical works are designed to take away your + freedom to share and change the works. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change all versions of a program--to + make sure it remains free software for all its users. We, the Free Software Foundation, use + the GNU General Public License for most of our software; it applies also to any other + work released this way by its authors. You can apply it to your programs, too. + When we speak of free software, we are referring to freedom, not price. Our General + Public Licenses are designed to make sure that you have the freedom to distribute copies + of free software (and charge for them if you wish), that you receive source code or can + get it if you want it, that you can change the software or use pieces of it in new free + programs, and that you know you can do these things. + To protect your rights, we need to prevent others from denying you these rights or asking + you to surrender the rights. Therefore, you have certain responsibilities if you distribute + copies of the software, or if you modify it: responsibilities to respect the freedom of + others. + For example, if you distribute copies of such a program, whether gratis or for a fee, you + must pass on to the recipients the same freedoms that you received. You must make sure + that they, too, receive or can get the source code. And you must show them these terms + so they know their rights. + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright + on the software, and (2) offer you this License giving you legal permission to copy, + distribute and/or modify it. + For the developers' and authors' protection, the GPL clearly explains that there is no + warranty for this free software. For both users' and authors' sake, the GPL requires that + modified versions be marked as changed, so that their problems will not be attributed + erroneously to authors of previous versions. + Some devices are designed to deny users access to install or run modified versions of the + software inside them, although the manufacturer can do so. This is fundamentally + incompatible with the aim of protecting users' freedom to change the software. The + systematic pattern of such abuse occurs in the area of products for individuals to use, + which is precisely where it is most unacceptable. Therefore, we have designed this version + of the GPL to prohibit the practice for those products. If such problems arise substantially + in other domains, we stand ready to extend this provision to those domains in future + versions of the GPL, as needed to protect the freedom of users. + Finally, every program is threatened constantly by software patents. States should not + allow patents to restrict development and use of software on general-purpose computers, + but in those that do, we wish to avoid the special danger that patents applied to a free + program could make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + The precise terms and conditions for copying, distribution and modification follow. + TERMS AND CONDITIONS + 0. Definitions. + "This License" refers to version 3 of the GNU General Public License. + "Copyright" also means copyright-like laws that apply to other kinds of works, such as + semiconductor masks. + "The Program" refers to any copyrightable work licensed under this License. Each + licensee is addressed as "you". "Licensees" and "recipients" may be individuals or + organizations. + To "modify" a work means to copy from or adapt all or part of the work in a fashion + requiring copyright permission, other than the making of an exact copy. The resulting + work is called a "modified version" of the earlier work or a work "based on" the earlier + work. + A "covered work" means either the unmodified Program or a work based on the Program. + To "propagate" a work means to do anything with it that, without permission, would + make you directly or secondarily liable for infringement under applicable copyright law, + except executing it on a computer or modifying a private copy. Propagation includes + copying, distribution (with or without modification), making available to the public, and + in some countries other activities as well. + To "convey" a work means any kind of propagation that enables other parties to make or + receive copies. Mere interaction with a user through a computer network, with no transfer + of a copy, is not conveying. + An interactive user interface displays "Appropriate Legal Notices" to the extent that it + includes a convenient and prominently visible feature that (1) displays an appropriate + copyright notice, and (2) tells the user that there is no warranty for the work (except to + the extent that warranties are provided), that licensees may convey the work under this + License, and how to view a copy of this License. If the interface presents a list of user + commands or options, such as a menu, a prominent item in the list meets this criterion. + 1. Source Code. + The "source code" for a work means the preferred form of the work for making + modifications to it. "Object code" means any non-source form of a work. + A "Standard Interface" means an interface that either is an official standard defined by a + recognized standards body, or, in the case of interfaces specified for a particular + programming language, one that is widely used among developers working in that + language. + The "System Libraries" of an executable work include anything, other than the work as a + whole, that (a) is included in the normal form of packaging a Major Component, but + which is not part of that Major Component, and (b) serves only to enable use of the work + with that Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A "Major Component", in + this context, means a major essential component (kernel, window system, and so on) of + the specific operating system (if any) on which the executable work runs, or a compiler + used to produce the work, or an object code interpreter used to run it. + The "Corresponding Source" for a work in object code form means all the source code + needed to generate, install, and (for an executable work) run the object code and to + modify the work, including scripts to control those activities. However, it does not + include the work's System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but which are not part + of the work. For example, Corresponding Source includes interface definition files + associated with source files for the work, and the source code for shared libraries and + dynamically linked subprograms that the work is specifically designed to require, such as + by intimate data communication or control flow between those subprograms and other + parts of the work. + The Corresponding Source need not include anything that users can regenerate + automatically from other parts of the Corresponding Source. + The Corresponding Source for a work in source code form is that same work. + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the + Program, and are irrevocable provided the stated conditions are met. This License + explicitly affirms your unlimited permission to run the unmodified Program. The output + from running a covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your rights of fair use or + other equivalent, as provided by copyright law. + You may make, run and propagate covered works that you do not convey, without + conditions so long as your license otherwise remains in force. You may convey covered + works to others for the sole purpose of having them make modifications exclusively for + you, or provide you with facilities for running those works, provided that you comply + with the terms of this License in conveying all material for which you do not control + copyright. Those thus making or running the covered works for you must do so + exclusively on your behalf, under your direction and control, on terms that prohibit them + from making any copies of your copyrighted material outside their relationship with you. + Conveying under any other circumstances is permitted solely under the conditions stated + below. Sublicensing is not allowed; section 10 makes it unnecessary. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any + applicable law fulfilling obligations under article 11 of the WIPO copyright treaty + adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of + such measures. + When you convey a covered work, you waive any legal power to forbid circumvention of + technological measures to the extent such circumvention is effected by exercising rights + under this License with respect to the covered work, and you disclaim any intention to + limit operation or modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of technological measures. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any + medium, provided that you conspicuously and appropriately publish on each copy an + appropriate copyright notice; keep intact all notices stating that this License and any non- + permissive terms added in accord with section 7 apply to the code; keep intact all notices + of the absence of any warranty; and give all recipients a copy of this License along with + the Program. + You may charge any price or no price for each copy that you convey, and you may offer + support or warranty protection for a fee. + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from + the Program, in the form of source code under the terms of section 4, provided that you + also meet all of these conditions: + * a) The work must carry prominent notices stating that you modified it, and giving + a relevant date. + * b) The work must carry prominent notices stating that it is released under this + License and any conditions added under section 7. This requirement modifies the + requirement in section 4 to "keep intact all notices". + * c) You must license the entire work, as a whole, under this License to anyone who + comes into possession of a copy. This License will therefore apply, along with any + applicable section 7 additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no permission to license + the work in any other way, but it does not invalidate such permission if you have + separately received it. + * d) If the work has interactive user interfaces, each must display Appropriate Legal + Notices; however, if the Program has interactive interfaces that do not display + Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are + not by their nature extensions of the covered work, and which are not combined with it + such as to form a larger program, in or on a volume of a storage or distribution medium, is + called an "aggregate" if the compilation and its resulting copyright are not used to limit + the access or legal rights of the compilation's users beyond what the individual works + permit. Inclusion of a covered work in an aggregate does not cause this License to apply + to the other parts of the aggregate. + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, + provided that you also convey the machine-readable Corresponding Source under the + terms of this License, in one of these ways: + * a) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by the Corresponding Source fixed + on a durable physical medium customarily used for software interchange. + * b) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by a written offer, valid for at least + three years and valid for as long as you offer spare parts or customer support for + that product model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the product that is + covered by this License, on a durable physical medium customarily used for + software interchange, for a price no more than your reasonable cost of physically + performing this conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. + * c) Convey individual copies of the object code with a copy of the written offer to + provide the Corresponding Source. This alternative is allowed only occasionally + and noncommercially, and only if you received the object code with such an offer, + in accord with subsection 6b. + * d) Convey the object code by offering access from a designated place (gratis or + for a charge), and offer equivalent access to the Corresponding Source in the same + way through the same place at no further charge. You need not require recipients + to copy the Corresponding Source along with the object code. If the place to copy + the object code is a network server, the Corresponding Source may be on a + different server (operated by you or a third party) that supports equivalent + copying facilities, provided you maintain clear directions next to the object code + saying where to find the Corresponding Source. Regardless of what server hosts + the Corresponding Source, you remain obligated to ensure that it is available for as + long as needed to satisfy these requirements. + * e) Convey the object code using peer-to-peer transmission, provided you inform + other peers where the object code and Corresponding Source of the work are + being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the + Corresponding Source as a System Library, need not be included in conveying the object + code work. + A "User Product" is either (1) a "consumer product", which means any tangible personal + property which is normally used for personal, family, or household purposes, or (2) + anything designed or sold for incorporation into a dwelling. In determining whether a + product is a consumer product, doubtful cases shall be resolved in favor of coverage. For + a particular product received by a particular user, "normally used" refers to a typical or + common use of that class of product, regardless of the status of the particular user or of + the way in which the particular user actually uses, or expects or is expected to use, the + product. A product is a consumer product regardless of whether the product has + substantial commercial, industrial or non-consumer uses, unless such uses represent the + only significant mode of use of the product. + "Installation Information" for a User Product means any methods, procedures, + authorization keys, or other information required to install and execute modified versions + of a covered work in that User Product from a modified version of its Corresponding + Source. The information must suffice to ensure that the continued functioning of the + modified object code is in no case prevented or interfered with solely because + modification has been made. + If you convey an object code work under this section in, or with, or specifically for use in, + a User Product, and the conveying occurs as part of a transaction in which the right of + possession and use of the User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the Corresponding Source + conveyed under this section must be accompanied by the Installation Information. But + this requirement does not apply if neither you nor any third party retains the ability to + install modified object code on the User Product (for example, the work has been + installed in ROM). + The requirement to provide Installation Information does not include a requirement to + continue to provide support service, warranty, or updates for a work that has been + modified or installed by the recipient, or for the User Product in which it has been + modified or installed. Access to a network may be denied when the modification itself + materially and adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + Corresponding Source conveyed, and Installation Information provided, in accord with + this section must be in a format that is publicly documented (and with an implementation + available to the public in source code form), and must require no special password or key + for unpacking, reading or copying. + 7. Additional Terms. + "Additional permissions" are terms that supplement the terms of this License by making + exceptions from one or more of its conditions. Additional permissions that are applicable + to the entire Program shall be treated as though they were included in this License, to the + extent that they are valid under applicable law. If additional permissions apply only to + part of the Program, that part may be used separately under those permissions, but the + entire Program remains governed by this License without regard to the additional + permissions. + When you convey a copy of a covered work, you may at your option remove any + additional permissions from that copy, or from any part of it. (Additional permissions + may be written to require their own removal in certain cases when you modify the work.) + You may place additional permissions on material, added by you to a covered work, for + which you have or can give appropriate copyright permission. + Notwithstanding any other provision of this License, for material you add to a covered + work, you may (if authorized by the copyright holders of that material) supplement the + terms of this License with terms: + * a) Disclaiming warranty or limiting liability differently from the terms of sections + 15 and 16 of this License; or + * b) Requiring preservation of specified reasonable legal notices or author + attributions in that material or in the Appropriate Legal Notices displayed by + works containing it; or + * c) Prohibiting misrepresentation of the origin of that material, or requiring that + modified versions of such material be marked in reasonable ways as different + from the original version; or + * d) Limiting the use for publicity purposes of names of licensors or authors of the + material; or + * e) Declining to grant rights under trademark law for use of some trade names, + trademarks, or service marks; or + * f) Requiring indemnification of licensors and authors of that material by anyone + who conveys the material (or modified versions of it) with contractual + assumptions of liability to the recipient, for any liability that these contractual + assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered "further restrictions" within the + meaning of section 10. If the Program as you received it, or any part of it, contains a + notice stating that it is governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains a further restriction + but permits relicensing or conveying under this License, you may add to a covered work + material governed by the terms of that license document, provided that the further + restriction does not survive such relicensing or conveying. + If you add terms to a covered work in accord with this section, you must place, in the + relevant source files, a statement of the additional terms that apply to those files, or a + notice indicating where to find the applicable terms. + Additional terms, permissive or non-permissive, may be stated in the form of a separately + written license, or stated as exceptions; the above requirements apply either way. + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under + this License. Any attempt otherwise to propagate or modify it is void, and will + automatically terminate your rights under this License (including any patent licenses + granted under the third paragraph of section 11). + However, if you cease all violation of this License, then your license from a particular + copyright holder is reinstated (a) provisionally, unless and until the copyright holder + explicitly and finally terminates your license, and (b) permanently, if the copyright holder + fails to notify you of the violation by some reasonable means prior to 60 days after the + cessation. + Moreover, your license from a particular copyright holder is reinstated permanently if the + copyright holder notifies you of the violation by some reasonable means, this is the first + time you have received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after your receipt of the + notice. + Termination of your rights under this section does not terminate the licenses of parties + who have received copies or rights from you under this License. If your rights have been + terminated and not permanently reinstated, you do not qualify to receive new licenses for + the same material under section 10. + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the + Program. Ancillary propagation of a covered work occurring solely as a consequence of + using peer-to-peer transmission to receive a copy likewise does not require acceptance. + However, nothing other than this License grants you permission to propagate or modify + any covered work. These actions infringe copyright if you do not accept this License. + Therefore, by modifying or propagating a covered work, you indicate your acceptance of + this License to do so. + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from + the original licensors, to run, modify and propagate that work, subject to this License. + You are not responsible for enforcing compliance by third parties with this License. + An "entity transaction" is a transaction transferring control of an organization, or + substantially all assets of one, or subdividing an organization, or merging organizations. If + propagation of a covered work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever licenses to the work + the party's predecessor in interest had or could give under the previous paragraph, plus a + right to possession of the Corresponding Source of the work from the predecessor in + interest, if the predecessor has it or can get it with reasonable efforts. + You may not impose any further restrictions on the exercise of the rights granted or + affirmed under this License. For example, you may not impose a license fee, royalty, or + other charge for exercise of rights granted under this License, and you may not initiate + litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent + claim is infringed by making, using, selling, offering for sale, or importing the Program or + any portion of it. + 11. Patents. + A "contributor" is a copyright holder who authorizes use under this License of the + Program or a work on which the Program is based. The work thus licensed is called the + contributor's "contributor version". + A contributor's "essential patent claims" are all patent claims owned or controlled by the + contributor, whether already acquired or hereafter acquired, that would be infringed by + some manner, permitted by this License, of making, using, or selling its contributor + version, but do not include claims that would be infringed only as a consequence of + further modification of the contributor version. For purposes of this definition, "control" + includes the right to grant patent sublicenses in a manner consistent with the requirements + of this License. + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under + the contributor's essential patent claims, to make, use, sell, offer for sale, import and + otherwise run, modify and propagate the contents of its contributor version. + In the following three paragraphs, a "patent license" is any express agreement or + commitment, however denominated, not to enforce a patent (such as an express + permission to practice a patent or covenant not to sue for patent infringement). To "grant" + such a patent license to a party means to make such an agreement or commitment not to + enforce a patent against the party. + If you convey a covered work, knowingly relying on a patent license, and the + Corresponding Source of the work is not available for anyone to copy, free of charge and + under the terms of this License, through a publicly available network server or other + readily accessible means, then you must either (1) cause the Corresponding Source to be + so available, or (2) arrange to deprive yourself of the benefit of the patent license for this + particular work, or (3) arrange, in a manner consistent with the requirements of this + License, to extend the patent license to downstream recipients. "Knowingly relying" + means you have actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work in a country, + would infringe one or more identifiable patents in that country that you have reason to + believe are valid. + If, pursuant to or in connection with a single transaction or arrangement, you convey, or + propagate by procuring conveyance of, a covered work, and grant a patent license to + some of the parties receiving the covered work authorizing them to use, propagate, + modify or convey a specific copy of the covered work, then the patent license you grant + is automatically extended to all recipients of the covered work and works based on it. + A patent license is "discriminatory" if it does not include within the scope of its coverage, + prohibits the exercise of, or is conditioned on the non-exercise of one or more of the + rights that are specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is in the business of + distributing software, under which you make payment to the third party based on the + extent of your activity of conveying the work, and under which the third party grants, to + any of the parties who would receive the covered work from you, a discriminatory patent + license (a) in connection with copies of the covered work conveyed by you (or copies + made from those copies), or (b) primarily for and in connection with specific products or + compilations that contain the covered work, unless you entered into that arrangement, or + that patent license was granted, prior to 28 March 2007. + Nothing in this License shall be construed as excluding or limiting any implied license or + other defenses to infringement that may otherwise be available to you under applicable + patent law. + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that + contradict the conditions of this License, they do not excuse you from the conditions of + this License. If you cannot convey a covered work so as to satisfy simultaneously your + obligations under this License and any other pertinent obligations, then as a consequence + you may not convey it at all. For example, if you agree to terms that obligate you to + collect a royalty for further conveying from those to whom you convey the Program, the + only way you could satisfy both those terms and this License would be to refrain entirely + from conveying the Program. + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or + combine any covered work with a work licensed under version 3 of the GNU Affero + General Public License into a single combined work, and to convey the resulting work. + The terms of this License will continue to apply to the part which is the covered work, but + the special requirements of the GNU Affero General Public License, section 13, + concerning interaction through a network will apply to the combination as such. + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU + General Public License from time to time. Such new versions will be similar in spirit to the + present version, but may differ in detail to address new problems or concerns. + Each version is given a distinguishing version number. If the Program specifies that a + certain numbered version of the GNU General Public License "or any later version" + applies to it, you have the option of following the terms and conditions either of that + numbered version or of any later version published by the Free Software Foundation. If + the Program does not specify a version number of the GNU General Public License, you + may choose any version ever published by the Free Software Foundation. + If the Program specifies that a proxy can decide which future versions of the GNU + General Public License can be used, that proxy's public statement of acceptance of a + version permanently authorizes you to choose that version for the Program. + Later license versions may give you additional or different permissions. However, no + additional obligations are imposed on any author or copyright holder as a result of your + choosing to follow a later version. + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT + PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN + WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE + THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER + EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF + THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, + YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR + CORRECTION. + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO + MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE + OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO + LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES + SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM + TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given + local legal effect according to their terms, reviewing courts shall apply local law that most + closely approximates an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a copy of the Program + in return for a fee. -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OEM Plupload -------------------------------------------------------------------------- -GNU General Public License + GNU General Public License Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc., - -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Copyright © 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA See Section 2 below for text of GPL v2.0 license. Font awesome -------------------------------------------------------------------------- The Font Awesome font is licensed under the SIL OFL 1.1: This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ------------------------------------------------------------ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- @@ -1567,992 +988,406 @@ Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: The MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -2. GNU General Public License version 2 (GPL v2) +===================================================================== + 2. GNU General Public License version 2 (GPL v2) ===================================================================== GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc. +Version 2, June 1991 + +Copyright © 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -Preamble +###Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - The precise terms and conditions for copying, distribution and modification follow. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. - 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +###End of (1) Torrent Suite™ Software Version 5.18 Open Source License - - - -**(2) BEGINS:** +**************************************************** + (2) BEGINS: +================================================================================ LIFE TECHNOLOGIES CORPORATION END USER LICENSE AGREEMENT +## FOR SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 -FOR SERVICE & SUPPORT TELEMETRY MODULE Software VERSION 2.0.1 - -NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE -CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE -TECHNOLOGIES") REGARDING THIS SOFTWARE PRODUCT. THIS AGREEMENT CONTAINS -WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION -AND/OR USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS -AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, -AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL -AND/OR USE THE SOFTWARE. - -IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY -RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES -AND YOUR PURCHASE PRICE WILL BE REFUNDED. - -This Life Technologies End User License Agreement accompanies a Life -Technologies software product ("Software") and related explanatory -materials ("Documentation"). The term "Software" also includes any -upgrades, modified versions, updates, additions and copies of the -Software licensed to you by Life Technologies. The term "License" or -"Agreement" means this End User Software License Agreement. The term -"you" or "Licensee" means the purchaser or user of this license to the -Software. This Agreement includes herein by reference any additional use -restrictions or Limited Use Label Licenses listed in or on user manuals, -labeling, product inserts, technical notes, literature (including but -not limited to Documentation) and/or splash screens related to this -Software ("Supplemental Terms"). To the extent such Supplemental Terms -are more restrictive than those contained herein, the more restrictive -usage terms shall control. - -This Software may use third-party software components from several -sources. Portions of these software components are copyrighted and -licensed by their respective owners. Various components require -distribution of source code or if a URL is used to point the end-user to -a source-code repository, and the source code is not available at such -site, the distributor must, for a time determined by the license, offer -to provide the source code. In such cases, please contact your Life -Technologies representative. As well, various licenses require that the -end-user receive a copy of the license. Such licenses, if any, may be -found in Appendix 1 below. In order to use this Software, the end-user -must abide by the terms and conditions of these third-party licenses. +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THIS SOFTWARE PRODUCT. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND/OR USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND/OR USE THE SOFTWARE. +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. TITLE -Title, ownership rights and intellectual property rights in and to the -Software and Documentation shall at all times remain with Life -Technologies and its subsidiaries, and their suppliers. All rights not -specifically granted by this License, including Federal and -international copyrights, are reserved by Life Technologies or their -respective owners. +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. COPYRIGHT -The Software, including its structure, organization, code, user -interface and associated Documentation, is a proprietary product of Life -Technologies or its suppliers, and is protected by international laws of -copyright. The law provides for civil and criminal penalties for anyone -in violation of the laws of copyright. +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. LICENSE USE OF THE SOFTWARE -Subject to the terms and conditions of this Agreement, Life Technologies -grants the purchaser of this product a non-exclusive, non-transferable -license, with no rights to sublicense, to install and/or use the -Software only in object code (machine readable) format and only on -single computers owned or controlled by you (or in a single network, if -your Software is designated as a network version) for the sole purpose -of managing, analyzing, viewing, editing, reporting and/or printing data -provided by Life Technologies or generated by Life Technologies -instruments for research use only. - -If the software uses registration codes, access to the number of -licenses copies of Software is controlled by a registration code. For -example, if you have a registration code that enables you to use three -copies of Software simultaneously, you cannot install Software on more -than three separate computers. - -You may make one copy of the Software in machine-readable form solely -for backup or archival purposes. You must reproduce on any such copy all -copyright notices and any other proprietary legends found on the -original. You may not make any other copies of the Software. +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable license, with no rights to sublicense, to install and/or use the Software only in object code (machine readable) format and only on single computers owned or controlled by you (or in a single network, if your Software is designated as a network version) for the sole purpose of managing, analyzing, viewing, editing, reporting and/or printing data provided by Life Technologies or generated by Life Technologies instruments for research use only. +If the software uses registration codes, access to the number of licenses copies of Software is controlled by a registration code. For example, if you have a registration code that enables you to use three copies of Software simultaneously, you cannot install Software on more than three separate computers. +You may make one copy of the Software in machine-readable form solely for backup or archival purposes. You must reproduce on any such copy all copyright notices and any other proprietary legends found on the original. You may not make any other copies of the Software. RESTRICTIONS -Unless permitted by applicable law, and in such cases only to the extent -permitted by such law: - -1. You shall not copy, transfer (except temporarily in the event of a - computer malfunction), rent, modify, distribute, electronically - transmit, lend, lease, use, create derivative works based on the - Software or merge the Software, or the associated Documentation, in - whole or in part, whether alone or combined with any other products, - except as expressly permitted in this Agreement. - -2. You shall not reverse assemble, decompile, discover the source code - or otherwise reverse engineer the Software. - -3. You shall not remove any proprietary, copyright, trade secret or - warning legend from the Software or any Documentation. +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: -4. You agree to comply fully with all export laws and restrictions and - regulations of the United States or applicable foreign agencies or - authorities. You agree that you will not export or reexport, - directly or indirectly, the Software and the Documentation into any - country prohibited by the United States Export Administration Act - and the regulations thereunder or other applicable United States - law. - -5. You may not use the Software or Documentation for the benefit of any - third party by means of an outsourcing or service bureau - relationship or for any similar commercial time-sharing or - third-party training use. - -6. You agree to use Software, and data generated by Software, for the - sole purpose of review and analysis of data generated by Life - Technologies instruments. +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You agree to use Software, and data generated by Software, for the sole purpose of review and analysis of data generated by Life Technologies instruments. TRIAL -If this license is granted on a trial basis, you are hereby notified -that license management software may be included to automatically cause -the Software to cease functioning at the end of the trial period (and in -any case you agree to discontinue usage at the end of the trial period -or at the express written request of Life Technologies). +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). TERMINATION -You may terminate this Agreement by discontinuing use of the Software, -removing all copies from your computers and storage media, and returning -the Software and Documentation, and all copies thereof, to Life -Technologies. Life Technologies may terminate this Agreement if you fail -to comply with all of its terms, in which case you agree to discontinue -using the Software, remove all copies from your computers and storage -media, and return the Software and Documentation, and all copies -thereof, to Life Technologies. +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. U.S. GOVERNMENT END USERS -The Software is a "commercial item," as that term is defined in 48 -C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" -and "commercial computer software documentation," as such terms are used -in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and -48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government -End Users acquire the Software with only those rights set forth herein. +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. EUROPEAN UNION END USERS -If this Software is used within a country of the European Union, nothing -in this Agreement shall be construed as restricting any rights available -under Directive 2009/24/EC of the European Parliament and of the Council -of 23 April 2009 on the legal protection of computer programs. - -YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC -CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. LICENSOR CANNOT AND DOES -NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS -THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT -REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING -THE SOFTWARE. The warranties, if any, made by Life Technologies may be -voided by abuse or misuse of the Software. - +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties, if any, made by Life Technologies may be voided by abuse or misuse of the Software. LIMITATION OF LIABILITY - -IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR -LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE -(INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR -OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES -ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, -MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE -GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN -ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION -DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE -ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR -FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL -LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS -SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE -OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, -THE PURCHASE PRICE OF THE PRODUCT. - -SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE -LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH -AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE -EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE -EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR -EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE -MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE -EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT -PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, -COUNTRY OR OTHER JURISDICTION. +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. CONFIDENTIALITY -You agree to protect Life Technologies Confidential Information with the -same degree of care used to protect your own confidential information -(but in no event less than a reasonable standard of care), and not to -use or disclose any portion of such Confidential Information to third -parties, except as expressly authorized in this Agreement. You -acknowledge that the Software, including its content, structure, -organization and design constitute proprietary and valuable trade -secrets (and other intellectual property rights) of Life Technology -and/or its licensors. The term "Confidential Information" means, -collectively, non-public information that Life Technologies (and its -licensors) provide and reasonably consider to be of a confidential, -proprietary or trade secret nature, including but not limited to (i) the -Software, and (ii) confidential elements of the Software and Life -Technologies (and its licensors) technology and know-how, whether in -tangible or intangible form, whether designated as confidential or not, -and whether or not stored, compiled or memorialized physically, -electronically, graphically, photographically, or in writing. -Confidential Information does not include any information which you can -demonstrate by credible evidence: (a) is, as of the time of its -disclosure, or thereafter becomes part of the public domain through no -fault of yours; (b) was rightfully known to you prior to the time of its -disclosure, or to have been independently developed by you without use -of Confidential Information; and/or (c) is subsequently learned from a -third party not under a confidentiality obligation with respect to such -Confidential Information. Confidential Information that is required to -be disclosed by you pursuant to a duly authorized subpoena, court order, -or government authority shall continue to be Confidential Information -for all other purposes and you agree, prior to disclosing pursuant to a -subpoena, court order, or government authority, to provide prompt -written notice and assistance to Life Technologies prior to such -disclosure, so that Life Technologies may seek a protective order or -other appropriate remedy to protect against disclosure. +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors) technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or © is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. SOFTWARE IMPROVEMENTS -You acknowledge and agree that any ideas, enhancements, modifications, -and the like disclosed by you to Life Technologies with respect to the -Software ("Software Improvements and Feedback") will be the property of -Life Technologies. You agree to assign, and hereby assign, all right, -title, and interest worldwide in the Software Improvements and Feedback -to Life Technologies and agree to assist Life Technologies, at Life -Technologies' expense, in perfecting and enforcing Life Technologies -rights thereto and ownership thereof. You acknowledge and agree that -Life Technologies may use such Software Improvements and Feedback for -its business purposes without restriction. +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. GENERAL -This Agreement shall be governed by laws of the State of California, -exclusive of its conflict of laws provisions. This Agreement shall not -be governed by the United Nations Convention on Contracts for the -International Sale of Goods. This Agreement contains the complete -agreement between the parties with respect to the subject matter hereof, -and supersedes all prior or contemporaneous agreements or -understandings, whether oral or written. If any provision of this -Agreement is held by a court of competent jurisdiction to be contrary to -law, that provision will be enforced to the maximum extent permissible -and the remaining provisions of this Agreement will remain in full force -and effect. The controlling language of this Agreement, and any -proceedings relating to this Agreement, shall be English. You agree to -bear any and all costs of translation, if necessary. The headings to the -sections of this Agreement are used for convenience only and shall have -no substantive meaning. All questions concerning this Agreement shall be -directed to: Life Technologies Corporation, 5781 Van Allen Way, -Carlsbad, CA 92008, Attention: Legal Department. - -Unpublished rights reserved under the copyright laws of the United -States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA -92008. - -Life Technologies is a trademark of Life Technologies Corporation or its -subsidiaries in the U.S. and certain other countries. - +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. All other trademarks are the sole property of their respective owners. -February 28, 2019 +July 15, 2020 Appendix 1 Life Technologies Corporation Third Party Copyright Notices and Licenses + SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. -SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 - -This software uses third party software components from several sources. -Portions of these software components are copyrighted and licensed by -their respective owners as indicated below. Various licenses require -distribution of source code or if a link is used to point the end-user -to a source-code repository, and the source code is not available at -such site, the distributor must, for a time determined by license, offer -to provide source code. In such cases, please contact your Life -Technologies representative. As well, various licenses require that the -end-user receive a copy of the license or certain notices. Such licenses -and notices may be found in this appendix. - -**Asn1crypto Copyright (c) 2015-2018 Will Bond** +Asn1crypto Copyright © 2015-2018 Will Bond +Six Copyright © 2010-2018 Benjamin Peterson -**Six Copyright (c) 2010-2018 Benjamin Peterson** - **The MIT License** - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: +The MIT License - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. -**Boto3** +Boto3 -**Botocore** +Botocore -**Pelix** +Pelix -**S3transfer** +S3transfer Apache License -============== -### Version 2.0, January 2004 +Version 2.0, January 2004 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -1\. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the -copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other -entities that control, are controlled by, or are under common control -with that entity. For the purposes of this definition, "control" means -(i) the power, direct or indirect, to cause the direction or management -of such entity, whether by contract or otherwise, or (ii) ownership of -fifty percent (50%) or more of the outstanding shares, or (iii) -beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation source, -and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but not -limited to compiled object code, generated documentation, and -conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object -form, made available under the License, as indicated by a copyright -notice that is included in or attached to the work (an example is -provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original -version of the Work and any modifications or additions to that Work or -Derivative Works thereof, that is intentionally submitted to Licensor -for inclusion in the Work by the copyright owner or by an individual or -Legal Entity authorized to submit on behalf of the copyright owner. For -the purposes of this definition, "submitted" means any form of -electronic, verbal, or written communication sent to the Licensor or its -representatives, including but not limited to communication on -electronic mailing lists, source code control systems, and issue -tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding -communication that is conspicuously marked or otherwise designated in -writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on -behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -2\. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright -license to reproduce, prepare Derivative Works of, publicly display, -publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3\. Grant of Patent License. Subject to the terms and conditions of this -License, each Contributor hereby grants to You a perpetual, worldwide, -non-exclusive, no-charge, royalty-free, irrevocable (except as stated in -this section) patent license to make, have made, use, offer to sell, -sell, import, and otherwise transfer the Work, where such license -applies only to those patent claims licensable by such Contributor that -are necessarily infringed by their Contribution(s) alone or by -combination of their Contribution(s) with the Work to which such -Contribution(s) was submitted. If You institute patent litigation -against any entity (including a cross-claim or counterclaim in a -lawsuit) alleging that the Work or a Contribution incorporated within -the Work constitutes direct or contributory patent infringement, then -any patent licenses granted to You under this License for that Work -shall terminate as of the date such litigation is filed. - -4\. Redistribution. You may reproduce and distribute copies of the Work -or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You meet the -following conditions: - -1. You must give any other recipients of the Work or Derivative Works a - copy of this License; and - -2. You must cause any modified files to carry prominent notices stating - that You changed the files; and - -3. You must retain, in the Source form of any Derivative Works that You - distribute, all copyright, patent, trademark, and attribution - notices from the Source form of the Work, excluding those notices - that do not pertain to any part of the Derivative Works; and - -4. If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one of - the following places: within a NOTICE text file distributed as - part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents of - the NOTICE file are for informational purposes only and do not - modify the License. You may add Your own attribution notices - within Derivative Works that You distribute, alongside or as an - addendum to the NOTICE text from the Work, provided that such - additional attribution notices cannot be construed as modifying - the License. - - You may add Your own copyright statement to Your modifications and may - provide additional or different license terms and conditions for use, - reproduction, or distribution of Your modifications, or for any such - Derivative Works as a whole, provided Your use, reproduction, and - distribution of the Work otherwise complies with the conditions stated - in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work by -You to the Licensor shall be under the terms and conditions of this -License, without any additional terms or conditions. Notwithstanding the -above, nothing herein shall supersede or modify the terms of any -separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed -to in writing, Licensor provides the Work (and each Contributor provides -its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -OF ANY KIND, either express or implied, including, without limitation, -any warranties or conditions of TITLE, NON-INFRINGEMENT, -MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely -responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your -exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, unless -required by applicable law (such as deliberate and grossly negligent -acts) or agreed to in writing, shall any Contributor be liable to You -for damages, including any direct, indirect, special, incidental, or -consequential damages of any character arising as a result of this -License or out of the use or inability to use the Work (including but -not limited to damages for loss of goodwill, work stoppage, computer -failure or malfunction, or any and all other commercial damages or -losses), even if such Contributor has been advised of the possibility of -such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the -Work or Derivative Works thereof, You may choose to offer, and charge a -fee for, acceptance of support, warranty, indemnity, or other liability -obligations and/or rights consistent with this License. However, in -accepting such obligations, You may act only on Your own behalf and on -Your sole responsibility, not on behalf of any other Contributor, and -only if You agree to indemnify, defend, and hold each Contributor -harmless for any liability incurred by, or claims asserted against, such -Contributor by reason of your accepting any such warranty or additional -liability. - -**Concurrent** - - - **The Python Software Foundation License Version 2** - - 1. This LICENSE AGREEMENT is between the Python Software Foundation - ("PSF"), and the Individual or Organization ("Licensee") accessing and - otherwise using this software ("Python") in source or binary form and - its associated documentation. - - 2. Subject to the terms and conditions of this License Agreement, PSF - hereby grants Licensee a nonexclusive, royalty-free, world-wide - license to reproduce, analyze, test, perform and/or display publicly, - prepare derivative works, distribute, and otherwise use Python - alone or in any derivative version, provided, however, that PSF's - License Agreement and PSF's notice of copyright, i.e., "Copyright (c) - 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights - Reserved" are retained in Python alone or in any derivative version - prepared by Licensee. - - 3. In the event Licensee prepares a derivative work that is based on - or incorporates Python or any part thereof, and wants to make - the derivative work available to others as provided herein, then - Licensee hereby agrees to include in any such work a brief summary of - the changes made to Python. - - 4. PSF is making Python available to Licensee on an "AS IS" - basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR - IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND - DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS - FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT - INFRINGE ANY THIRD PARTY RIGHTS. - - 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, - OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - - 6. This License Agreement will automatically terminate upon a material - breach of its terms and conditions. - - 7. Nothing in this License Agreement shall be deemed to create any - relationship of agency, partnership, or joint venture between PSF and - Licensee. This License Agreement does not grant permission to use PSF - trademarks or trade name in a trademark sense to endorse or promote - products or services of Licensee, or any third party. - - 8. By copying, installing or otherwise using Python, Licensee - agrees to be bound by the terms and conditions of this License - Agreement. - - -**Paho** +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +1. You must give any other recipients of the Work or Derivative Works a copy of this License; and +2. You must cause any modified files to carry prominent notices stating that You changed the files; and +3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +Concurrent + +The Python Software Foundation License Version 2 + + 1. This LICENSE AGREEMENT is between the Python Software Foundation + ("PSF"), and the Individual or Organization ("Licensee") accessing and + otherwise using this software ("Python") in source or binary form and + its associated documentation. + + 2. Subject to the terms and conditions of this License Agreement, PSF + hereby grants Licensee a nonexclusive, royalty-free, world-wide + license to reproduce, analyze, test, perform and/or display publicly, + prepare derivative works, distribute, and otherwise use Python + alone or in any derivative version, provided, however, that PSF's + License Agreement and PSF's notice of copyright, i.e., "Copyright © + 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights + Reserved" are retained in Python alone or in any derivative version + prepared by Licensee. + + 3. In the event Licensee prepares a derivative work that is based on + or incorporates Python or any part thereof, and wants to make + the derivative work available to others as provided herein, then + Licensee hereby agrees to include in any such work a brief summary of + the changes made to Python. + + 4. PSF is making Python available to Licensee on an "AS IS" + basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR + IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND + DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS + FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT + INFRINGE ANY THIRD PARTY RIGHTS. + + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON + FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS + A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, + OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + + 6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. + + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote + products or services of Licensee, or any third party. + + 8. By copying, installing or otherwise using Python, Licensee + agrees to be bound by the terms and conditions of this License + Agreement. + +Paho Eclipse Distribution License - v 1.0 -==================================== -**Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.** +Copyright © 2007, Eclipse Foundation, Inc. and its licensors. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. +AND -- Neither the name of the Eclipse Foundation, Inc. nor the names of - its contributors may be used to endorse or promote products derived - from this software without specific prior written permission. +Eclipse Public License - v 1.0 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. -**AND** +1. DEFINITIONS -Eclipse Public License - v 1.0 -============================== -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE -PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF -THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + "Contribution" means: -**1. DEFINITIONS** + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and -"Contribution" means: + b) in the case of each subsequent Contributor: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and\ -b) in the case of each subsequent Contributor: + i)changes to the Program, and -i)changes to the Program, and + ii)additions to the Program; + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. +"Contributor" means any person or entity that distributes the Program. +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. +"Program" means the Contributions distributed in accordance with this Agreement. +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. -ii)additions to the Program; +2. GRANT OF RIGHTS -where such changes and/or additions to the Program originate from and -are distributed by that particular Contributor. A Contribution -'originates' from a Contributor if it was added to the Program by such -Contributor itself or anyone acting on such Contributor's behalf. -Contributions do not include additions to the Program which: (i) are -separate modules of software distributed in conjunction with the Program -under their own license agreement, and (ii) are not derivative works of -the Program. -"Contributor" means any person or entity that distributes the Program. + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. -"Licensed Patents " mean patent claims licensable by a Contributor which -are necessarily infringed by the use or sale of its Contribution alone -or when combined with the Program. + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. -"Program" means the Contributions distributed in accordance with this -Agreement. + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -**2. GRANT OF RIGHTS** - -a) Subject to the terms of this Agreement, each Contributor hereby -grants Recipient a non-exclusive, worldwide, royalty-free copyright -license to reproduce, prepare derivative works of, publicly display, -publicly perform, distribute and sublicense the Contribution of such -Contributor, if any, and such derivative works, in source code and -object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby -grants Recipient a non-exclusive, worldwide, royalty-free patent license -under Licensed Patents to make, use, sell, offer to sell, import and -otherwise transfer the Contribution of such Contributor, if any, in -source code and object code form. This patent license shall apply to the -combination of the Contribution and the Program if, at the time the -Contribution is added by the Contributor, such addition of the -Contribution causes such combination to be covered by the Licensed -Patents. The patent license shall not apply to any other combinations -which include the Contribution. No hardware per se is licensed -hereunder. - -c) Recipient understands that although each Contributor grants the -licenses to its Contributions set forth herein, no assurances are -provided by any Contributor that the Program does not infringe the -patent or other intellectual property rights of any other entity. Each -Contributor disclaims any liability to Recipient for claims brought by -any other entity based on infringement of intellectual property rights -or otherwise. As a condition to exercising the rights and licenses -granted hereunder, each Recipient hereby assumes sole responsibility to -secure any other intellectual property rights needed, if any. For -example, if a third party patent license is required to allow Recipient -to distribute the Program, it is Recipient's responsibility to acquire -that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright -license set forth in this Agreement. - -**3. REQUIREMENTS** - -A Contributor may choose to distribute the Program in object code form -under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties -and conditions, express and implied, including warranties or conditions -of title and non-infringement, and implied warranties or conditions of -merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and -consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are -offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable -manner on or through a medium customarily used for software exchange. + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. When the Program is made available in source code form: -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the -Program. - -Contributors may not remove or alter any copyright notices contained -within the Program. - -Each Contributor must identify itself as the originator of its -Contribution, if any, in a manner that reasonably allows subsequent -Recipients to identify the originator of the Contribution. - -**4. COMMERCIAL DISTRIBUTION** - -Commercial distributors of software may accept certain responsibilities -with respect to end users, business partners and the like. While this -license is intended to facilitate the commercial use of the Program, the -Contributor who includes the Program in a commercial product offering -should do so in a manner which does not create potential liability for -other Contributors. Therefore, if a Contributor includes the Program in -a commercial product offering, such Contributor ("Commercial -Contributor") hereby agrees to defend and indemnify every other -Contributor ("Indemnified Contributor") against any losses, damages and -costs (collectively "Losses") arising from claims, lawsuits and other -legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the -Program in a commercial product offering. The obligations in this -section do not apply to any claims or Losses relating to any actual or -alleged intellectual property infringement. In order to qualify, an -Indemnified Contributor must: a) promptly notify the Commercial -Contributor in writing of such claim, and b) allow the Commercial -Contributor to control, and cooperate with the Commercial Contributor -in, the defense and any related settlement negotiations. The Indemnified -Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those -performance claims and warranties, and if a court requires any other -Contributor to pay any damages as a result, the Commercial Contributor -must pay those damages. - -**5. NO WARRANTY** - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED -ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES -OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR -A PARTICULAR PURPOSE. Each Recipient is solely responsible for -determining the appropriateness of using and distributing the Program -and assumes all risks associated with its exercise of rights under this -Agreement , including but not limited to the risks and costs of program -errors, compliance with applicable laws, damage to or loss of data, -programs or equipment, and unavailability or interruption of operations. - -**6. DISCLAIMER OF LIABILITY** - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR -ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING -WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR -DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED -HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -**7. GENERAL** - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further action -by the parties hereto, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including -a cross-claim or counterclaim in a lawsuit) alleging that the Program -itself (excluding combinations of the Program with other software or -hardware) infringes such Recipient's patent(s), then such Recipient's -rights granted under Section 2(b) shall terminate as of the date such -litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails -to comply with any of the material terms or conditions of this Agreement -and does not cure such failure in a reasonable period of time after -becoming aware of such noncompliance. If all Recipient's rights under -this Agreement terminate, Recipient agrees to cease use and distribution -of the Program as soon as reasonably practicable. However, Recipient's -obligations under this Agreement and any licenses granted by Recipient -relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, -but in order to avoid inconsistency the Agreement is copyrighted and may -only be modified in the following manner. The Agreement Steward reserves -the right to publish new versions (including revisions) of this -Agreement from time to time. No one other than the Agreement Steward has -the right to modify this Agreement. The Eclipse Foundation is the -initial Agreement Steward. The Eclipse Foundation may assign the -responsibility to serve as the Agreement Steward to a suitable separate -entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is -published, Contributor may elect to distribute the Program (including -its Contributions) under the new version. Except as expressly stated in -Sections 2(a) and 2(b) above, Recipient receives no rights or licenses -to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in -the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to -this Agreement will bring a legal action under this Agreement more than -one year after the cause of action arose. Each party waives its rights -to a jury trial in any resulting litigation. - -**Docutils** - -Public Domain Dedication -======================== - -The persons who have associated their work with this project (the -"Dedicator": David Goodger and the many contributors to the Docutils -project) hereby dedicate the entire copyright, less -the [exceptions](http://docutils.sourceforge.net/COPYING.html#exceptions) listed -below, in the work of authorship known as "Docutils" identified below -(the "Work") to the public domain. - -The primary repository for the Work is the Internet World Wide Web site -<>. The Work consists of the -files within the "docutils" module of the Docutils project Subversion -repository (Internet host docutils.svn.sourceforge.net, filesystem path -/svnroot/docutils), whose Internet web interface is located at -<>. Files -dedicated to the public domain may be identified by the inclusion, near -the beginning of each file, of a declaration of the form: - -Copyright: This document/module/DTD/stylesheet/file/etc. has been placed in the public domain. - -Dedicator makes this dedication for the benefit of the public at large -and to the detriment of Dedicator's heirs and successors. Dedicator -intends this dedication to be an overt act of relinquishment in -perpetuity of all present and future rights under copyright law, whether -vested or contingent, in the Work. Dedicator understands that such -relinquishment of all rights includes the relinquishment of all rights -to enforce (by lawsuit or otherwise) those copyrights in the Work. - -Dedicator recognizes that, once placed in the public domain, the Work -may be freely reproduced, distributed, transmitted, used, modified, -built upon, or otherwise exploited by anyone for any purpose, commercial -or non-commercial, and in any way, including by methods that have not -yet been invented or conceived. - -**Dateutil** - -Copyright (c) 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net> - -Copyright (c) 2012-2014 - Tomi Pievilainen -<tomi.pievilainen@iki.fi> - -Copyright (c) 2014 - Yaron de Leeuw <me@jarondl.net> + a) it must be made available under this Agreement; and -All rights reserved. + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained within the Program. + Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. -Redistribution and use in source and binary forms, with or without +4. COMMERCIAL DISTRIBUTION -modification, are permitted provided that the following conditions are -met: + Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. -* Redistributions of source code must retain the above copyright -notice,this list of conditions and the following disclaimer. +5. NO WARRANTY -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. -* Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. +6. DISCLAIMER OF LIABILITY -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + + This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +## Docutils + + Public Domain Dedication + + The persons who have associated their work with this project (the "Dedicator": David Goodger and the many contributors to the Docutils project) hereby dedicate the entire copyright, less the exceptions listed below, in the work of authorship known as "Docutils" identified below (the "Work") to the public domain. + + The primary repository for the Work is the Internet World Wide Web site . The Work consists of the files within the "docutils" module of the Docutils project Subversion repository (Internet host docutils.svn.sourceforge.net, filesystem path /svnroot/docutils), whose Internet web interface is located at . Files dedicated to the public domain may be identified by the inclusion, near the beginning of each file, of a declaration of the form: + + Copyright: This document/module/DTD/stylesheet/file/etc. has been + placed in the public domain. + + Dedicator makes this dedication for the benefit of the public at large and to the detriment of Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. + + Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. + +## Dateutil + + Copyright © 2003-2011 - Gustavo Niemeyer + + Copyright © 2012-2014 - Tomi Pievilainen + + Copyright © 2014 - Yaron de Leeuw + + All rights reserved. + + Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -2561,9 +1396,9 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -**Enum** +## Enum -Copyright (c) 2013, Ethan Furman. +Copyright © 2013, Ethan Furman. All rights reserved. @@ -2571,36 +1406,35 @@ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -Redistributions of source code must retain the above -copyright notice, this list of conditions and the -following disclaimer. - -Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following -disclaimer in the documentation and/or other materials -provided with the distribution. - -Neither the name Ethan Furman nor the names of any -contributors may be used to endorse or promote products -derived from this software without specific prior written -permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + Neither the name Ethan Furman nor the names of any + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. -**Jmespath** +## Jmespath -Copyright (c) 2013 Amazon.com, Inc. or its affiliates. All Rights -Reserved +Copyright © 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -2614,67 +1448,4785 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -**Oscrypto** +## Oscrypto -Copyright (c) 2015-2018 Will Bond <will@wbond.net> +Copyright © 2015-2018 Will Bond -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies - -of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -**Pubsub** +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -Copyright (c) since 2006, Oliver Schoenborn +## Pubsub +Copyright © since 2006, Oliver Schoenborn All rights reserved. Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright -notice, this -list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +###END OF (2) SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 END USER LICENSE AGREEMENT +**************************************************** +(3) BEGINS: +======================================== + + +LIFE TECHNOLOGIES CORPORATION + +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY + +FOR ION CHEF™ INSTRUMENT SOFTWARE VERSION 5.18 INSTRUMENT OPERATING SOFTWARE + +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. +RESTRICTIONS +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. + +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or © is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + + +Appendix 1 + +Life Technologies Corporation + +Third Party Copyright Notices and Licenses + +Ion Chef Instrument Software™ VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + + +3-clause BSD License + +OpenCV + +By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, +copy or use the software. + + + +License Agreement + +For Open Source Computer Vision Library +(3-clause BSD License) + + +Copyright © 2000-2020, Intel Corporation, all rights reserved. Copyright © 2009-2011, Willow Garage Inc., all rights reserved. Copyright © 2009-2016, NVIDIA Corporation, all rights reserved. + +Copyright © 2010-2013, Advanced Micro Devices, Inc., all rights reserved. Copyright © 2015-2016, OpenCV Foundation, all rights reserved. Copyright © 2015-2016, Itseez Inc., all rights reserved. + +Copyright © 2019-2020, Xperience AI, all rights reserved. Third party copyrights are property of their respective owners. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. + + + + +GPL v2 + +DirectFB + +© Copyright 2017-2021 DirectFB2 Open Source Project (fork of DirectFB) © Copyright 2012-2016 DirectFB integrated media GmbH + +© Copyright 2001-2013 The world wide DirectFB Open Source Community (directfb.org) © Copyright 2000-2004 Convergence (integrated media) GmbH + + +DirectFB was originally written by Denis Oliver Kropp, Andreas Shimokawa, + +Marek Pikarski, Sven Neumann, Ville Syrjala and Claudio Ciccani. + +DirectFB2 is the work of Nicolas Caramelli whose goal is to preserve and maintain DirectFB GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +## MIT derivative curl + +Copyright © 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +GPL v2 + +Python 2.7.2 + +###CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright © 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. + + +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior +permission. + + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +GPL v2 mtd-utils + +http://git.infradead.org/mtd-utils.git/blob/HEAD:/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. +You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +LGPL GTK+ http://www.gtk.org/ + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +NTP License (NTP) NTP http://www.ntp.org/ntpfaq/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +GPL v2 + +GDK-PixBuf + +https://docs.gtk.org/gdk-pixbuf/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +PSP log4cpp https://sourceforge.net/p/log4cpp/codegit/ci/master/tree/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies +the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + + + +GPL v2 + + +busybox md5sum wget + + +https://www.busybox.net/license.html + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do +these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Tar + +https://www.gnu.org/software/tar/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright © 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Linux Kernel + +https://www.kernel.org/doc/html/v4.18/process/license-rules.html#:~:text=The%20Linux%20Kernel% +20is%20provideddescribed%20in%20the%20COPYING%20file + + +GNU GENERAL PUBLIC LICENSE Version 2, June 1991 + + +Copyright © 1989, 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. + + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original authors' reputations. + + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + + +The precise terms and conditions for copying, distribution and modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + + + You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + + + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + + + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + + + In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + + + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + + + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + + + The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to this License. + + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +Mozilla Public License, v. 2.0 + +DHCP + +Mozilla Public License +Version 2.0 + +1. Definitions + + 1.1. "Contributor" +means each individual or legal entity that creates, contributes to the creation of, or owns Covered +Software. + + + 1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used by a Contributor and that particular +Contributor's Contribution. + + + 1.3. "Contribution" +means Covered Software of a particular Contributor. + + + 1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. + + + 1.5. "Incompatible With Secondary Licenses" +means +that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or that the Covered Software was made available under the terms of version 1.1 or earlier of the License, +but not also under the terms of a Secondary License. + + + 1.6. "Executable Form" +means any form of the work other than Source Code Form. + + + 1.7. "Larger Work" +means a work that combines Covered Software with other material, in a separate file or files, that is not +Covered Software. + + + 1.8. "License" +means this document. + + + 1.9. "Licensable" +means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. + + + 1.10. "Modifications" +means any of the following: + + any file in Source Code Form that results from an addition to, deletion from, or modification of the +contents of Covered Software; or + + + any new file in Source Code Form that contains any Covered Software. + + + 1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. + + + 1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. + + + 1.13. "Source Code Form" +means the form of the work preferred for making modifications. + + + 1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + + 2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. + + + 2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become effective for each +Contribution on the date the Contributor first distributes such Contribution. + + + 2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: +for any code that a Contributor has removed from Covered Software; or for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or +under Patent Claims infringed by Covered Software in the absence of its Contributions. +T. his License does not grant any rights in the trademarks, service marks, or logos of any Contributor +(except as may be necessary to comply with the notice requirements in Section 3.4). + + + 2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). + + + 2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. + + + 2.6. Fair Use + + This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. + + + 2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. + + +3. Responsibilities + + + 3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. + + 3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and +You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. + + 3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). + + + 3.4. Notices + + You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. + + + 3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations +to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of +liability specific to any jurisdiction. + + +4. Inability to Comply Due to Statute or Regulation + + + If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. + + +5. Termination + + + 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time +You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. + + + 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. + + + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. + + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer. + + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability +for death or personal injury resulting from such party's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. + + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. + + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. + +10. Versions of the License + + + 10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. + + + 10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. + + + 10.3. Modified Versions + + If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). + + + 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + + If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. + + + Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the +MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + + + If it is not possible or desirable to put the notice in a particular file, then You may include the notice in +a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. +You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice +This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public +License, v. 2.0. + + + + +## Private PTC CUSTOMER AGREEMENT Axeda Agent Embedded +======================================================================= + +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR +THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, +THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, +OR USES ANY +SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN +A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A +(AS APPLICABLE, "PTC"). +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS +AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING +ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS +AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO +BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, +CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS +PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN +YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN +THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF +ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT +HAS BEEN ACCEPTED. +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC +DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN +ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS +SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE +PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING +TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED +PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION +AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE +COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE +PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING +ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING +TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING +USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS +AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND +ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH +DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON +SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO +OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US +FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY +RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) +OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR +TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE +ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF +YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS +AGREEMENT. +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO +SPECIFIC GEOGRAPHIES. + + + +### PTC Clickwrap Customer Agreement - Rev. 12/14 + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed +Products identified in the Quote +during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable +usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage +("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to +install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the +Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic +institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer +does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non educational research or funded educational research conducted using the facilities of an academic institution or under an +academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a +violation of the terms of this Agreement. + + © If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on +the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable +Designated Country. Customer may, from time to time, change the Designated Computer, Designated +Network, and/or the +Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall +give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, +Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the +Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a +"Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the +Customer to install, +operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted +Global License allows the +Customer to install, operate and use such Licensed Product at any Customer site(s) located in the +Designated Country +and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech +Republic, Poland, +Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; + + (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or +consulting services to any third parties, or for commercial time-sharing or service bureau use; + + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed +Products, or otherwise +attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in +Schedule A, if applicable; + + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or +otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in +part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are +explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or +in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation +into computer memory for the purpose of executing the Licensed Products in accordance with this +Section 1, and/or (b) to +make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the +property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, +proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). +If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, +without limiting PTC's right to +terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or +penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a +Concurrent User Product, +the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the +number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated +Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may +use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the +Licensed Product is +licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated +Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses +a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" +or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer +may add and/or substitute from time to time new Registered Users as long as the aggregate number of +Registered Users does not +exceed at any point in time the number of Licenses in effect at such time for that particular Licensed +Product and, provided further, +that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at +PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on +the computer server that is designated by the Customer in connection with the initial installation of such product and that has one +unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner +(physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such +server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change +the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case (a) Customer shall +give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server +Products to a different +Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software +components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule +of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software +products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to +Customer directly by the +manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled +Third Party Products are also +described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party +Components and/or Bundled Third +Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing +Third Party Components or +Bundled Third Party Products may be subject to additional or different third party terms, of which PTC +shall notify the Customer at +the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the +Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on +Support Services for such software. +After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis +of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed +Software that formed the basis for +Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that +PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC +access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably +requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. +2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to +the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer +has issued a password or other unique identifier to enable such individual to use the Registered User +Product). Such report shall be +certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written +request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the +Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including +applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay +shall be grounds for termination in accordance with Section 7 hereof. + + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed +Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed +Products. All copies of the Licensed Products, in whatever form provided by PTC or made by +Customer, shall remain the property of +PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License +granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a +right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source +code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify +the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. +See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed +Products for which Usage License +Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support +Services in accordance with +Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the +Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or +Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) +evaluation, "trial" or "express" +Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) +Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, +(v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed +Products that are provided by +PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third +Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty +given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product +(s) or (b) use diligent efforts to +repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the +Error is received by PTC +within the Warranty Period and Customer supplies such additional information regarding the Error as +PTC may reasonably request. +If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a +workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by +PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed +Product(s) upon return of such +Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC +or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those +contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement +signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or +Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER +WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING +ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN +ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND +ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS +SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED +PRODUCTS, INCLUDING +THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING +LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed +Products will be uninterrupted or +error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 PTC's Obligation to Indemnify Customer. PTC, at its own expense, will defend any action brought against Customer based on a +claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its +option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified +promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on +such claim and all negotiations for its settlement or compromise and shall bear the costs of the same +(save where one or more of the +exclusions in Section 5.3 applies); and © Customer shall cooperate fully at PTC's expense with PTC +in the defense, settlement or +compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all +claims relating to infringement of any intellectual property right. + + 5.2 PTC's Right to Act to Prevent a Claim. If a claim described in Section 5.1 hereof occurs or, in +PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed +Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or © +terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by +Customer for such Licensed Product +depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be +equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclusions from PTC's Obligation to Indemnify Customer. PTC shall have no liability to Customer under Section 5.1 hereof or +otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed +Product in combination +with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed +Product in an application or environment for which it was not designed or not contemplated under this +Agreement; © use of other +than a current release of the Licensed Product(s) provided to Customer; (d) modification of the +Licensed Product by anyone other +than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other +proprietary right in which Customer has an interest. + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of +PTC, its subsidiaries and +affiliates, and each of their respective directors, officers, employees or agents, with respect to the +Licensed Products and Services, +including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, +trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 +ABOVE, THE MAXIMUM +LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, +FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE +RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, +SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR +THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED +ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD +IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES +THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR +ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF +PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS +OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS +INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND © SPECIAL, +INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE +HOWSOEVER CAUSED; IN EACH +CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective +directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer +recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and +limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the +Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section +6 shall not apply to any +claim in respect of death or personal injury. + + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses +(i) through (vii) of +Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer +or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's +creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against +Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence +dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section + + 7.1(a) above) of this +Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed +Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable +satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this +Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for +which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in +Customer's possession or in use. +7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this +Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way +connected with this Agreement shall be governed by and construed in accordance with the laws of the +Commonwealth of +Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform +Computer Information +Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the +International Sale of Goods. +All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal +courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or +anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual +property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the +Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the +personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all +actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and +binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute +arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to +Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be +provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 +Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have +been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; © if given by express +courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by +sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any +of Customer's rights or +obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, +and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior +written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. +No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed +by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this +Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal +requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the +Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer +acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and +regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, +received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or +technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's +home country or countries, and that the transfer of the Licensed Products or related technology to +Customer's employees, affiliates, +or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall +be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services +requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby +warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. +Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State +Department's Nonproliferation +Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked +Persons or any similar Export +Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export +restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States +Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the +Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of +a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. +Government, including but not limited to persons listed on the Restricted Parties Lists, or © engaged in activities related to the +design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) +engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to +which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will +comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law +and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, +loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any +provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the +remaining provisions and such provisions determined to be invalid shall be deemed severed from this +Agreement and, to the extent +possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between +PTC and Customer +with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding +unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended +beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such +licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a +customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products +are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial +license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed +Product(s) under a United States +government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the +Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer +agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government +contract. +Schedule A - Purchases from PTC Affiliates +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the +License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set +forth below. +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +Belgium, Netherlands, Luxembourg +Parametric Technology Nederland B.V. Netherlands +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, Germany +France Parametric Technology S.A. France Ireland PTC Software and Services (Ireland) Limited +Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the +European Union +PTC Software and Services (Ireland) Limited +Republic of Ireland Turkey, Kosovo, Serbia, Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and Albania +PTC Software and Services (Ireland) Limited +Republic of Ireland +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the Chamber of Commerce and Industry of the Russian Federation in Moscow Belarus, Moldova, Ukraine, +Armenia, Georgia, Azerbaijan, Kazakhstan, Kyrgyzstan, Tajikistan, Turkmenistan, and Uzbekistan +PTC Software and Services (Ireland) Limited +Republic of Ireland +Norway, Sweden, and Denmark, Finland, Iceland, and the Faeroe Islands +PTC Sweden AB Sweden +Japan PTC Japan K.K. Japan / Tokyo District Court +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +China Parametric Technology (Shanghai) Software Co., Ltd. +The People's Republic of China/China International Economic and Trade Arbitration Commission in Shanghai +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited +India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries including Australia and New Zealand, but excluding China, Japan and Taiwan) +PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order +Commonwealth of Massachusetts, +United States + +*Specific Provisions for Austria, Germany and Switzerland: +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following +provisions shall have no applicability to any Licensed Products or Services purchased outside of +Austria, Germany or Switzerland. + +References to sections below are references to the applicable sections in the body of the Agreement. + +Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve +information necessary to achieve interoperability of an independently created computer program with other software +programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and +(iii) PTC, upon +Customer's written request, has not made available the information required for this within a reasonable period. + +Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of +Warranties) are hereby +replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) +months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty +period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the +Customer inspects the +Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this +Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the +Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the +Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious +Errors in writing +within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are +preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product +(s) or (b) repair +the Error, provided that notice of the Error is received by PTC within the periods set forth in Section +4.2 and Customer +provides such additional information regarding the Error as PTC may reasonably request. If the repair +(either by providing +a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error +by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: +(i) rescission of the +affected order so that PTC provides a refund of the license fees paid by Customer for the applicable +Licensed Product(s) +upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. +Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation +period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of +PTC or any of its +resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those +contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of +Customer by an +authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based +on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 +shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a +substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is +solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of +independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of +PTC or its sales +representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the +Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to +be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an +order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on +PTC only to the extent +to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" +or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for +PTC resulting from such guarantee. + +Section 6 is hereby replaced by the following provisions: +6. Limitation of Liability + + 6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a +material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused +by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + + 6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC +breaches material +contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of +PTC who are not +officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, +unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + + 6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + + 6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or +loss of profit. + + 6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, +shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this +knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed +Product(s), the +warranty limitation period pursuant to Section 4.2 shall apply. + + 6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act +(Produkthaftungsgesetz), for injury +of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition +(Beschaffenheitsgarantie) remains unaffected. + + 6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + + 6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of +Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or +inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of +appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other +phenomena which could put individual data or an entire data stock at risk. Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as +specified either in the Quote or at the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC +at the time of installation of +the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as +"fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer +Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with +Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable +installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at +the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student +Edition," "Schools Edition," + +"Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic +Edition/Version," or otherwise +designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable +Documentation, provided that Customer +informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. + +"License" shall have the meaning set out in Section 1.1 of the body of the Agreement. + +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified +in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant +to the terms hereof) or, if no +Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the +License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the +date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License +will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or +the invoice, and such License includes Support Services during such License Term at no additional fee. "License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked +Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked +Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable +Quote, as well as (i) any +software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software +product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 +hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services +purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc. com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and +conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support +Services ordered, may also include +telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C +attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC +as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in +accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, +subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC +and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. +Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the +applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to +connect to an ERP system and a CRM system, two licenses of such adapter will be required. The +Licensed Products that are Per +Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the +applicable Licensed Product or, if no such document is provided, Customer's purchase order for such +Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a +Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the +Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed +Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the +Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town +(based on postal address) +shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed +Products. "Training Services" +does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed +Products for purposes of this +Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed +Product in the original Designated Country and the License fee applicable to the installation of such +Licensed Product in the +Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable +Licensed Product and that, during the +period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed +Product in accordance with the +terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of +the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a +time period of twelve (12) months or for such other period specified in Customer's order accepted by +PTC (a "Support Services +Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that +for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no +additional fee. If Customer does not order Support Services to commence on shipment of the Licensed +Product(s), or if Customer at +any time discontinues Support Services, and in either case subsequently wishes to obtain Support +Services, Customer must pay (i) the +then current fees for Support Services and (ii) the fees for Support Services for any period for which + +Customer has not purchased +Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are +described on http://www.ptc.com at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. +With respect to Registered User Products, e-Learning products and Integrity Concurrent User and +Server Licensed Products, Support +Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide +Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with +the level of Support Services Customer has purchased. The services offered under any Support Services +Plan may change from time +to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to +Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize +PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which +PTC will provide telephone support will vary depending upon the level of Support Services ordered by +Customer. For all levels of +Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business +hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support + +Services that include +telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total +number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with +Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC +shall use diligent efforts +to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC +during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may +reasonably request. + +© New Releases. PTC will provide Customer with one copy of each New Release for each Licensed +Product for which +Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. +Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous +release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; +thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as +described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, +environment, databases or other system components which adversely affect the Licensed Products; (iii) +caused by Customer's +modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of +the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or +peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of +the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a +failure by the Customer to implement recommendations in respect of solutions to Errors previously +provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for +Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by +Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is +responsible for the distribution of New Releases to any of Customer's additional locations where +Licensed Products are authorized to +be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address +for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed +Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality +contained within the Licensed Products, all of which are Customer's sole responsibility + + + + +## MIT JsonCpp +============================ + + +The JsonCpp library's source code, including accompanying documentation, tests and demonstration applications, are licensed under the following conditions... + + +The author (Baptiste Lepilleur) explicitly disclaims copyright in all jurisdictions which recognize such a disclaimer. In such jurisdictions, this software is released into the Public Domain. + + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright © 2007-2010 by Baptiste Lepilleur, and is released under the terms of the MIT License (see below). + + +In jurisdictions which recognize Public Domain property, the user of this software may choose to accept it either as 1) Public Domain, 2) under the conditions of the MIT License (see below), or 3) under the terms of dual Public Domain/MIT License conditions described here, as they choose. + + +The MIT License is about as close to Public Domain as a license can get, and is described in clear, concise terms at: + + +http://en.wikipedia.org/wiki/MIT_License + + +### The full text of the MIT License follows: +Copyright © 2007-2010 Baptiste Lepilleur + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## Open source HPND License + +PIL +The Python Imaging Library (PIL) is + + +Copyright © 1997-2011 by Secret Labs AB Copyright © 1995-2011 by Fredrik Lundh + + +Pillow is the friendly PIL fork. It is + + +Copyright © 2010-2022 by Alex Clark and contributors +Like PIL, Pillow is licensed under the open source HPND License: + + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + + +Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + + +END OF (3) ) Ion Chef™ Instrument Software Version 5.18 END USER LICENSE AGREEMENT +**************************************************** +**************************************************** +**************************************************** +**************************************************** +**************************************************** +(4) BEGINS: + +LIFE TECHNOLOGIES CORPORATION +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY +FOR ION GENESTUDIOTM S5 INSTRUMENT SOFTWAREVERSION 5.18 INSTRUMENT OPERATING SOFTWARE +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. + +RESTRICTIONS + +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +7. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +8. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +9. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +10. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +11. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +12. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or © is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + +Appendix 1 + +Life Technologies Corporation +Third Party Copyright Notices and Licenses + +Ion GeneStudioTM S5 Instrument Software VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + +MIT/X derivate license libcurl +The curl license +COPYRIGHT AND PERMISSION NOTICE + + +Copyright © 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +## MIT +json library + +Copyright © 2007-2010 Baptiste Lepilleur and The JsonCpp Authors + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================== +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## LGPL-2.1 + +libjpeg + +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 + +Name: libjpeg8-empty + + +Files: * + +Copyright: 2011 Linaro Limited + +License: LGPL-2.1 + +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License (LGPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +* This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +* You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Library General Public +License, version 2, can be found in /usr/share/common-licenses/LGPL-2.1. + + + +## LGPL-2.1 libpthread +This is the Debian prepackaged version of the Embedded GNU C Library version 2.19. + + +It was put together by the GNU Libc Maintainers +from + + +* Most of the GNU C library is under the following copyright: + + +Copyright © 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + +You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +02110-1301 USA + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. + + +* The utilities associated with GNU C library is under the following copyright: + + +Copyright © 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/GPL-2'. + + +* All code incorporated from 4.4 BSD is distributed under the following license: + + +Copyright © 1991 Regents of the University of California. All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. [This condition was removed.] +4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software +without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The DNS resolver code, taken from BIND 4.9.5, is copyrighted both by UC Berkeley and by Digital Equipment Corporation. The DEC portions are under the following license: +Portions Copyright © 1993 by Digital Equipment Corporation. Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that the name of Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the document or software without specific, written prior permission. + + +THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP. +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +* The Sun RPC support (from rpcsrc-4.0) is covered by the following license: +Copyright © 2010, Oracle America, Inc. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the "Oracle America, Inc." nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following CMU license covers some of the support code for Mach, derived from Mach 3.0: + + +Mach Operating System +Copyright © 1991,1990,1989 Carnegie Mellon University +All Rights Reserved. + + +Permission to use, copy, modify and distribute this software and its documentation is hereby granted, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, and that both notices appear in supporting documentation. + + +CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS'' CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + + +Carnegie Mellon requests users of this software to return to + + +Software Distribution Coordinator School of Computer Science Carnegie Mellon University Pittsburgh PA 15213-3890 + + +or Software.Distribution@CS.CMU.EDU any improvements or extensions that they make and grant Carnegie Mellon the rights to redistribute these changes. +* The file if_ppp.h is under the following CMU license: Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following license covers the files from Intel's "Highly Optimized +Mathematical Functions for Itanium" collection: + +Intel License Agreement + + +Copyright © 2000, Intel Corporation + + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + +* The name of Intel Corporation may not be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright +© by Craig Metz and are distributed under the following license: + + +* The Inner Net License, Version 2.00 + + +The author(s) grant permission for redistribution and use in source and +binary forms, with or without modification, of the software and documentation provided that the following conditions are met: + + +0. If you receive a version of the software that is specifically labelled +as not being for redistribution (check the version message and/or README), +you are not permitted to redistribute that version of the software in any way or form. +1. All terms of the all other applicable copyrights and licenses must be followed. +2. Redistributions of source code must retain the authors' copyright notice(s), this list of conditions, and the following disclaimer. +3. Redistributions in binary form must reproduce the authors' copyright notice(s), this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. +4. [The copyright holder has authorized the removal of this clause.] +5. Neither the name(s) of the author(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. If these license terms cause you a real problem, contact the author. */ + +## MIT +libxml + +https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home + + +The MIT License +OSI Approved License LogoLicense Copyright: Unknown. License License: Unknown. +License Contact: Unknown. + +SPDX short identifier: MIT Further resources... + +Begin license text. +Copyright + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +End license text. + + + + +## LGPL-2.1+ +libudev + +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: systemd +Upstream-Contact: systemd-devel@lists.freedesktop.org +Source: https://www.freedesktop.org/wiki/Software/systemd/ + + +Files: debian/* +Copyright: 2010-2013 Tollef Fog Heen +2013-2015 Michael Biebl +2013 Michael Stapelberg License: LGPL-2.1+ + + +Files: * + +Copyright: 2008-2015 Kay Sievers + +2010-2015 Lennart Poettering +2012-2015 Zbigniew Ja ™ drzejewski-Szmek +2013-2015 Tom Gundersen +2013-2015 Daniel Mack +2010-2015 Harald Hoyer +2013-2015 David Herrmann +2013, 2014 Thomas H.P. Andersen +2013, 2014 Daniel Buch +2014 Susant Sahani +2009-2015 Intel Corporation +2000, 2005 Red Hat, Inc. +2009 Alan Jenkins +2010 ProFUSION embedded systems +2010 Maarten Lankhorst +1995-2004 Miquel van Smoorenburg +1999 Tom Tromey +2011 Michal Schmidt +2012 B. Poettering +2012 Holger Hans Peter Freyther +2012 Dan Walsh +2012 Roberto Sassu +2013 David Strauss +2013 Marius Vollmer +2013 Jan Janssen +2013 Simon Peeters +License: LGPL-2.1+ + + +Files: src/basic/siphash24.h src/basic/siphash24.c +Copyright: 2012 Jean-Philippe Aumasson +2012 Daniel J. Bernstein License: CC0-1.0 + + +Files: src/basic/securebits.h +Copyright: Linus Torvalds License: GPL-2 + + +Files: src/basic/ioprio.h +Copyright: Jens Axboe License: GPL-2 + + +Files: src/shared/linux/auto_dev-ioctl.h +Copyright: 2008 Red Hat, Inc. +2008 Ian Kent License: GPL-2+ + + +Files: src/basic/sparse-endian.h +Copyright: 2012 Josh Triplett License: Expat + + +Files: src/journal/lookup3.c src/journal/lookup3.h +Copyright: none +License: public-domain +You can use this free for any purpose. It's in the public domain. It has no warranty. + + +Files: src/udev/* +Copyright: 2003-2012 Kay Sievers +2003-2004 Greg Kroah-Hartman +2004 Chris Friesen +2004, 2009, 2010 David Zeuthen +2005, 2006 SUSE Linux Products GmbH +2003 IBM Corp. +2007 Hannes Reinecke +2009 Canonical Ltd. +2009 Scott James Remnant +2009 Martin Pitt +2009 Piter Punk +2009, 2010 Lennart Poettering +2009 Filippo Argiolas +2010 Maxim Levitsky +2011 ProFUSION embedded systems +2011 Karel Zak +2014 Zbigniew Ja ™ drzejewski-Szmek +2014 David Herrmann +2014 Carlos Garnacho License: GPL-2+ + + +Files: src/udev/udev-ctrl.c src/udev/udevadm-hwdb.c src/udev/udev-builtin.c src/udev/udev-builtin-net_id.c +src/udev/udev-builtin-net_setup_link.c src/udev/udev-builtin-hwdb.c src/udev/udev-builtin-btrfs.c src/udev/udev-builtin-keyboard.c +src/udev/net/link-config.h src/udev/net/link-config.c src/udev/net/ethtool-util.c src/udev/net/ethtool-util.h +Copyright: 2007-2013 Kay Sievers +2013 Tom Gundersen License: LGPL-2.1+ + + +Files: src/udev/scsi_id/scsi.h Copyright: 2003 IBM Corp. License: GPL-2 + + +License: Expat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +## License: GPL-2 +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. +*On Debian and systems the full text of the GNU General Public +License version 2 can be found in the file +`/usr/share/common-licenses/GPL-2` + + +## License: GPL-2+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +* You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2` ™ . + + +## License: LGPL-2.1+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. +* You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Lesser General Public +License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1`™ . + +## License: CC0-1.0 +To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. + +* You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see . +* On Debian systems, the complete text of the CC0 1.0 Universal license can be found in `/usr/share/common-licenses/CC0-1.0` ™ . + + +## Libpng license libpng12 + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE + + +### PNG Reference Library License version 2 + + +* Copyright © 1995-2019 The PNG Reference Library Authors. +* Copyright © 2018-2019 Cosmin Truta. +* Copyright © 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. +* Copyright © 1996-1997 Andreas Dilger. +* Copyright © 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +The software is supplied "as is", without warranty of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or anyone distributing the software, be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of, or in connection with the software, or the use or other dealings in the software, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this software, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you +use this software in a product, an acknowledgment in the product documentation would be appreciated, but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + + +## PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) + + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are Copyright © 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are derived from libpng-1.0.6, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors: + + +Simon-Pierre Cadieux +Eric S. Raymond Mans Rullgard Cosmin Truta Gilles Vollant James Yu +Mandar Sahastrabuddhe +Google Inc. Vadim Barkov + + +and with the following additions to the disclaimer: + + +There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes +or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + + +Some files in the "contrib" directory and some configure-generated files that are distributed with libpng have other copyright owners, and are released under other open source licenses. + + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright © 1998-2000 Glenn Randers-Pehrson, are derived from libpng-0.96, and are distributed according to the same disclaimer and license as libpng-0.96, with the following individuals added to the list of Contributing Authors: + +Tom Lane +Glenn Randers-Pehrson +Willem van Schaik + + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright © 1996-1997 Andreas Dilger, are derived from libpng-0.88, and are distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors: + + +John Bowler Kevin Bracey Sam Bushell +Magnus Holmgren +Greg Roelofs +Tom Tanner + + +Some files in the "scripts" directory have other copyright owners, but are released under this license. + + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright © 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +For the purposes of this copyright and license, "Contributing Authors" is defined as the following set of individuals: + + +Andreas Dilger Dave Martindale Guy Eric Schalnat Paul Schmidt +Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this source code must not be misrepresented. + + +2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + +The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use +this source code in a product, acknowledgment is not required but would be appreciated. + + +LGPL-2.1 libnuma +This package was debianized by Ian Wienand +on Wed, 15 Dec 2004. + + +libnuma sources are available from https://github.com/numactl/numactl + + +Upstream Authors: +Andi Kleen Copyright © 2004 Andi Kleen +numactl and the demo programs are under the GNU General Public License, v.2 libnuma is under the GNU Lesser General Public License, v2.1. +The manpages are under the same license as the Linux manpages (see the files) + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. The full text of the License may be found in /usr/share/common-licenses/GPL. + + +The redistribution of portions of this program are controlled by the GNU Lesser General Public License as published by the Free Software Foundation. The full text of the License may be found in + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +Parts of the numademo program are derived from the STREAM benchmark, available from + +http://www.cs.virginia.edu/stream/ + + +Proprietary license from PTC Axeda Agent Embedded +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, OR USES ANY SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A (AS APPLICABLE, "PTC"). + +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. + +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT HAS BEEN ACCEPTED. + +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. + +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT- OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). + +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS AGREEMENT. + +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO SPECIFIC GEOGRAPHIES. + + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed Products identified in the Quote during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage ("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non- educational research or funded educational research conducted using the facilities of an academic institution or under an academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a violation of the terms of this Agreement. + + © If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable Designated Country. Customer may, from time to time, change the Designated Computer, Designated Network, and/or the Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a "Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) located in the Designated Country and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech Republic, Poland, Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or consulting services to any third parties, or for commercial time-sharing or service bureau use; + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed Products, or otherwise attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in Schedule A, if applicable; + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation into computer memory for the purpose of executing the Licensed Products in accordance with this Section 1, and/or (b) to make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). + + If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, without limiting PTC's right to terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be +entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a Concurrent User Product, the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the Licensed Product is licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer may add and/or substitute from time to time new Registered Users as long as the aggregate number of Registered Users does not exceed at any point in time the number of Licenses in effect at such time for that particular Licensed Product and, provided further, that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on the computer server that is designated by the Customer in connection with the initial installation of such product and that has one unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner (physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case +(a) Customer shall give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server Products to a different Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to Customer directly by the manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled Third Party Products are also described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party Components and/or Bundled Third Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing Third Party Components or Bundled Third Party Products may be subject to additional or different third party terms, of which PTC shall notify the Customer at the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on Support Services for such software. After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed Software that formed the basis for Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. + + 2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product). Such report shall be certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay shall be grounds for termination in accordance with Section 7 hereof. + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed Products. All copies of the Licensed Products, in whatever form provided by PTC or made by Customer, shall remain the property of PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. + + See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed Products for which Usage License Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support Services in accordance with Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) evaluation, "trial" or "express" Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, (v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed Products that are provided by PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product(s) or (b) use diligent efforts to repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the Error is received by PTC within the Warranty Period and Customer supplies such additional information regarding the Error as PTC may reasonably request. If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED PRODUCTS, INCLUDING THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed Products will be uninterrupted or error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 P TC's Ob li gati on to Ind emn ify C u sto mer . PTC, at its own expense, will defend any action brought against Customer based on a claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on such claim and all negotiations for its settlement or compromise and shall bear the costs of the same (save where one or more of the exclusions in Section 5.3 applies); and © Customer shall cooperate fully at PTC's expense with PTC in the defense, settlement or compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all claims relating to infringement of any intellectual property right. + + 5.2 P TC's Righ t to Act to P reven t a Clai m + + + If a claim described in Section 5.1 hereof occurs or, in PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or © terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by Customer for such Licensed Product depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclu sio n s fro m P TC's Ob li gati o n to In d emn ify Cu sto mer . PTC shall have no liability to Customer under Section 5.1 hereof or otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed Product in combination with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed Product in an application or environment for which it was not designed or not contemplated under this Agreement; © use of other than a current release of the Licensed Product(s) provided to Customer; (d) modification of the Licensed Product by anyone other than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other proprietary right in which Customer has an interest. + + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of PTC, its subsidiaries and affiliates, and each of their respective directors, officers, employees or agents, with respect to the Licensed Products and Services, including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 ABOVE, THE MAXIMUM LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND © SPECIAL, INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE HOWSOEVER CAUSED; IN EACH CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section 6 shall not apply to any claim in respect of death or personal injury. + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses (i) through (vii) of Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section 7.1(a) above) of this Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in Customer's possession or in use. + + 7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way connected with this Agreement shall be governed by and construed in accordance with the laws of the Commonwealth of Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform Computer Information Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the International Sale of Goods. All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; © if given by express courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any of Customer's rights or obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's home country or countries, and that the transfer of the Licensed Products or related technology to Customer's employees, affiliates, or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State Department's Nonproliferation Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked Persons or any similar Export Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. Government, including but not limited to persons listed on the Restricted Parties Lists, or © engaged in activities related to the design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the remaining provisions and such provisions determined to be invalid shall be deemed severed from this Agreement and, to the extent possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between PTC and Customer with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed Product(s) under a United States government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government contract. + + +Schedule A - Purchases from PTC Affiliates + +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set forth below. + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +Belgium, Netherlands, Parametric Technology Nederland B.V. Netherlands +Luxembourg +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, +Germany +France Parametric Technology S.A. France +Ireland PTC Software and Services (Ireland) +Limited Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, +Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the PTC Software and Services (Ireland) +Limited Republic of Ireland +European Union +Turkey, Kosovo, Serbia, PTC Software and Services (Ireland) +Limited Republic of Ireland +Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and +Albania +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the +Chamber of Commerce and Industry of the Russian Federation in Moscow + +Belarus Moldova, Ukraine, PTC Software and Services (Ireland) +Limited Republic of Ireland +Armenia, Georgia, Azerbaijan, +Kazakhstan, Kyrgyz stan, +Tajikistan, Turkmenistan, and +Uzbekistan +Norway, Sweden, and Denmark, PTC Sweden AB Sweden +Finland, Iceland, and the Faeroe +Islands +Japan PTC Japan K.K. Japan / Tokyo District Court + + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +China Parametric Technology (Shanghai) The People's Republic of China/China +International Economic and Trade +Arbitration Commission in Shanghai + Software Co., Ltd. +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +including Australia and New +Zealand, but excluding China, +Japan and Taiwan) +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order Commonwealth of Massachu setts, + United States + +* Specific Provisions for Austria, Germany and Switzerland: + +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following provisions shall have no applicability to any Licensed Products or Services purchased outside of Austria, Germany or Switzerland. References to sections below are references to the applicable sections in the body of the Agreement. + +* Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve information necessary to achieve interoperability of an independently created computer program with other software programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and (iii) PTC, upon Customer's written request, has not made available the information required for this within a reasonable period. + +* Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of Warranties) are hereby replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the Customer inspects the Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious Errors in writing within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product(s) or (b) repair the Error, provided that notice of the Error is received by PTC within the periods set forth in Section 4.2 and Customer provides such additional information regarding the Error as PTC may reasonably request. If the repair (either by providing a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: (i) rescission of the affected order so that PTC provides a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of PTC or its sales representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on PTC only to the extent to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for PTC resulting from such guarantee. + +* Section 6 is hereby replaced by the following provisions: + +6.Limitation of Liability + +6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + +6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC breaches material contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of PTC who are not officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + +6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + +6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or loss of profit. + +6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed Product(s), the warranty limitation period pursuant to Section 4.2 shall apply. + +6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act (Produkthaftungsgesetz), for injury of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition (Beschaffenheitsgarantie) remains unaffected. + +6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + +6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other phenomena which could put individual data or an entire data stock at risk. + +Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as "fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student Edition," "Schools Edition," "Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic Edition/Version," or otherwise designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable Documentation, provided that Customer informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. "License" shall have the meaning set out in Section 1.1 of the body of the Agreement. +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant to the terms hereof) or, if no Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or the invoice, and such License includes Support Services during such License Term at no additional fee. + +"License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable Quote, as well as (i) any software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc.com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support Services ordered, may also include telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to connect to an ERP system and a CRM system, two licenses of such adapter will be required. The Licensed Products that are Per Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the applicable Licensed Product or, if no such document is provided, Customer's purchase order for such Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town (based on postal address) shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed Products. "Training Services" does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed Products for purposes of this Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed Product in the original Designated Country and the License fee applicable to the installation of such Licensed Product in the Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable Licensed Product and that, during the period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed Product in accordance with the terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: + +Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a time period of twelve (12) months or for such other period specified in Customer's order accepted by PTC (a "Support Services Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no additional fee. If Customer does not order Support Services to commence on shipment of the Licensed Product(s), or if Customer at any time discontinues Support Services, and in either case subsequently wishes to obtain Support Services, Customer must pay (i) the then current fees for Support Services and (ii) the fees for Support Services for any period for which Customer has not purchased Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are described on http://www.ptc.com at + +http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. With respect to Registered User Products, e-Learning products and Integrity Concurrent User and Server Licensed Products, Support Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with the level of Support Services Customer has purchased. The services offered under any Support Services Plan may change from time to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which PTC will provide telephone support will vary depending upon the level of Support Services ordered by Customer. For all levels of Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support Services that include telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC shall use diligent efforts to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may reasonably request. + +© New Releases. PTC will provide Customer with one copy of each New Release for each Licensed Product for which Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, environment, databases or other system components which adversely affect the Licensed Products; (iii) caused by Customer's modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a failure by the Customer to implement recommendations in respect of solutions to Errors previously provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is responsible for the distribution of New Releases to any of Customer's additional locations where Licensed Products are authorized to be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality contained within the Licensed Products, all of which are Customer's sole responsibility. + + +END OF (4) Ion GeneStudio™ S5 V5.18 END USER LICENSE AGREEMENT +**************************************************** -2. Redistributions in binary form must reproduce the above copyright -notice, -this list of conditions and the following disclaimer in the -documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -**END OF (2) SERVICE & SUPPORT TELEMETRY MODULE Software VERSION 2.0.1 -END USER LICENSE AGREEMENT** diff --git a/buildTools/build.sh b/buildTools/build.sh index e6364a94..d4846696 100755 --- a/buildTools/build.sh +++ b/buildTools/build.sh @@ -16,7 +16,6 @@ MODULES=${MODULES-" pipeline publishers tsconfig - RSM "} PROJECT_ROOT=`pwd` diff --git a/buildTools/cmake/CMakeLists.compiler.txt b/buildTools/cmake/CMakeLists.compiler.txt index 742ddf28..c71b6dd2 100644 --- a/buildTools/cmake/CMakeLists.compiler.txt +++ b/buildTools/cmake/CMakeLists.compiler.txt @@ -92,6 +92,7 @@ if (${LSB_RELEASE_CODENAME} STREQUAL "bionic") "-maxrregcount=48" ) else() SET( CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} + "-Wno-deprecated-gpu-targets" "-D_MWAITXINTRIN_H_INCLUDED" "-D_FORCE_INLINES" "-std=c++11" "-O2" "--compiler-options=-fno-strict-aliasing" "-g" "--use_fast_math" "-gencode=arch=compute_20,code=sm_20" "-gencode=arch=compute_30,code=sm_30" diff --git a/buildTools/cmake/CMakeLists.dependencies.TMAP.txt b/buildTools/cmake/CMakeLists.dependencies.TMAP.txt new file mode 100644 index 00000000..dd38fc10 --- /dev/null +++ b/buildTools/cmake/CMakeLists.dependencies.TMAP.txt @@ -0,0 +1,187 @@ +# Copyright (C) 2013 Ion Torrent Systems, Inc. All Rights Reserved + +set (ION_TS_EXTERNAL "${PROJECT_SOURCE_DIR}/../external/") +#set (ION_TS_EXTERNAL "${CMAKE_BINARY_DIR}/external/") + +set(ION_UPDATE_SERVER "updates.iontorrent.com") # internal developer can use just "updates" + +# Use the closest ION_UPDATE_SERVER we can find. +#message(STATUS "Searching for an ION_UPDATE_SERVER...") +#foreach ( SERVER updates updates.itw updates.iontorrent.com ) +# # See if we can look up the server in question. +# execute_process( COMMAND host -W 2 -t A ${SERVER} +# RESULT_VARIABLE NOT_FOUND OUTPUT_QUIET ERROR_QUIET ) +# +# # If we can find it, great! We're done! +# if ( NOT ${NOT_FOUND} ) +# set( ION_UPDATE_SERVER ${SERVER} ) +# break() +# endif() +#endforeach() + +# If we find a server, let everyone know. +if (ION_UPDATE_SERVER) + message(STATUS "Using ION_UPDATE_SERVER: ${ION_UPDATE_SERVER}") +else() + message(WARNING "Could not find a valid ION_UPDATE_SERVER.") +endif() + +include(ExternalProject) + +find_program(LSB_RELEASE_COMMAND lsb_release) +if(LSB_RELEASE_COMMAND) + execute_process(COMMAND ${LSB_RELEASE_COMMAND} -s -c + OUTPUT_VARIABLE TMP_LSB_RELEASE_CODENAME + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(TOLOWER ${TMP_LSB_RELEASE_CODENAME} LSB_RELEASE_CODENAME) + message(STATUS "LSB release codename: ${LSB_RELEASE_CODENAME}") +endif(LSB_RELEASE_COMMAND) + +# If defined while running cmake look for mkl +# e.g. -DMKL_INSTALL_PATH=/home/ionadmin/intel/composer_xe_2013_sp1.0.080/mkl +if (DEFINED MKL_INSTALL_PATH) + message("Setting mkl root to ${MKL_INSTALL_PATH}") + include_directories(${MKL_INSTALL_PATH}/include) + set(MKL_LINK_LIBS "-Wl,--start-group ${MKL_INSTALL_PATH}/lib/intel64/libmkl_intel_lp64.a ${MKL_INSTALL_PATH}/lib/intel64/libmkl_core.a ${MKL_INSTALL_PATH}/lib/intel64/libmkl_sequential.a -Wl,--end-group") +else() + message("Not setting mkl root ${MKL_INSTALL_PATH}") +endif() + + +#option(ION_USE_MKL "Using Intel MKL" OFF) +#mark_as_advanced(ION_USE_MKL) + +#option(ION_USE_SYSTEM_CUDA "Use CUDA system libraries" OFF) +#mark_as_advanced(ION_USE_SYSTEM_CUDA) + +#option(ION_USE_CUDA "Compile CUDA code" ON) +#mark_as_advanced(ION_USE_CUDA) + +#option(ION_USE_SYSTEM_SAMTOOLS "Use samtools system libraries" OFF) +#mark_as_advanced(ION_USE_SYSTEM_SAMTOOLS) + +#option(ION_USE_SYSTEM_BAMTOOLS "Use bamtools system libraries" OFF) +#mark_as_advanced(ION_USE_SYSTEM_BAMTOOLS) + +option (ION_USE_SYSTEM_LIBSTATGEN "Use libstatgen system libraries" OFF) +mark_as_advanced(ION_USE_SYSTEM_LIBSTATGEN) + + + +# uncomment for profiling if gprofile installed +# add_library(PROFILE STATIC IMPORTED) +# set_property(TARGET PROFILE PROPERTY IMPORTED_LOCATION "/usr/local/lib/libprofiler.a") + +include_directories("${PROJECT_BINARY_DIR}") +include_directories("${PROJECT_SOURCE_DIR}") +include_directories("${PROJECT_SOURCE_DIR}/../external/jsoncpp-src-amalgated0.6.0-rc1") + +# wget https://github.com/samtools/htslib/archive/1.2.1.tar.gz +# md5sum : 81f5f1aa17a188a6b6250ca67d83384d +# tar xvzf 1.2.1.tar.gz +# tar cvzf htslib-1.2.1.tar.gz htslib-1.2.1 +# md5sum : 028c9110bd80d40e13dbd8270ee7eb2b +if(NOT ION_USE_SYSTEM_HTSLIB) + set(proj_name "htslib") + set(proj_version "1.2.1+ion2") + set(proj_name_version "${proj_name}-${proj_version}") + ExternalProject_add(${proj_name}_proj + URL "http://${ION_UPDATE_SERVER}/updates/software/external/htslib-1.2.1.tar.gz" + #URL_MD5 028c9110bd80d40e13dbd8270ee7eb2b + PREFIX ${PROJECT_BINARY_DIR}/../${proj_name_version}-prefix + SOURCE_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version} + #BINARY_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version}-build + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND make + INSTALL_COMMAND "" + PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/htslib-1.2+ion2.patch" + ) + set(ION_HTSLIB_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}/libhts.a") + include_directories("${PROJECT_BINARY_DIR}/../${proj_name_version}") +else() + set(ION_HTSLIB_LIBS "hts") +endif() + + +# wget https://github.com/samtools/samtools/archive/1.2.tar.gz +# md5sum 2748356ef392c0694ca1142de37cf2aa +# tar xvzf 1.2.tar.gz +# tar cvzf samtools-1.2.tar.gz samtools-1.2 +# md5sum f94f6ea20f5d581459f90daa39020a60 +if (NOT ION_USE_SYSTEM_SAMTOOLS) + set(proj_name "samtools") + set(proj_version "1.2+ion4") + set(proj_name_version "${proj_name}-${proj_version}") + ExternalProject_add(${proj_name} + DEPENDS htslib_proj + URL "http://${ION_UPDATE_SERVER}/updates/software/external/samtools-1.2.tar.gz" + #URL_MD5 f94f6ea20f5d581459f90daa39020a60 + PREFIX ${PROJECT_BINARY_DIR}/../${proj_name_version}-prefix + SOURCE_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version} + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND make + INSTALL_COMMAND "" + PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/samtools-1.2+ion4.patch" + ) + include_directories("${PROJECT_BINARY_DIR}/../${proj_name_version}") + set(ION_SAMTOOLS_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}/libbam.a") + message(STATUS "SAMTOOLS_INCLUDE_DIRS: ${PROJECT_BINARY_DIR}/../${proj_name_version}") +else() + set(ION_SAMTOOLS_LIBS libbam.a) + include_directories("/usr/include/samtools") + message(STATUS "SAMTOOLS_INCLUDE_DIRS: /usr/include/samtools") +endif() + + +if (NOT ION_USE_SYSTEM_BAMTOOLS) + set(proj_name "bamtools") + if (${LSB_RELEASE_CODENAME} STREQUAL "bionic") + set(revision_tag 740562a67a3)#set date below accordingly + set(proj_version "2.4.2.20190207+git${revision_tag}") + else() + set(revision_tag 15eadb925f)#set date below accordingly + set(proj_version "2.4.0.20150702+git${revision_tag}") + endif() + + set(proj_name_version "${proj_name}-${proj_version}") + set(bamtools_patch_file "${proj_name_version}.patch") + ExternalProject_add(${proj_name} + URL "http://${ION_UPDATE_SERVER}/updates/software/external/${proj_name_version}.tar.gz" + PREFIX ${PROJECT_BINARY_DIR}/../${proj_name_version}-prefix + SOURCE_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version} + BINARY_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version}-build + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX:PATH=${PROJECT_BINARY_DIR}/../${proj_name_version}-install + PATCH_COMMAND patch -p0 -t -N < "${PROJECT_SOURCE_DIR}/../external/${bamtools_patch_file}" + ) + include_directories("${PROJECT_BINARY_DIR}/../${proj_name_version}-install/include/bamtools") + set(ION_BAMTOOLS_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}-install/lib/bamtools/libbamtools.a") +else() + find_library(ION_BAMTOOLS_LIBS NAMES bamtools libbamtools) + include_directories("/usr/include/bamtools") + add_custom_target(bamtools) +endif() + +if (NOT ION_USE_SYSTEM_LIBSTATGEN) + set (proj_name "libStatGen") + set (proj_version "1.0.14") + set (proj_name_version "${proj_name}-${proj_version}") + ExternalProject_add(${proj_name} + URL "https://github.com/statgen/libStatGen/archive/v1.0.14.tar.gz" + PREFIX ${PROJECT_BINARY_DIR}/../${proj_name_version}-prefix + SOURCE_DIR ${PROJECT_BINARY_DIR}/../${proj_name_version} + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND make USER_WARNINGS=-Wall + INSTALL_COMMAND "" + #PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/libstatgen-1.0.14.patch" + ) + set(ION_STATGEN_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}/libStatGen.a") + set(ION_STATGEN_INCLUDES "${PROJECT_BINARY_DIR}/../${proj_name_version}/include") +else() + find_library(ION_BAMTOOLS_LIBS NAMES libstatgen) + include_directories("/usr/include/libstatgen") + add_custom_target(libstatgen) +endif() diff --git a/buildTools/cmake/CMakeLists.dependencies.txt b/buildTools/cmake/CMakeLists.dependencies.txt index 471485d7..5e7d6841 100644 --- a/buildTools/cmake/CMakeLists.dependencies.txt +++ b/buildTools/cmake/CMakeLists.dependencies.txt @@ -3,7 +3,9 @@ set (ION_TS_EXTERNAL "${PROJECT_SOURCE_DIR}/../external/") #set (ION_TS_EXTERNAL "${CMAKE_BINARY_DIR}/external/") -set(ION_UPDATE_SERVER "updates.iontorrent.com") # internal developer can use just "updates" +if(NOT ION_UPDATE_SERVER) + set(ION_UPDATE_SERVER "updates.iontorrent.com") # internal developer can use just "updates" +endif() # Use the closest ION_UPDATE_SERVER we can find. #message(STATUS "Searching for an ION_UPDATE_SERVER...") @@ -206,9 +208,9 @@ endif() if(NOT ION_USE_SYSTEM_ARMADILLO) set(proj_name "armadillo") - set(proj_version "6.100.0+ion0") + set(proj_version "6.100.0+ion1") set(proj_name_version "${proj_name}-${proj_version}") - set(ARMADILLO_PATCH "${PROJECT_SOURCE_DIR}/../external/armadillo-6.100.0+ion0.patch") + set(ARMADILLO_PATCH "${PROJECT_SOURCE_DIR}/../external/armadillo-6.100.0+ion1.patch") ExternalProject_add(${proj_name}_proj URL "http://${ION_UPDATE_SERVER}/updates/software/external/armadillo-6.100.0.tar.gz" #URL_MD5 e8400bc7adb65fa0edc8c8ccb49b60eb @@ -285,7 +287,7 @@ include_directories("${PROJECT_SOURCE_DIR}/../external/jsoncpp-src-amalgated0.6. # md5sum : 028c9110bd80d40e13dbd8270ee7eb2b if(NOT ION_USE_SYSTEM_HTSLIB) set(proj_name "htslib") - set(proj_version "1.2.1+ion0") + set(proj_version "1.2.1+ion2") set(proj_name_version "${proj_name}-${proj_version}") ExternalProject_add(${proj_name}_proj URL "http://${ION_UPDATE_SERVER}/updates/software/external/htslib-1.2.1.tar.gz" @@ -297,7 +299,7 @@ if(NOT ION_USE_SYSTEM_HTSLIB) CONFIGURE_COMMAND "" BUILD_COMMAND make INSTALL_COMMAND "" - PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/htslib-1.2+ion0.patch" + PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/htslib-1.2+ion2.patch" ) set(ION_HTSLIB_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}/libhts.a") include_directories("${PROJECT_BINARY_DIR}/../${proj_name_version}") @@ -313,7 +315,7 @@ endif() # md5sum f94f6ea20f5d581459f90daa39020a60 if (NOT ION_USE_SYSTEM_SAMTOOLS) set(proj_name "samtools") - set(proj_version "1.2+ion2") + set(proj_version "1.2+ion4") set(proj_name_version "${proj_name}-${proj_version}") ExternalProject_add(${proj_name} DEPENDS htslib_proj @@ -325,7 +327,7 @@ if (NOT ION_USE_SYSTEM_SAMTOOLS) CONFIGURE_COMMAND "" BUILD_COMMAND make INSTALL_COMMAND "" - PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/samtools-1.2+ion2.patch" + PATCH_COMMAND patch -p1 -t -N < "${ION_TS_EXTERNAL}/samtools-1.2+ion4.patch" ) include_directories("${PROJECT_BINARY_DIR}/../${proj_name_version}") set(ION_SAMTOOLS_LIBS "${PROJECT_BINARY_DIR}/../${proj_name_version}/libbam.a") diff --git a/buildTools/terms-of-use.txt b/buildTools/terms-of-use.txt index 9edf73b6..8fb701c1 100644 --- a/buildTools/terms-of-use.txt +++ b/buildTools/terms-of-use.txt @@ -1,12 +1,13 @@ -Torrent Suite Software Version 5.8 +This end-user license agreement contains 4 separate and distinct licenses: (1) Torrent Suite(TM) Software Version 5.18 Open Source License (pgs. 1-32), (2) Service & Support Telemetry Module Software Version 2.0.1 End User License Agreement (pgs. 32 - 47), (3) Ion Chef(TM) Instrument Software Version 5.18 License Agreement (pgs. 47 - 182), and (4) Ion GeneStudio(TM) S5 V5.18 License Agreement (pgs. 182 - 236). + +(1) Torrent Suite(TM) Software Version 5.18 ===================================================================== -Torrent Suite(tm) Software v5.8: This software provides for the analysis and storage of data received from the Ion Personal Genome Machine(tm) Sequencer, -the Ion Proton(tm) Sequencer, the Ion GeneStudio S5 Sequencer or the Ion GeneStudio S5 XL Sequencer, -the Ion GeneStudio S5 Prime or the Ion GeneStudio S5 Pro. +Torrent Suite(TM) Software v5.18: This software provides for the analysis and storage of data received from the Ion Personal Genome Machine(TM) (PGM(TM)) Sequencer, the Ion Proton(TM) Sequencer, the Ion S5TM Sequencer, the Ion S5TM XL Sequencer, or the Ion GeneStudio(TM) S5 Prime. +The Ion Chef(TM) System provides automated, high-throughput template preparation and chip loading for use with an Ion Personal Genome Machine(TM) PGM(TM) Sequencer, Ion Proton(TM) Sequencer, Ion S5(TM) Sequencer, Ion S5(TM) XL Sequencer, or the Ion GeneStudio(TM) S5 Prime. -November 30, 2017 +May 26th, 2022 -Copyright (C) 2017 Life Technologies Corporation +Copyright (C) 2011 - 2022 Life Technologies Corporation All Rights Reserved. This program is free software; you can redistribute it and/or modify it @@ -23,12 +24,13 @@ with this program (see Section 2 below); if not, write to the Free Software Foun 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You can also find the GPL version 2 on the GNU web site: https://www.gnu.org/licenses/gpl-2.0.html - -1. Third Party Software Notices and Licenses ===================================================================== - + 1. Third Party Software Notices and Licenses +===================================================================== + This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found below. In order to use this software, the end-user must abide by the terms and conditions of these third party licenses. + Armadillo ------------------------------------------------------------- @@ -37,622 +39,238 @@ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -Mozilla Public License Version 2.0 -------------------------------------------------------------- - -1. Definitions -------------------------------------------------------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions -------------------------------------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------------------------------------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination -------------------------------------------------------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - - - -6. Disclaimer of Warranty -------------------------------------------------------------- - -Covered Software is provided under this License on an "as is" basis, without -warranty of any kind, either expressed, implied, or statutory, including, -without limitation, warranties that the Covered Software is free of defects, -merchantable, fit for a particular purpose or non-infringing. The entire risk -as to the quality and performance of the Covered Software is with You. Should -any Covered Software prove defective in any respect, You (not any Contributor) -assume the cost of any necessary servicing, repair, or correction. This -disclaimer of warranty constitutes an essential part of this License. No use of -any Covered Software is authorized under this License except under this -disclaimer. - - -7. Limitation of Liability -------------------------------------------------------------- - -Under no circumstances and under no legal theory, whether tort (including -negligence), contract, or otherwise, shall any Contributor, or anyone who -distributes Covered Software as permitted above, be liable to You for any -direct, indirect, special, incidental, or consequential damages of any -character including, without limitation, damages for lost profits, loss of -goodwill, work stoppage, computer failure or malfunction, or any and all other -commercial damages or losses, even if such party shall have been informed of -the possibility of such damages. This limitation of liability shall not apply -to liability for death or personal injury resulting from such party's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - - -8. Litigation -------------------------------------------------------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous -------------------------------------------------------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License -------------------------------------------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------------------------- - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice -------------------------------------------------------------- - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (C) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any`` + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + +HTS Lib +Samtools + + + + The MIT/Expat License +Copyright (C) 2008-2014 Genome Research Ltd. -HTS Lib and Samtools -------------------------------------------------------------- + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -The MIT/Expat License -Copyright (C) 2008-2014 Genome Research Ltd. + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. -VCF Lib -------------------------------------------------------------- +## VCF Lib The MIT License (see text above) -Copyright (c) 2012 Erik Garrison -Blas and Lapack -------------------------------------------------------------- -Copyright (c) 1992-2013 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. +Copyright (C) 2012 Erik Garrison -Copyright (c) 2000-2013 The University of California Berkeley. All rights reserved. +Blas -Copyright (c) 2006-2013 The University of Colorado Denver. All rights reserved. +Lapack + +Copyright (C) 1992-2013 The University of Tennessee and The University + of Tennessee Research Foundation. All rights + reserved. +Copyright (C) 2000-2013 The University of California Berkeley. All + rights reserved. +Copyright (C) 2006-2013 The University of Colorado Denver. All rights + reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer listed - in this license in the documentation and/or other materials - provided with the distribution. - - Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +* Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. The copyright holders provide no reassurances that the source code provided does not infringe any patent, copyright, or any other @@ -673,794 +291,608 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Django -------------------------------------------------------------- -Copyright (c) Django Software Foundation and individual contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of Django nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Cuda Toolkit -------------------------------------------------------------- -END USER LICENSE AGREEMENT (EULA) - -Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. - -1.1. Definitions - - 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. - - 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. - - 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. - -1.2. Grant of License - - 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: - - 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; (c) Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. - - 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - - 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - - 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - - 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - - 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -No Modifications -If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - -1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - -1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - -1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - -1.6. Disclaimer of Warranties and Limitations on Liability - - 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. - - 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - -1.7. Miscellaneous - - 1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - - 1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other -party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - - 1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or (c) Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. - 1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. - 1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +## Django +Copyright (C) Django Software Foundation and individual contributors. - 1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. +All rights reserved. - 1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. -1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. -Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - -1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: - - -1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - -2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - -3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html. In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: - - LLVM Release License - - University of Illinois/NCSA Open Source License Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: - - PCRE LICENCE - - PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. - - - THE BASIC LIBRARY FUNCTIONS - - Written by: Philip Hazel - Email local part: ph10 - Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. - Copyright (c) 1997-2012 University of Cambridge All rights reserved. - - PCRE JUST-IN-TIME COMPILATION SUPPORT - - Written by: Zoltan Herczeg - Email local part: hzmester - Emain domain: freemail.hu - Copyright(c) 2010-2012 Zoltan Herczeg All rights reserved. - - STACK-LESS JUST-IN-TIME COMPILER - - Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(c) 2009-2012 Zoltan Herczeg All rights reserved. - - THE C++ WRAPPER FUNCTIONS - - Contributed by: Google Inc. Copyright (c) 2007-2012, Google Inc. All rights reserved. - - THE "BSD" LICENCE - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (c) 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- (C) Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright (c) 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - -12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright (C) 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Ansible -------------------------------------------------------------- - -Kendo UI -------------------------------------------------------------- - -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright (c) 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, -but changing it is not allowed. - -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds -of works. - -The licenses for most software and other practical works are designed to take away your -freedom to share and change the works. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change all versions of a program--to -make sure it remains free software for all its users. We, the Free Software Foundation, use -the GNU General Public License for most of our software; it applies also to any other -work released this way by its authors. You can apply it to your programs, too. -When we speak of free software, we are referring to freedom, not price. Our General -Public Licenses are designed to make sure that you have the freedom to distribute copies -of free software (and charge for them if you wish), that you receive source code or can -get it if you want it, that you can change the software or use pieces of it in new free -programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking -you to surrender the rights. Therefore, you have certain responsibilities if you distribute -copies of the software, or if you modify it: responsibilities to respect the freedom of -others. -For example, if you distribute copies of such a program, whether gratis or for a fee, you -must pass on to the recipients the same freedoms that you received. You must make sure -that they, too, receive or can get the source code. And you must show them these terms -so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - - (1) assert copyright on the software, and - (2) offer you this License giving you legal permission to copy, distribute and/or modify it. -For the developers' and authors' protection, the GPL clearly explains that there is no -warranty for this free software. For both users' and authors' sake, the GPL requires that -modified versions be marked as changed, so that their problems will not be attributed -erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the -software inside them, although the manufacturer can do so. This is fundamentally -incompatible with the aim of protecting users' freedom to change the software. The -systematic pattern of such abuse occurs in the area of products for individuals to use, -which is precisely where it is most unacceptable. Therefore, we have designed this version -of the GPL to prohibit the practice for those products. If such problems arise substantially -in other domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not -allow patents to restrict development and use of software on general-purpose computers, -but in those that do, we wish to avoid the special danger that patents applied to a free -program could make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS - -0. Definitions. -"This License" refers to version 3 of the GNU General Public License. -"Copyright" also means copyright-like laws that apply to other kinds of works, such as -semiconductor masks. -"The Program" refers to any copyrightable work licensed under this License. Each -licensee is addressed as "you". "Licensees" and "recipients" may be individuals or -organizations. -To "modify" a work means to copy from or adapt all or part of the work in a fashion -requiring copyright permission, other than the making of an exact copy. The resulting -work is called a "modified version" of the earlier work or a work "based on" the earlier -work. -A "covered work" means either the unmodified Program or a work based on the Program. -To "propagate" a work means to do anything with it that, without permission, would -make you directly or secondarily liable for infringement under applicable copyright law, -except executing it on a computer or modifying a private copy. Propagation includes -copying, distribution (with or without modification), making available to the public, and -in some countries other activities as well. -To "convey" a work means any kind of propagation that enables other parties to make or -receive copies. Mere interaction with a user through a computer network, with no transfer -of a copy, is not conveying. -An interactive user interface displays "Appropriate Legal Notices" to the extent that it -includes a convenient and prominently visible feature that (1) displays an appropriate -copyright notice, and (2) tells the user that there is no warranty for the work (except to -the extent that warranties are provided), that licensees may convey the work under this -License, and how to view a copy of this License. If the interface presents a list of user -commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The "source code" for a work means the preferred form of the work for making -modifications to it. "Object code" means any non-source form of a work. -A "Standard Interface" means an interface that either is an official standard defined by a -recognized standards body, or, in the case of interfaces specified for a particular -programming language, one that is widely used among developers working in that -language. -The "System Libraries" of an executable work include anything, other than the work as a -whole, that (a) is included in the normal form of packaging a Major Component, but -which is not part of that Major Component, and (b) serves only to enable use of the work -with that Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A "Major Component", in -this context, means a major essential component (kernel, window system, and so on) of -the specific operating system (if any) on which the executable work runs, or a compiler -used to produce the work, or an object code interpreter used to run it. -The "Corresponding Source" for a work in object code form means all the source code -needed to generate, install, and (for an executable work) run the object code and to -modify the work, including scripts to control those activities. However, it does not -include the work's System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but which are not part -of the work. For example, Corresponding Source includes interface definition files -associated with source files for the work, and the source code for shared libraries and -dynamically linked subprograms that the work is specifically designed to require, such as -by intimate data communication or control flow between those subprograms and other -parts of the work. -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the -Program, and are irrevocable provided the stated conditions are met. This License -explicitly affirms your unlimited permission to run the unmodified Program. The output -from running a covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your rights of fair use or -other equivalent, as provided by copyright law. -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey covered -works to others for the sole purpose of having them make modifications exclusively for -you, or provide you with facilities for running those works, provided that you comply -with the terms of this License in conveying all material for which you do not control -copyright. Those thus making or running the covered works for you must do so -exclusively on your behalf, under your direction and control, on terms that prohibit them -from making any copies of your copyrighted material outside their relationship with you. -Conveying under any other circumstances is permitted solely under the conditions stated -below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any -applicable law fulfilling obligations under article 11 of the WIPO copyright treaty -adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of -such measures. -When you convey a covered work, you waive any legal power to forbid circumvention of -technological measures to the extent such circumvention is effected by exercising rights -under this License with respect to the covered work, and you disclaim any intention to -limit operation or modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any -medium, provided that you conspicuously and appropriately publish on each copy an -appropriate copyright notice; keep intact all notices stating that this License and any non- -permissive terms added in accord with section 7 apply to the code; keep intact all notices -of the absence of any warranty; and give all recipients a copy of this License along with -the Program. -You may charge any price or no price for each copy that you convey, and you may offer -support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from -the Program, in the form of source code under the terms of section 4, provided that you -also meet all of these conditions: - a) The work must carry prominent notices stating that you modified it, and giving -a relevant date. - b) The work must carry prominent notices stating that it is released under this -License and any conditions added under section 7. This requirement modifies the -requirement in section 4 to "keep intact all notices". - c) You must license the entire work, as a whole, under this License to anyone who -comes into possession of a copy. This License will therefore apply, along with any -applicable section 7 additional terms, to the whole of the work, and all its parts, -regardless of how they are packaged. This License gives no permission to license -the work in any other way, but it does not invalidate such permission if you have -separately received it. - d) If the work has interactive user interfaces, each must display Appropriate Legal -Notices; however, if the Program has interactive interfaces that do not display -Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are -not by their nature extensions of the covered work, and which are not combined with it -such as to form a larger program, in or on a volume of a storage or distribution medium, is -called an "aggregate" if the compilation and its resulting copyright are not used to limit -the access or legal rights of the compilation's users beyond what the individual works -permit. Inclusion of a covered work in an aggregate does not cause this License to apply -to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, -provided that you also convey the machine-readable Corresponding Source under the -terms of this License, in one of these ways: - a) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by the Corresponding Source fixed -on a durable physical medium customarily used for software interchange. - b) Convey the object code in, or embodied in, a physical product (including a -physical distribution medium), accompanied by a written offer, valid for at least -three years and valid for as long as you offer spare parts or customer support for -that product model, to give anyone who possesses the object code either (1) a -copy of the Corresponding Source for all the software in the product that is -covered by this License, on a durable physical medium customarily used for -software interchange, for a price no more than your reasonable cost of physically -performing this conveying of source, or (2) access to copy the Corresponding -Source from a network server at no charge. - c) Convey individual copies of the object code with a copy of the written offer to -provide the Corresponding Source. This alternative is allowed only occasionally -and noncommercially, and only if you received the object code with such an offer, -in accord with subsection 6b. - d) Convey the object code by offering access from a designated place (gratis or -for a charge), and offer equivalent access to the Corresponding Source in the same -way through the same place at no further charge. You need not require recipients -to copy the Corresponding Source along with the object code. If the place to copy -the object code is a network server, the Corresponding Source may be on a -different server (operated by you or a third party) that supports equivalent -copying facilities, provided you maintain clear directions next to the object code -saying where to find the Corresponding Source. Regardless of what server hosts -the Corresponding Source, you remain obligated to ensure that it is available for as -long as needed to satisfy these requirements. - e) Convey the object code using peer-to-peer transmission, provided you inform -other peers where the object code and Corresponding Source of the work are -being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the object -code work. -A "User Product" is either (1) a "consumer product", which means any tangible personal -property which is normally used for personal, family, or household purposes, or (2) -anything designed or sold for incorporation into a dwelling. In determining whether a -product is a consumer product, doubtful cases shall be resolved in favor of coverage. For -a particular product received by a particular user, "normally used" refers to a typical or -common use of that class of product, regardless of the status of the particular user or of -the way in which the particular user actually uses, or expects or is expected to use, the -product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent the -only significant mode of use of the product. -"Installation Information" for a User Product means any methods, procedures, -authorization keys, or other information required to install and execute modified versions -of a covered work in that User Product from a modified version of its Corresponding -Source. The information must suffice to ensure that the continued functioning of the -modified object code is in no case prevented or interfered with solely because -modification has been made. -If you convey an object code work under this section in, or with, or specifically for use in, -a User Product, and the conveying occurs as part of a transaction in which the right of -possession and use of the User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the Corresponding Source -conveyed under this section must be accompanied by the Installation Information. But -this requirement does not apply if neither you nor any third party retains the ability to -install modified object code on the User Product (for example, the work has been -installed in ROM). -The requirement to provide Installation Information does not include a requirement to -continue to provide support service, warranty, or updates for a work that has been -modified or installed by the recipient, or for the User Product in which it has been -modified or installed. Access to a network may be denied when the modification itself -materially and adversely affects the operation of the network or violates the rules and -protocols for communication across the network. -Corresponding Source conveyed, and Installation Information provided, in accord with -this section must be in a format that is publicly documented (and with an implementation -available to the public in source code form), and must require no special password or key -for unpacking, reading or copying. - -7. Additional Terms. -"Additional permissions" are terms that supplement the terms of this License by making -exceptions from one or more of its conditions. Additional permissions that are applicable -to the entire Program shall be treated as though they were included in this License, to the -extent that they are valid under applicable law. If additional permissions apply only to -part of the Program, that part may be used separately under those permissions, but the -entire Program remains governed by this License without regard to the additional -permissions. -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional permissions -may be written to require their own removal in certain cases when you modify the work.) -You may place additional permissions on material, added by you to a covered work, for -which you have or can give appropriate copyright permission. -Notwithstanding any other provision of this License, for material you add to a covered -work, you may (if authorized by the copyright holders of that material) supplement the -terms of this License with terms: - a) Disclaiming warranty or limiting liability differently from the terms of sections -15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or author -attributions in that material or in the Appropriate Legal Notices displayed by -works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or requiring that -modified versions of such material be marked in reasonable ways as different -from the original version; or - d) Limiting the use for publicity purposes of names of licensors or authors of the -material; or - e) Declining to grant rights under trademark law for use of some trade names, -trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that material by anyone -who conveys the material (or modified versions of it) with contractual -assumptions of liability to the recipient, for any liability that these contractual -assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered "further restrictions" within the -meaning of section 10. If the Program as you received it, or any part of it, contains a -notice stating that it is governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains a further restriction -but permits relicensing or conveying under this License, you may add to a covered work -material governed by the terms of that license document, provided that the further -restriction does not survive such relicensing or conveying. -If you add terms to a covered work in accord with this section, you must place, in the -relevant source files, a statement of the additional terms that apply to those files, or a -notice indicating where to find the applicable terms. -Additional terms, permissive or non-permissive, may be stated in the form of a separately -written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under -this License. Any attempt otherwise to propagate or modify it is void, and will -automatically terminate your rights under this License (including any patent licenses -granted under the third paragraph of section 11). -However, if you cease all violation of this License, then your license from a particular -copyright holder is reinstated (a) provisionally, unless and until the copyright holder -explicitly and finally terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to 60 days after the -cessation. -Moreover, your license from a particular copyright holder is reinstated permanently if the -copyright holder notifies you of the violation by some reasonable means, this is the first -time you have received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after your receipt of the -notice. -Termination of your rights under this section does not terminate the licenses of parties -who have received copies or rights from you under this License. If your rights have been -terminated and not permanently reinstated, you do not qualify to receive new licenses for -the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the -Program. Ancillary propagation of a covered work occurring solely as a consequence of -using peer-to-peer transmission to receive a copy likewise does not require acceptance. -However, nothing other than this License grants you permission to propagate or modify -any covered work. These actions infringe copyright if you do not accept this License. -Therefore, by modifying or propagating a covered work, you indicate your acceptance of -this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from -the original licensors, to run, modify and propagate that work, subject to this License. -You are not responsible for enforcing compliance by third parties with this License. -An "entity transaction" is a transaction transferring control of an organization, or -substantially all assets of one, or subdividing an organization, or merging organizations. If -propagation of a covered work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever licenses to the work -the party's predecessor in interest had or could give under the previous paragraph, plus a -right to possession of the Corresponding Source of the work from the predecessor in -interest, if the predecessor has it or can get it with reasonable efforts. -You may not impose any further restrictions on the exercise of the rights granted or -affirmed under this License. For example, you may not impose a license fee, royalty, or -other charge for exercise of rights granted under this License, and you may not initiate -litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent -claim is infringed by making, using, selling, offering for sale, or importing the Program or -any portion of it. - -11. Patents. -A "contributor" is a copyright holder who authorizes use under this License of the -Program or a work on which the Program is based. The work thus licensed is called the -contributor's "contributor version". -A contributor's "essential patent claims" are all patent claims owned or controlled by the -contributor, whether already acquired or hereafter acquired, that would be infringed by -some manner, permitted by this License, of making, using, or selling its contributor -version, but do not include claims that would be infringed only as a consequence of -further modification of the contributor version. For purposes of this definition, "control" -includes the right to grant patent sublicenses in a manner consistent with the requirements -of this License. -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under -the contributor's essential patent claims, to make, use, sell, offer for sale, import and -otherwise run, modify and propagate the contents of its contributor version. -In the following three paragraphs, a "patent license" is any express agreement or -commitment, however denominated, not to enforce a patent (such as an express -permission to practice a patent or covenant not to sue for patent infringement). To "grant" -such a patent license to a party means to make such an agreement or commitment not to -enforce a patent against the party. -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of charge and -under the terms of this License, through a publicly available network server or other -readily accessible means, then you must either (1) cause the Corresponding Source to be -so available, or (2) arrange to deprive yourself of the benefit of the patent license for this -particular work, or (3) arrange, in a manner consistent with the requirements of this -License, to extend the patent license to downstream recipients. "Knowingly relying" -means you have actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work in a country, -would infringe one or more identifiable patents in that country that you have reason to -believe are valid. -If, pursuant to or in connection with a single transaction or arrangement, you convey, or -propagate by procuring conveyance of, a covered work, and grant a patent license to -some of the parties receiving the covered work authorizing them to use, propagate, -modify or convey a specific copy of the covered work, then the patent license you grant -is automatically extended to all recipients of the covered work and works based on it. -A patent license is "discriminatory" if it does not include within the scope of its coverage, -prohibits the exercise of, or is conditioned on the non-exercise of one or more of the -rights that are specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is in the business of -distributing software, under which you make payment to the third party based on the -extent of your activity of conveying the work, and under which the third party grants, to -any of the parties who would receive the covered work from you, a discriminatory patent -license (a) in connection with copies of the covered work conveyed by you (or copies -made from those copies), or (b) primarily for and in connection with specific products or -compilations that contain the covered work, unless you entered into that arrangement, or -that patent license was granted, prior to 28 March 2007. -Nothing in this License shall be construed as excluding or limiting any implied license or -other defenses to infringement that may otherwise be available to you under applicable -patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that -contradict the conditions of this License, they do not excuse you from the conditions of -this License. If you cannot convey a covered work so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as a consequence -you may not convey it at all. For example, if you agree to terms that obligate you to -collect a royalty for further conveying from those to whom you convey the Program, the -only way you could satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or -combine any covered work with a work licensed under version 3 of the GNU Affero -General Public License into a single combined work, and to convey the resulting work. -The terms of this License will continue to apply to the part which is the covered work, but -the special requirements of the GNU Affero General Public License, section 13, -concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in spirit to the -present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program specifies that a -certain numbered version of the GNU General Public License "or any later version" -applies to it, you have the option of following the terms and conditions either of that -numbered version or of any later version published by the Free Software Foundation. If -the Program does not specify a version number of the GNU General Public License, you -may choose any version ever published by the Free Software Foundation. -If the Program specifies that a proxy can decide which future versions of the GNU -General Public License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the Program. -Later license versions may give you additional or different permissions. However, no -additional obligations are imposed on any author or copyright holder as a result of your -choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT -PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN -WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF -THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO -MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE -OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR -OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given -local legal effect according to their terms, reviewing courts shall apply local law that most -closely approximates an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a copy of the Program -in return for a fee. - -ion_timeout.sh -------------------------------------------------------------- - -GNU Lesser General Public License (LGPL) - -Version 2.1, February 1999 +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -Preamble +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. -This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. +3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. -When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. -For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. -We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. +## Cuda Toolkit -To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. +END USER LICENSE AGREEMENT (EULA) -Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Important Notice READ CAREFULLY: This Software License Agreement ("Agreement") for NVIDIA CUDA Toolkit, including computer software and associated documentation ("Software"), is the Agreement which governs use of the SOFTWARE of NVIDIA Corporation and its subsidiaries ("NVIDIA") downloadable herefrom. By downloading, installing, copying, or otherwise using the SOFTWARE, You (as defined below) agree to be bound by the terms of this Agreement. If You do not agree to the terms of this Agreement, do not download the SOFTWARE. Recitals Use of NVIDIA's SOFTWARE requires three elements: the SOFTWARE, an NVIDIA GPU or application processor ("NVIDIA Hardware"), and a computer system. The SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE is not sold, and instead is only licensed for Your use, strictly in accordance with this Agreement. The NVIDIA Hardware is protected by various patents, and is sold, but this Agreement does not cover the sale or use of such hardware, since it may not necessarily be sold as a package with the SOFTWARE. This Agreement sets forth the terms and conditions of the SOFTWARE only. -Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. +1.1. Definitions -When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + 1.1.1. Licensee "You", or "Your" shall mean the entity or individual that downloads and uses the SOFTWARE. -We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + 1.1.2. Redistributable Software "Redistributable Software" shall mean the redistributable libraries referenced in Attachment A of this Agreement. -For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + 1.1.3. Software "SOFTWARE" shall mean the deliverables provided pursuant to this Agreement. SOFTWARE may be provided in either source or binary form, at NVIDIA's discretion. -In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. -Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +1.2. Grant of License -The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + 1.2.1. Rights and Limitations of Grant Provided that Licensee complies with the terms of this Agreement, NVIDIA hereby grants Licensee the following limited, non-exclusive, non-transferable, non-sublicensable (except as expressly permitted otherwise for Redistributable Software in Section 1.2.1.1 and Section 1.2.1.3 of this Agreement) right to use the SOFTWARE -- and, if the SOFTWARE is provided in source form, to compile the SOFTWARE -- with the following limitations: -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- + 1.2.1.1. Redistribution Rights Licensee may transfer, redistribute, and sublicense certain files of the Redistributable SOFTWARE, as defined in Attachment A of this Agreement, provided, however, that (a) the Redistributable SOFTWARE shall be distributed solely in binary form to Licensee's licensees ("Customers") only as a component of Licensee's own software products (each, a "Licensee Application"); (b) Licensee shall design the Licensee Application such that the Redistributable SOFTWARE files are installed only in a private (non-shared) directory location that is used only by the Licensee Application; (C) Licensee shall obtain each Customer's written or clickwrap agreement to the license terms under a written, legally enforceable agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA under terms no less restrictive than this Agreement. -0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + 1.2.1.2. Usage Rights Licensee may install and use multiple copies of the SOFTWARE on a shared computer or concurrently on different computers, and make multiple back-up copies of the SOFTWARE, solely for Licensee's use within Licensee's Enterprise. "Enterprise" shall mean individual use by Licensee or any legal entity (such as a corporation or university) and the subsidiaries it owns by more than 50 percent. - A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + 1.2.1.3. Further Redistribution Rights Subject to the terms and conditions of the Agreement, Licensee may authorize Customers to further redistribute the Redistributable SOFTWARE that such Customers receive as part of the Licensee Application, solely in binary form, provided, however, that Licensee shall require in their standard software license agreements with Customers that all such redistributions must be made pursuant to a license agreement that has the effect of protecting the SOFTWARE and the rights of NVIDIA whose terms and conditions are at least as restrictive as those in the applicable Licensee software license agreement covering the Licensee Application. For avoidance of doubt, termination of this Agreement shall not affect rights previously granted by Licensee to its Customers under this Agreement to the extent validly granted to Customers under Section 1.2.1.1. - The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + 1.2.1.4. Linux/FreeBSD Exception Notwithstanding the foregoing terms of Section 1.2.1.2, Section 1.2.1.1 and Section 1.2.1.3, SOFTWARE designed exclusively for use on the Linux or FreeBSD operating systems, or other operating systems derived from the source code to these operating systems, may be copied and redistributed, provided that the binary files thereof are not modified in any way (except for unzipping of compressed files). - "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + 1.2.1.5. Additional Licensing Obligations Licensee acknowledges and agrees that its use of certain third party components included with the SOFTWARE may be subject to additional licensing terms and conditions as set forth or referenced in Attachment B of this Agreement. - Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + 1.2.1.6. Limitations No Reverse Engineering If the SOFTWARE is provided in binary form, Licensee may not reverse engineer, decompile, or disassemble the SOFTWARE, nor attempt in any other manner to obtain the source code. No Separation of Components The SOFTWARE is licensed as a single product. Except as authorized in this Agreement, Software component parts of the Software may not be separated for use on more than one computer, nor otherwise used separately from the other parts. No Rental Licensee may not rent or lease the SOFTWARE to someone else. -1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. +No Modifications -2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: +If the SOFTWARE is provided in source form, Licensee may not modify or create derivative works of the SOFTWARE. - a) The modified work must itself be a software library. - b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. - c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. - d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. +1.3. Term and Termination This Agreement will continue in effect for two (2) years ("Initial Term") after Your initial download and use of the SOFTWARE, subject to the exclusive right of NVIDIA to terminate as provided herein. The term of this Agreement will automatically renew for successive one (1) year renewal terms after the Initial Term, unless either party provides to the other party at least three (3) months prior written notice of termination before the end of the applicable renewal term. This Agreement will automatically terminate if Licensee fails to comply with any of the terms and conditions hereof. In such event, Licensee must destroy all copies of the SOFTWARE and all of its component parts. Defensive Suspension If Licensee commences or participates in any legal proceeding against NVIDIA, then NVIDIA may, in its sole discretion, suspend or terminate all license grants and any other rights provided under this Agreement during the pendency of such legal proceedings. - (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) +1.4. Copyright All rights, title, interest and copyrights in and to the SOFTWARE (including but not limited to all images, photographs, animations, video, audio, music, text, and other information incorporated into the SOFTWARE), the accompanying printed materials, and any copies of the SOFTWARE, are owned by NVIDIA, or its suppliers. The SOFTWARE is protected by copyright laws and international treaty provisions. Accordingly, Licensee is required to treat the SOFTWARE like any other copyrighted material, except as otherwise allowed pursuant to this Agreement and that it may make one copy of the SOFTWARE solely for backup or archive purposes. RESTRICTED RIGHTS NOTICE. Software has been developed entirely at private expense and is commercial computer software provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions set forth in the Agreement under which Software was obtained pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (C)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San Tomas Expressway, Santa Clara, CA 95050. - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +1.5. Applicable Law This Agreement shall be deemed to have been made in, and shall be construed pursuant to, the laws of the State of Delaware. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. The courts of Santa Clara County, California shall have exclusive jurisdiction and venue over any dispute arising out of or relating to this Agreement. - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. +1.6. Disclaimer of Warranties and Limitations on Liability + 1.6.1. No Warranties TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. + 1.6.2. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + 1.6.3. No Support . NVIDIA has no obligation to support or to provide any updates of the Software. - In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. +1.7. Miscellaneous -3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. +1.7.1. Feedback Notwithstanding any Non-Disclosure Agreement executed by and between the parties, the parties agree that in the event Licensee or NVIDIA provides Feedback (as defined below) to the other party on how to design, implement, or improve the SOFTWARE or Licensee's product(s) for use with the SOFTWARE, the following terms and conditions apply the Feedback: - Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. +1.7.1.1. Exchange of Feedback Both parties agree that neither party has an obligation to give the other party any suggestions, comments or other feedback, whether verbally or in written or source code form, relating to (i) the SOFTWARE; (ii) Licensee's products; (iii) Licensee's use of the SOFTWARE; or (iv) optimization/interoperability of Licensee's product with the SOFTWARE (collectively defined as "Feedback"). In the event either party provides Feedback to the other party, the party receiving the Feedback may use any Feedback that the other party voluntarily provides to improve the (i) SOFTWARE or other related NVIDIA technologies, respectively for the benefit of NVIDIA; or (ii) Licensee's product or other related Licensee technologies, respectively for the benefit of Licensee. Accordingly, if either party provides Feedback to the other party, both parties agree that the other party and its respective licensees may freely use, reproduce, license, distribute, and otherwise commercialize the Feedback in the (i) SOFTWARE or other related technologies; or (ii) Licensee's products or other related technologies, respectively, without the payment of any royalties or fees. - This option is useful when you wish to copy part of the code of the Library into a program that is not a library. +1.7.1.2. Residual Rights Licensee agrees that NVIDIA shall be free to use any general knowledge, skills and experience, (including, but not limited to, ideas, concepts, know-how, or techniques) ("Residuals"), contained in the (i) Feedback provided by Licensee to NVIDIA; (ii) Licensee's products shared or disclosed to NVIDIA in connection with the Feedback; or (C) Licensee's confidential information voluntarily provided to NVIDIA in connection with the Feedback, which are retained in the memories of NVIDIA's employees, agents, or contractors who have had access to such Residuals. Subject to the terms and conditions of this Agreement, NVIDIA's employees, agents, or contractors shall not be prevented from using Residuals as part of such employee's, agent's or contractor's general knowledge, skills, experience, talent, and/or expertise. NVIDIA shall not have any obligation to limit or restrict the assignment of such employees, agents or contractors or to pay royalties for any work resulting from the use of Residuals. -4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. -If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. +1.7.1.3. Disclaimer of Warranty FEEDBACK FROM EITHER PARTY IS PROVIDED FOR THE OTHER PARTY'S USE "AS IS" AND BOTH PARTIES DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED AND STATUTORY INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. BOTH PARTIES DO NOT REPRESENT OR WARRANT THAT THE FEEDBACK WILL MEET THE OTHER PARTY'S REQUIREMENTS OR THAT THE OPERATION OR IMPLEMENTATION OF THE FEEDBACK WILL BE UNINTERRUPTED OR ERROR-FREE. -5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. +1.7.1.4. No Liability for Consequential Damages TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL EITHER PARTY OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE FEEDBACK, EVEN IF THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. +1.7.2. Freedom of Action Licensee agrees that this Agreement is nonexclusive and NVIDIA may currently or in the future be developing software, other technology or confidential information internally, or receiving confidential information from other parties that maybe similar to the Feedback and Licensee's confidential information (as provided in Section 1.7.1.2 above), which may be provided to NVIDIA in connection with Feedback by Licensee. Accordingly, Licensee agrees that nothing in this Agreement will be construed as a representation or inference that NVIDIA will not develop, design, manufacture, acquire, market products, or have products developed, designed, manufactured, acquired, or marketed for NVIDIA, that compete with the Licensee's products or confidential information. - When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. +1.7.3. No Implied Licenses Under no circumstances should anything in this Agreement be construed as NVIDIA granting by implication, estoppel or otherwise, (i) a license to any NVIDIA product or technology other than the SOFTWARE; or (ii) any additional license rights for the SOFTWARE other than the licenses expressly granted in this Agreement. If any provision of this Agreement is inconsistent with, or cannot be fully enforced under, the law, such provision will be construed as limited to the extent necessary to be consistent with and fully enforceable under the law. This Agreement is the final, complete and exclusive agreement between the parties relating to the subject matter hereof, and supersedes all prior or contemporaneous understandings and agreements relating to such subject matter, whether oral or written. This Agreement may only be modified in writing signed by an authorized officer of NVIDIA. Licensee agrees that it will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or any export laws, restrictions or regulations. The parties agree that the following sections of the Agreement will survive the termination of the License: Section 1.2.1.4, Section 1.4, Section 1.5, Section 1.6, and Section 1.7. - If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +1.8. Attachment A Redistributable Software In connection with Section 1.2.1.1 of this Agreement, the following files may be redistributed with software applications developed by Licensee, including certain variations of these files that have version number or architecture specific information NVIDIA CUDA Toolkit License Agreement www.nvidia.com End User License Agreements (EULA) DR-06739-001_v01_v8.0 | 9 embedded in the file name - as an example only, for release version 6.0 of the 64-bit Windows software, the file cudart64_60.dll is redistributable. +Component : CUDA Runtime Windows : cudart.dll, cudart_static.lib, cudadevrt.lib Mac OSX : libcudart.dylib, libcudart_static.a, libcudadevrt.a Linux : libcudart.so, libcudart_static.a, libcudadevrt.a Android : libcudart.so, libcudart_static.a, libcudadevrt.a Component : CUDA FFT Library Windows : cufft.dll, cufftw.dll Mac OSX : libcufft.dylib, libcufft_static.a, libcufftw.dylib, libcufftw_static.a Linux : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Android : libcufft.so, libcufft_static.a, libcufftw.so, libcufftw_static.a Component : CUDA BLAS Library Windows : cublas.dll, cublas_device.lib Mac OSX : libcublas.dylib, libcublas_static.a, libcublas_device.a Linux : libcublas.so, libcublas_static.a, libcublas_device.a Android : libcublas.so, libcublas_static.a, libcublas_device.a Component : NVIDIA "Drop-in" BLAS Library Windows : nvblas.dll Mac OSX : libnvblas.dylib Linux : libnvblas.so Component : CUDA Sparse Matrix Library Windows : cusparse.dll Mac OSX : libcusparse.dylib, libcusparse_static.a Linux : libcusparse.so, libcusparse_static.a Android : libcusparse.so, libcusparse_static.a Component : CUDA Linear Solver Library Windows : cusolver.dll Mac OSX : libcusolver.dylib, libcusolver_static.a Linux : libcusolver.so, libcusolver_static.a Android : libcusolver.so, libcusolver_static.a Component : CUDA Random Number Generation Library Windows : curand.dll Mac OSX : libcurand.dylib, libcurand_static.a Linux : libcurand.so, libcurand_static.a Android : libcurand.so, libcurand_static.a Component : NVIDIA Performance Primitives Library Windows : nppc.dll, nppi.dll, npps.dll Mac OSX : libnppc.dylib, libnppi.dylib, libnpps.dylib, libnppc_static.a, libnpps_static.a, libnppi_static.a Linux : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Android : libnppc.so, libnppi.so, libnpps.so, libnppc_static.a, libnpps_static.a, libnppi_static.a Component : Internal common library required for statically linking to cuBLAS, cuSPARSE, cuFFT, cuRAND and NPP Mac OSX : libculibos.a Linux : libculibos.a Component : NVIDIA Runtime Compilation Library Windows : nvrtc.dll, nvrtc-builtins.dll Mac OSX : libnvrtc.dylib, libnvrtc-builtins.dylib Linux : libnvrtc.so, libnvrtc-builtins.so Component : NVIDIA Optimizing Compiler Library Windows : nvvm.dll Mac OSX : libnvvm.dylib Linux : libnvvm.so Component : NVIDIA Common Device Math Functions Library Windows : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Mac OSX : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Linux : libdevice.compute_20.bc, libdevice.compute_30.bc, libdevice.compute_35.bc Component : CUDA Occupancy Calculation Header Library All : cuda_occupancy.h Component : Profiling Tools Interface Library Windows : cupti.dll Mac OSX : libcupti.dylib Linux : libcupti.so - Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. +1.9. Attachment B Additional Licensing Obligations The following third party components included in the SOFTWARE are licensed to Licensee pursuant to the following terms and conditions: -6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. +1. Licensee's use of the GDB third party component is subject to the terms and conditions of GNU GPL v3: This product includes copyrighted third-party software licensed under the terms of the GNU General Public License v3 ("GPL v3"). All third-party software packages are copyright by their respective authors. GPL v3 terms and conditions are hereby incorporated into the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt Consistent with these licensing requirements, the software listed below is provided under the terms of the specified open source software licenses. To obtain source code for software provided under licenses that require redistribution of source code, including the GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), contact oss-requests@nvidia.com. This offer is valid for a period of three (3) years from the date of the distribution of this product by NVIDIA CORPORATION. Component License CUDA-GDB GPL v3 - You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: +2. Licensee represents and warrants that any and all third party licensing and/or royalty payment obligations in connection with Licensee's use of the H.264 video codecs are solely the responsibility of Licensee. - a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. - c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +3. Licensee's use of the Thrust library is subject to the terms and conditions of the Apache License Version 2.0. All third-party software packages are copyright by their respective authors. Apache License Version 2.0 terms and conditions are hereby incorporated into the Agreement by this reference. http://www.apache.org/licenses/ LICENSE-2.0.html + In addition, Licensee acknowledges the following notice: Thrust includes source code from the Boost Iterator, Tuple, System, and Random Number libraries. Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. -It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. +4. Licensee's use of the LLVM third party component is subject to the following terms and conditions: +### LLVM Release License +University of Illinois/NCSA Open Source License Copyright (C) 2003-2010 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana- Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. -7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: +5. Licensee's use of the PCRE third party component is subject to the following terms and conditions: +### PCRE LICENCE +-- +PCRE is a library of functions to support regular expressions whose syntax and semantics are as close as possible to those of the Perl 5 language. Release 8 of PCRE is distributed under the terms of the "BSD" licence, as specified below. The documentation for PCRE, supplied in the "doc" directory, is distributed under the same terms as the software itself. The basic library functions are written in C and are freestanding. Also included in the distribution is a set of C++ wrapper functions, and a justin-time compiler that can be used to optimize pattern matching. These are both optional features that can be omitted when the library is built. +### THE BASIC LIBRARY FUNCTIONS +-- +Written by: Philip Hazel Email local part: ph10 Email domain: cam.ac.uk University of Cambridge Computing Service, Cambridge, England. Copyright (C) 1997-2012 University of Cambridge All rights reserved. +### PCRE JUST-IN-TIME COMPILATION SUPPORT +-- +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(C) 2010-2012 Zoltan Herczeg All rights reserved. STACK-LESS JUST-IN-TIME COMPILER +Written by: Zoltan Herczeg Email local part: hzmester Emain domain: freemail.hu Copyright(C) 2009-2012 Zoltan Herczeg All rights reserved. THE C++ WRAPPER FUNCTIONS +Contributed by: Google Inc. Copyright (C) 2007-2012, Google Inc. All rights reserved. THE "BSD" LICENCE +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of Cambridge nor the name of Google Inc. nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. - b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +6. Some of the cuBLAS library routines were written by or derived from code written by Vasily Volkov and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2007-2009, Regents of the University of California All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. +7. Some of the cuBLAS library routines were written by or derived from code written by Davide Barbieri and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. +8. Some of the cuBLAS library routines were derived from code developed by the University of Tennessee and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2010 The University of Tennessee. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. +9. Some of the cuBLAS library routines were written by or derived from code written by Jonathan Hogg and are subject to the Modified Berkeley Software Distribution License as follows: Copyright (C) 2012, The Science and Technology Facilities Council (STFC). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the STFC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. +10. Some of the cuBLAS library routines were written by or derived from code written by Ahmad M. Abdelfattah, David Keyes, and Hatem Ltaief, and are subject to the Apache License, Version 2.0, as follows: -- (C) Copyright 2013 King Abdullah University of Science and Technology Authors: Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa) David Keyes (david.keyes@kaust.edu.sa) Hatem Ltaief (hatem.ltaief@kaust.edu.sa) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the King Abdullah University of Science and Technology nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. +11. Some of the cuSPARSE library routines were written by or derived from code written by Li-Wen Chang and are subject to the NCSA Open Source License as follows: Copyright (C) 2012, University of Illinois. All rights reserved. Developed by: IMPACT Group, University of Illinois, http:// impact.crhc.illinois.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of IMPACT Group, University of Illinois, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +12. Some of the cuRAND library routines were written by or derived from code written by Mutsuo Saito and Makoto Matsumoto and are subject to the following license: Copyright (C) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima University. All rights reserved. Copyright (C) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima University and University of Tokyo. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Hiroshima University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +13. Some of the cuRAND library routines were derived from code developed by D. E. Shaw Research and are subject to the following license: Copyright 2010-2011, D. E. Shaw Research. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of D. E. Shaw Research nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. +14. Licensee's use of the lz4 third party component is subject to the following terms and conditions: Copyright (C) 2011-2013, Yann Collet. BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. +15. The NPP library uses code from the Boost Math Toolkit, and is subject to the following license: Boost Software License - Version 1.0 - August 17th, 2003 . . . . Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. +Ansible +Kendo UI - NO WARRANTY + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies of this license document, + but changing it is not allowed. + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds + of works. + The licenses for most software and other practical works are designed to take away your + freedom to share and change the works. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change all versions of a program--to + make sure it remains free software for all its users. We, the Free Software Foundation, use + the GNU General Public License for most of our software; it applies also to any other + work released this way by its authors. You can apply it to your programs, too. + When we speak of free software, we are referring to freedom, not price. Our General + Public Licenses are designed to make sure that you have the freedom to distribute copies + of free software (and charge for them if you wish), that you receive source code or can + get it if you want it, that you can change the software or use pieces of it in new free + programs, and that you know you can do these things. + To protect your rights, we need to prevent others from denying you these rights or asking + you to surrender the rights. Therefore, you have certain responsibilities if you distribute + copies of the software, or if you modify it: responsibilities to respect the freedom of + others. + For example, if you distribute copies of such a program, whether gratis or for a fee, you + must pass on to the recipients the same freedoms that you received. You must make sure + that they, too, receive or can get the source code. And you must show them these terms + so they know their rights. + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright + on the software, and (2) offer you this License giving you legal permission to copy, + distribute and/or modify it. + For the developers' and authors' protection, the GPL clearly explains that there is no + warranty for this free software. For both users' and authors' sake, the GPL requires that + modified versions be marked as changed, so that their problems will not be attributed + erroneously to authors of previous versions. + Some devices are designed to deny users access to install or run modified versions of the + software inside them, although the manufacturer can do so. This is fundamentally + incompatible with the aim of protecting users' freedom to change the software. The + systematic pattern of such abuse occurs in the area of products for individuals to use, + which is precisely where it is most unacceptable. Therefore, we have designed this version + of the GPL to prohibit the practice for those products. If such problems arise substantially + in other domains, we stand ready to extend this provision to those domains in future + versions of the GPL, as needed to protect the freedom of users. + Finally, every program is threatened constantly by software patents. States should not + allow patents to restrict development and use of software on general-purpose computers, + but in those that do, we wish to avoid the special danger that patents applied to a free + program could make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + The precise terms and conditions for copying, distribution and modification follow. + TERMS AND CONDITIONS + 0. Definitions. + "This License" refers to version 3 of the GNU General Public License. + "Copyright" also means copyright-like laws that apply to other kinds of works, such as + semiconductor masks. + "The Program" refers to any copyrightable work licensed under this License. Each + licensee is addressed as "you". "Licensees" and "recipients" may be individuals or + organizations. + To "modify" a work means to copy from or adapt all or part of the work in a fashion + requiring copyright permission, other than the making of an exact copy. The resulting + work is called a "modified version" of the earlier work or a work "based on" the earlier + work. + A "covered work" means either the unmodified Program or a work based on the Program. + To "propagate" a work means to do anything with it that, without permission, would + make you directly or secondarily liable for infringement under applicable copyright law, + except executing it on a computer or modifying a private copy. Propagation includes + copying, distribution (with or without modification), making available to the public, and + in some countries other activities as well. + To "convey" a work means any kind of propagation that enables other parties to make or + receive copies. Mere interaction with a user through a computer network, with no transfer + of a copy, is not conveying. + An interactive user interface displays "Appropriate Legal Notices" to the extent that it + includes a convenient and prominently visible feature that (1) displays an appropriate + copyright notice, and (2) tells the user that there is no warranty for the work (except to + the extent that warranties are provided), that licensees may convey the work under this + License, and how to view a copy of this License. If the interface presents a list of user + commands or options, such as a menu, a prominent item in the list meets this criterion. + 1. Source Code. + The "source code" for a work means the preferred form of the work for making + modifications to it. "Object code" means any non-source form of a work. + A "Standard Interface" means an interface that either is an official standard defined by a + recognized standards body, or, in the case of interfaces specified for a particular + programming language, one that is widely used among developers working in that + language. + The "System Libraries" of an executable work include anything, other than the work as a + whole, that (a) is included in the normal form of packaging a Major Component, but + which is not part of that Major Component, and (b) serves only to enable use of the work + with that Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A "Major Component", in + this context, means a major essential component (kernel, window system, and so on) of + the specific operating system (if any) on which the executable work runs, or a compiler + used to produce the work, or an object code interpreter used to run it. + The "Corresponding Source" for a work in object code form means all the source code + needed to generate, install, and (for an executable work) run the object code and to + modify the work, including scripts to control those activities. However, it does not + include the work's System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but which are not part + of the work. For example, Corresponding Source includes interface definition files + associated with source files for the work, and the source code for shared libraries and + dynamically linked subprograms that the work is specifically designed to require, such as + by intimate data communication or control flow between those subprograms and other + parts of the work. + The Corresponding Source need not include anything that users can regenerate + automatically from other parts of the Corresponding Source. + The Corresponding Source for a work in source code form is that same work. + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the + Program, and are irrevocable provided the stated conditions are met. This License + explicitly affirms your unlimited permission to run the unmodified Program. The output + from running a covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your rights of fair use or + other equivalent, as provided by copyright law. + You may make, run and propagate covered works that you do not convey, without + conditions so long as your license otherwise remains in force. You may convey covered + works to others for the sole purpose of having them make modifications exclusively for + you, or provide you with facilities for running those works, provided that you comply + with the terms of this License in conveying all material for which you do not control + copyright. Those thus making or running the covered works for you must do so + exclusively on your behalf, under your direction and control, on terms that prohibit them + from making any copies of your copyrighted material outside their relationship with you. + Conveying under any other circumstances is permitted solely under the conditions stated + below. Sublicensing is not allowed; section 10 makes it unnecessary. + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any + applicable law fulfilling obligations under article 11 of the WIPO copyright treaty + adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of + such measures. + When you convey a covered work, you waive any legal power to forbid circumvention of + technological measures to the extent such circumvention is effected by exercising rights + under this License with respect to the covered work, and you disclaim any intention to + limit operation or modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of technological measures. + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any + medium, provided that you conspicuously and appropriately publish on each copy an + appropriate copyright notice; keep intact all notices stating that this License and any non- + permissive terms added in accord with section 7 apply to the code; keep intact all notices + of the absence of any warranty; and give all recipients a copy of this License along with + the Program. + You may charge any price or no price for each copy that you convey, and you may offer + support or warranty protection for a fee. + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from + the Program, in the form of source code under the terms of section 4, provided that you + also meet all of these conditions: + * a) The work must carry prominent notices stating that you modified it, and giving + a relevant date. + * b) The work must carry prominent notices stating that it is released under this + License and any conditions added under section 7. This requirement modifies the + requirement in section 4 to "keep intact all notices". + * c) You must license the entire work, as a whole, under this License to anyone who + comes into possession of a copy. This License will therefore apply, along with any + applicable section 7 additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no permission to license + the work in any other way, but it does not invalidate such permission if you have + separately received it. + * d) If the work has interactive user interfaces, each must display Appropriate Legal + Notices; however, if the Program has interactive interfaces that do not display + Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are + not by their nature extensions of the covered work, and which are not combined with it + such as to form a larger program, in or on a volume of a storage or distribution medium, is + called an "aggregate" if the compilation and its resulting copyright are not used to limit + the access or legal rights of the compilation's users beyond what the individual works + permit. Inclusion of a covered work in an aggregate does not cause this License to apply + to the other parts of the aggregate. + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, + provided that you also convey the machine-readable Corresponding Source under the + terms of this License, in one of these ways: + * a) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by the Corresponding Source fixed + on a durable physical medium customarily used for software interchange. + * b) Convey the object code in, or embodied in, a physical product (including a + physical distribution medium), accompanied by a written offer, valid for at least + three years and valid for as long as you offer spare parts or customer support for + that product model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the product that is + covered by this License, on a durable physical medium customarily used for + software interchange, for a price no more than your reasonable cost of physically + performing this conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. + * c) Convey individual copies of the object code with a copy of the written offer to + provide the Corresponding Source. This alternative is allowed only occasionally + and noncommercially, and only if you received the object code with such an offer, + in accord with subsection 6b. + * d) Convey the object code by offering access from a designated place (gratis or + for a charge), and offer equivalent access to the Corresponding Source in the same + way through the same place at no further charge. You need not require recipients + to copy the Corresponding Source along with the object code. If the place to copy + the object code is a network server, the Corresponding Source may be on a + different server (operated by you or a third party) that supports equivalent + copying facilities, provided you maintain clear directions next to the object code + saying where to find the Corresponding Source. Regardless of what server hosts + the Corresponding Source, you remain obligated to ensure that it is available for as + long as needed to satisfy these requirements. + * e) Convey the object code using peer-to-peer transmission, provided you inform + other peers where the object code and Corresponding Source of the work are + being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the + Corresponding Source as a System Library, need not be included in conveying the object + code work. + A "User Product" is either (1) a "consumer product", which means any tangible personal + property which is normally used for personal, family, or household purposes, or (2) + anything designed or sold for incorporation into a dwelling. In determining whether a + product is a consumer product, doubtful cases shall be resolved in favor of coverage. For + a particular product received by a particular user, "normally used" refers to a typical or + common use of that class of product, regardless of the status of the particular user or of + the way in which the particular user actually uses, or expects or is expected to use, the + product. A product is a consumer product regardless of whether the product has + substantial commercial, industrial or non-consumer uses, unless such uses represent the + only significant mode of use of the product. + "Installation Information" for a User Product means any methods, procedures, + authorization keys, or other information required to install and execute modified versions + of a covered work in that User Product from a modified version of its Corresponding + Source. The information must suffice to ensure that the continued functioning of the + modified object code is in no case prevented or interfered with solely because + modification has been made. + If you convey an object code work under this section in, or with, or specifically for use in, + a User Product, and the conveying occurs as part of a transaction in which the right of + possession and use of the User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the Corresponding Source + conveyed under this section must be accompanied by the Installation Information. But + this requirement does not apply if neither you nor any third party retains the ability to + install modified object code on the User Product (for example, the work has been + installed in ROM). + The requirement to provide Installation Information does not include a requirement to + continue to provide support service, warranty, or updates for a work that has been + modified or installed by the recipient, or for the User Product in which it has been + modified or installed. Access to a network may be denied when the modification itself + materially and adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + Corresponding Source conveyed, and Installation Information provided, in accord with + this section must be in a format that is publicly documented (and with an implementation + available to the public in source code form), and must require no special password or key + for unpacking, reading or copying. + 7. Additional Terms. + "Additional permissions" are terms that supplement the terms of this License by making + exceptions from one or more of its conditions. Additional permissions that are applicable + to the entire Program shall be treated as though they were included in this License, to the + extent that they are valid under applicable law. If additional permissions apply only to + part of the Program, that part may be used separately under those permissions, but the + entire Program remains governed by this License without regard to the additional + permissions. + When you convey a copy of a covered work, you may at your option remove any + additional permissions from that copy, or from any part of it. (Additional permissions + may be written to require their own removal in certain cases when you modify the work.) + You may place additional permissions on material, added by you to a covered work, for + which you have or can give appropriate copyright permission. + Notwithstanding any other provision of this License, for material you add to a covered + work, you may (if authorized by the copyright holders of that material) supplement the + terms of this License with terms: + * a) Disclaiming warranty or limiting liability differently from the terms of sections + 15 and 16 of this License; or + * b) Requiring preservation of specified reasonable legal notices or author + attributions in that material or in the Appropriate Legal Notices displayed by + works containing it; or + * c) Prohibiting misrepresentation of the origin of that material, or requiring that + modified versions of such material be marked in reasonable ways as different + from the original version; or + * d) Limiting the use for publicity purposes of names of licensors or authors of the + material; or + * e) Declining to grant rights under trademark law for use of some trade names, + trademarks, or service marks; or + * f) Requiring indemnification of licensors and authors of that material by anyone + who conveys the material (or modified versions of it) with contractual + assumptions of liability to the recipient, for any liability that these contractual + assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered "further restrictions" within the + meaning of section 10. If the Program as you received it, or any part of it, contains a + notice stating that it is governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains a further restriction + but permits relicensing or conveying under this License, you may add to a covered work + material governed by the terms of that license document, provided that the further + restriction does not survive such relicensing or conveying. + If you add terms to a covered work in accord with this section, you must place, in the + relevant source files, a statement of the additional terms that apply to those files, or a + notice indicating where to find the applicable terms. + Additional terms, permissive or non-permissive, may be stated in the form of a separately + written license, or stated as exceptions; the above requirements apply either way. + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under + this License. Any attempt otherwise to propagate or modify it is void, and will + automatically terminate your rights under this License (including any patent licenses + granted under the third paragraph of section 11). + However, if you cease all violation of this License, then your license from a particular + copyright holder is reinstated (a) provisionally, unless and until the copyright holder + explicitly and finally terminates your license, and (b) permanently, if the copyright holder + fails to notify you of the violation by some reasonable means prior to 60 days after the + cessation. + Moreover, your license from a particular copyright holder is reinstated permanently if the + copyright holder notifies you of the violation by some reasonable means, this is the first + time you have received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after your receipt of the + notice. + Termination of your rights under this section does not terminate the licenses of parties + who have received copies or rights from you under this License. If your rights have been + terminated and not permanently reinstated, you do not qualify to receive new licenses for + the same material under section 10. + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the + Program. Ancillary propagation of a covered work occurring solely as a consequence of + using peer-to-peer transmission to receive a copy likewise does not require acceptance. + However, nothing other than this License grants you permission to propagate or modify + any covered work. These actions infringe copyright if you do not accept this License. + Therefore, by modifying or propagating a covered work, you indicate your acceptance of + this License to do so. + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from + the original licensors, to run, modify and propagate that work, subject to this License. + You are not responsible for enforcing compliance by third parties with this License. + An "entity transaction" is a transaction transferring control of an organization, or + substantially all assets of one, or subdividing an organization, or merging organizations. If + propagation of a covered work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever licenses to the work + the party's predecessor in interest had or could give under the previous paragraph, plus a + right to possession of the Corresponding Source of the work from the predecessor in + interest, if the predecessor has it or can get it with reasonable efforts. + You may not impose any further restrictions on the exercise of the rights granted or + affirmed under this License. For example, you may not impose a license fee, royalty, or + other charge for exercise of rights granted under this License, and you may not initiate + litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent + claim is infringed by making, using, selling, offering for sale, or importing the Program or + any portion of it. + 11. Patents. + A "contributor" is a copyright holder who authorizes use under this License of the + Program or a work on which the Program is based. The work thus licensed is called the + contributor's "contributor version". + A contributor's "essential patent claims" are all patent claims owned or controlled by the + contributor, whether already acquired or hereafter acquired, that would be infringed by + some manner, permitted by this License, of making, using, or selling its contributor + version, but do not include claims that would be infringed only as a consequence of + further modification of the contributor version. For purposes of this definition, "control" + includes the right to grant patent sublicenses in a manner consistent with the requirements + of this License. + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under + the contributor's essential patent claims, to make, use, sell, offer for sale, import and + otherwise run, modify and propagate the contents of its contributor version. + In the following three paragraphs, a "patent license" is any express agreement or + commitment, however denominated, not to enforce a patent (such as an express + permission to practice a patent or covenant not to sue for patent infringement). To "grant" + such a patent license to a party means to make such an agreement or commitment not to + enforce a patent against the party. + If you convey a covered work, knowingly relying on a patent license, and the + Corresponding Source of the work is not available for anyone to copy, free of charge and + under the terms of this License, through a publicly available network server or other + readily accessible means, then you must either (1) cause the Corresponding Source to be + so available, or (2) arrange to deprive yourself of the benefit of the patent license for this + particular work, or (3) arrange, in a manner consistent with the requirements of this + License, to extend the patent license to downstream recipients. "Knowingly relying" + means you have actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work in a country, + would infringe one or more identifiable patents in that country that you have reason to + believe are valid. + If, pursuant to or in connection with a single transaction or arrangement, you convey, or + propagate by procuring conveyance of, a covered work, and grant a patent license to + some of the parties receiving the covered work authorizing them to use, propagate, + modify or convey a specific copy of the covered work, then the patent license you grant + is automatically extended to all recipients of the covered work and works based on it. + A patent license is "discriminatory" if it does not include within the scope of its coverage, + prohibits the exercise of, or is conditioned on the non-exercise of one or more of the + rights that are specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is in the business of + distributing software, under which you make payment to the third party based on the + extent of your activity of conveying the work, and under which the third party grants, to + any of the parties who would receive the covered work from you, a discriminatory patent + license (a) in connection with copies of the covered work conveyed by you (or copies + made from those copies), or (b) primarily for and in connection with specific products or + compilations that contain the covered work, unless you entered into that arrangement, or + that patent license was granted, prior to 28 March 2007. + Nothing in this License shall be construed as excluding or limiting any implied license or + other defenses to infringement that may otherwise be available to you under applicable + patent law. + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that + contradict the conditions of this License, they do not excuse you from the conditions of + this License. If you cannot convey a covered work so as to satisfy simultaneously your + obligations under this License and any other pertinent obligations, then as a consequence + you may not convey it at all. For example, if you agree to terms that obligate you to + collect a royalty for further conveying from those to whom you convey the Program, the + only way you could satisfy both those terms and this License would be to refrain entirely + from conveying the Program. + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or + combine any covered work with a work licensed under version 3 of the GNU Affero + General Public License into a single combined work, and to convey the resulting work. + The terms of this License will continue to apply to the part which is the covered work, but + the special requirements of the GNU Affero General Public License, section 13, + concerning interaction through a network will apply to the combination as such. + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU + General Public License from time to time. Such new versions will be similar in spirit to the + present version, but may differ in detail to address new problems or concerns. + Each version is given a distinguishing version number. If the Program specifies that a + certain numbered version of the GNU General Public License "or any later version" + applies to it, you have the option of following the terms and conditions either of that + numbered version or of any later version published by the Free Software Foundation. If + the Program does not specify a version number of the GNU General Public License, you + may choose any version ever published by the Free Software Foundation. + If the Program specifies that a proxy can decide which future versions of the GNU + General Public License can be used, that proxy's public statement of acceptance of a + version permanently authorizes you to choose that version for the Program. + Later license versions may give you additional or different permissions. However, no + additional obligations are imposed on any author or copyright holder as a result of your + choosing to follow a later version. + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT + PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN + WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE + THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER + EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF + THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, + YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR + CORRECTION. + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO + MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE + OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO + LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES + SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM + TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given + local legal effect according to their terms, reviewing courts shall apply local law that most + closely approximates an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a copy of the Program + in return for a fee. -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OEM Plupload -------------------------------------------------------------------------- -GNU General Public License + GNU General Public License Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc., - -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA See Section 2 below for text of GPL v2.0 license. Font awesome -------------------------------------------------------------------------- The Font Awesome font is licensed under the SIL OFL 1.1: This Font Software is licensed under the SIL Open Font License, Version 1.1. - This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ------------------------------------------------------------ + + SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- @@ -1556,95 +988,5245 @@ Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: The MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -2. GNU General Public License version 2 (GPL v2) +===================================================================== + 2. GNU General Public License version 2 (GPL v2) ===================================================================== GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc. +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -Preamble +###Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. - To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. - For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. - Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. - Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. - The precise terms and conditions for copying, distribution and modification follow. - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -------------------------------------------------------------- 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. - 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. - 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. - 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. - 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +###End of (1) Torrent Suite(TM) Software Version 5.18 Open Source License + +**************************************************** + (2) BEGINS: +================================================================================ + +LIFE TECHNOLOGIES CORPORATION + +END USER LICENSE AGREEMENT +## FOR SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 + +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THIS SOFTWARE PRODUCT. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND/OR USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND/OR USE THE SOFTWARE. +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable license, with no rights to sublicense, to install and/or use the Software only in object code (machine readable) format and only on single computers owned or controlled by you (or in a single network, if your Software is designated as a network version) for the sole purpose of managing, analyzing, viewing, editing, reporting and/or printing data provided by Life Technologies or generated by Life Technologies instruments for research use only. +If the software uses registration codes, access to the number of licenses copies of Software is controlled by a registration code. For example, if you have a registration code that enables you to use three copies of Software simultaneously, you cannot install Software on more than three separate computers. +You may make one copy of the Software in machine-readable form solely for backup or archival purposes. You must reproduce on any such copy all copyright notices and any other proprietary legends found on the original. You may not make any other copies of the Software. + +RESTRICTIONS + +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You agree to use Software, and data generated by Software, for the sole purpose of review and analysis of data generated by Life Technologies instruments. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties, if any, made by Life Technologies may be voided by abuse or misuse of the Software. +LIMITATION OF LIABILITY +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. + +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors) technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +July 15, 2020 + +Appendix 1 + +Life Technologies Corporation + +Third Party Copyright Notices and Licenses + SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + +Asn1crypto Copyright (C) 2015-2018 Will Bond +Six Copyright (C) 2010-2018 Benjamin Peterson + + + +The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Boto3 + +Botocore + +Pelix + +S3transfer + +Apache License + +Version 2.0, January 2004 + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +1. You must give any other recipients of the Work or Derivative Works a copy of this License; and +2. You must cause any modified files to carry prominent notices stating that You changed the files; and +3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +Concurrent + +The Python Software Foundation License Version 2 + + 1. This LICENSE AGREEMENT is between the Python Software Foundation + ("PSF"), and the Individual or Organization ("Licensee") accessing and + otherwise using this software ("Python") in source or binary form and + its associated documentation. + + 2. Subject to the terms and conditions of this License Agreement, PSF + hereby grants Licensee a nonexclusive, royalty-free, world-wide + license to reproduce, analyze, test, perform and/or display publicly, + prepare derivative works, distribute, and otherwise use Python + alone or in any derivative version, provided, however, that PSF's + License Agreement and PSF's notice of copyright, i.e., "Copyright (C) + 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights + Reserved" are retained in Python alone or in any derivative version + prepared by Licensee. + + 3. In the event Licensee prepares a derivative work that is based on + or incorporates Python or any part thereof, and wants to make + the derivative work available to others as provided herein, then + Licensee hereby agrees to include in any such work a brief summary of + the changes made to Python. + + 4. PSF is making Python available to Licensee on an "AS IS" + basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR + IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND + DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS + FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT + INFRINGE ANY THIRD PARTY RIGHTS. + + 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON + FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS + A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, + OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + + 6. This License Agreement will automatically terminate upon a material + breach of its terms and conditions. + + 7. Nothing in this License Agreement shall be deemed to create any + relationship of agency, partnership, or joint venture between PSF and + Licensee. This License Agreement does not grant permission to use PSF + trademarks or trade name in a trademark sense to endorse or promote + products or services of Licensee, or any third party. + + 8. By copying, installing or otherwise using Python, Licensee + agrees to be bound by the terms and conditions of this License + Agreement. + +Paho + +Eclipse Distribution License - v 1.0 + +Copyright (C) 2007, Eclipse Foundation, Inc. and its licensors. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the Eclipse Foundation, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +AND + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + + + "Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + + i)changes to the Program, and + + ii)additions to the Program; + where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. +"Contributor" means any person or entity that distributes the Program. +"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. +"Program" means the Contributions distributed in accordance with this Agreement. +"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. + +2. GRANT OF RIGHTS + + + a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. +d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. + +3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained within the Program. + Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. + For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. + +5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. +Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. + + This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + +## Docutils + + Public Domain Dedication + + The persons who have associated their work with this project (the "Dedicator": David Goodger and the many contributors to the Docutils project) hereby dedicate the entire copyright, less the exceptions listed below, in the work of authorship known as "Docutils" identified below (the "Work") to the public domain. + + The primary repository for the Work is the Internet World Wide Web site . The Work consists of the files within the "docutils" module of the Docutils project Subversion repository (Internet host docutils.svn.sourceforge.net, filesystem path /svnroot/docutils), whose Internet web interface is located at . Files dedicated to the public domain may be identified by the inclusion, near the beginning of each file, of a declaration of the form: + + Copyright: This document/module/DTD/stylesheet/file/etc. has been + placed in the public domain. + + Dedicator makes this dedication for the benefit of the public at large and to the detriment of Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. + + Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. + +## Dateutil + + Copyright (C) 2003-2011 - Gustavo Niemeyer + + Copyright (C) 2012-2014 - Tomi Pievilainen + + Copyright (C) 2014 - Yaron de Leeuw + + All rights reserved. + + Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +## Enum + +Copyright (C) 2013, Ethan Furman. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + Neither the name Ethan Furman nor the names of any + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +## Jmespath + +Copyright (C) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, dis- +tribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the fol- +lowing conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + +## Oscrypto + +Copyright (C) 2015-2018 Will Bond + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +## Pubsub + +Copyright (C) since 2006, Oliver Schoenborn +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +###END OF (2) SERVICE & SUPPORT TELEMETRY MODULE SOFTWARE VERSION 2.0.1 END USER LICENSE AGREEMENT +**************************************************** +(3) BEGINS: +======================================== + + +LIFE TECHNOLOGIES CORPORATION + +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY + +FOR ION CHEF(TM) INSTRUMENT SOFTWARE VERSION 5.18 INSTRUMENT OPERATING SOFTWARE + +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. +RESTRICTIONS +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +1. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +2. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +3. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +4. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +5. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +6. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. + +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + + +Appendix 1 + +Life Technologies Corporation + +Third Party Copyright Notices and Licenses + +Ion Chef Instrument Software(TM) VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + + +3-clause BSD License + +OpenCV + +By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, +copy or use the software. + + + +License Agreement + +For Open Source Computer Vision Library +(3-clause BSD License) + + +Copyright (C) 2000-2020, Intel Corporation, all rights reserved. Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved. + +Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved. Copyright (C) 2015-2016, Itseez Inc., all rights reserved. + +Copyright (C) 2019-2020, Xperience AI, all rights reserved. Third party copyrights are property of their respective owners. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. + + + + +GPL v2 + +DirectFB + +(C) Copyright 2017-2021 DirectFB2 Open Source Project (fork of DirectFB) (C) Copyright 2012-2016 DirectFB integrated media GmbH + +(C) Copyright 2001-2013 The world wide DirectFB Open Source Community (directfb.org) (C) Copyright 2000-2004 Convergence (integrated media) GmbH + + +DirectFB was originally written by Denis Oliver Kropp, Andreas Shimokawa, + +Marek Pikarski, Sven Neumann, Ville Syrjala and Claudio Ciccani. + +DirectFB2 is the work of Nicolas Caramelli whose goal is to preserve and maintain DirectFB GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +## MIT derivative curl + +Copyright (C) 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +GPL v2 + +Python 2.7.2 + +###CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (C) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. + + +Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior +permission. + + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +GPL v2 mtd-utils + +http://git.infradead.org/mtd-utils.git/blob/HEAD:/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +## GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. +You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +LGPL GTK+ http://www.gtk.org/ + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +NTP License (NTP) NTP http://www.ntp.org/ntpfaq/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +GPL v2 + +GDK-PixBuf + +https://docs.gtk.org/gdk-pixbuf/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + +PSP log4cpp https://sourceforge.net/p/log4cpp/codegit/ci/master/tree/COPYING + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies +the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +END OF TERMS AND CONDITIONS + + + +GPL v2 + + +busybox md5sum wget + + +https://www.busybox.net/license.html + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do +these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + + + Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Tar + +https://www.gnu.org/software/tar/ + + +GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 + + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + + +To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + + +GNU LESSER GENERAL PUBLIC LICENSE + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + + + The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + + + "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the +Library. + + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) The modified work must itself be a software library. + + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its purpose remains meaningful. + + + (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square +root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + + + In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under the scope of this License. + + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + + + This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + + + If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + + +5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + + + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + + + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + + + If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + + + Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + + + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if +the user installs one, as long as the modified version is +interface-compatible with the version that the work was made with. + + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. + + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + + + + +GPL v2 + +Linux Kernel + +https://www.kernel.org/doc/html/v4.18/process/license-rules.html#:~:text=The%20Linux%20Kernel% +20is%20provideddescribed%20in%20the%20COPYING%20file + + +GNU GENERAL PUBLIC LICENSE Version 2, June 1991 + + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + +Preamble + + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. + + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original authors' reputations. + + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + + +The precise terms and conditions for copying, distribution and modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + + + You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + + + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + + + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + + + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + + + Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + + + In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under +the scope of this License. + + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + + + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + + + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + + + The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + + + If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to this License. + + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + + + If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + + + It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot impose that choice. + + + This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + + Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + + + NO WARRANTY + + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +END OF TERMS AND CONDITIONS + +Mozilla Public License, v. 2.0 + +DHCP + +Mozilla Public License +Version 2.0 + +1. Definitions + + 1.1. "Contributor" +means each individual or legal entity that creates, contributes to the creation of, or owns Covered +Software. + + + 1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used by a Contributor and that particular +Contributor's Contribution. + + + 1.3. "Contribution" +means Covered Software of a particular Contributor. + + + 1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. + + + 1.5. "Incompatible With Secondary Licenses" +means +that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or that the Covered Software was made available under the terms of version 1.1 or earlier of the License, +but not also under the terms of a Secondary License. + + + 1.6. "Executable Form" +means any form of the work other than Source Code Form. + + + 1.7. "Larger Work" +means a work that combines Covered Software with other material, in a separate file or files, that is not +Covered Software. + + + 1.8. "License" +means this document. + + + 1.9. "Licensable" +means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. + + + 1.10. "Modifications" +means any of the following: + + any file in Source Code Form that results from an addition to, deletion from, or modification of the +contents of Covered Software; or + + + any new file in Source Code Form that contains any Covered Software. + + + 1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. + + + 1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. + + + 1.13. "Source Code Form" +means the form of the work preferred for making modifications. + + + 1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + + 2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. + + + 2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become effective for each +Contribution on the date the Contributor first distributes such Contribution. + + + 2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: +for any code that a Contributor has removed from Covered Software; or for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or +under Patent Claims infringed by Covered Software in the absence of its Contributions. +T. his License does not grant any rights in the trademarks, service marks, or logos of any Contributor +(except as may be necessary to comply with the notice requirements in Section 3.4). + + + 2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). + + + 2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. + + + 2.6. Fair Use + + This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. + + + 2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. + + +3. Responsibilities + + + 3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. + + 3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and +You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. + + 3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). + + + 3.4. Notices + + You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. + + + 3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations +to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of +liability specific to any jurisdiction. + + +4. Inability to Comply Due to Statute or Regulation + + + If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. + + +5. Termination + + + 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time +You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. + + + 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. + + + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. + + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer. + + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability +for death or personal injury resulting from such party's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. + + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. + + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. + +10. Versions of the License + + + 10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. + + + 10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. + + + 10.3. Modified Versions + + If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). + + + 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + + If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. + + + Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the +MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + + + If it is not possible or desirable to put the notice in a particular file, then You may include the notice in +a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. +You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice +This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public +License, v. 2.0. + + + + +## Private PTC CUSTOMER AGREEMENT Axeda Agent Embedded +======================================================================= + +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR +THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, +THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, +OR USES ANY +SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN +A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A +(AS APPLICABLE, "PTC"). +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS +AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING +ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS +AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO +BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, +CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS +PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN +YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN +THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF +ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT +HAS BEEN ACCEPTED. +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC +DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN +ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS +SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE +PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING +TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED +PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION +AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE +COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE +PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING +ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING +TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING +USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS +AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND +ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH +DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON +SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO +OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US +FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY +RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) +OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR +TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE +ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF +YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS +AGREEMENT. +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO +SPECIFIC GEOGRAPHIES. + + + +### PTC Clickwrap Customer Agreement - Rev. 12/14 + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed +Products identified in the Quote +during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable +usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage +("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to +install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the +Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic +institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer +does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non educational research or funded educational research conducted using the facilities of an academic institution or under an +academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a +violation of the terms of this Agreement. + + (C) If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on +the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable +Designated Country. Customer may, from time to time, change the Designated Computer, Designated +Network, and/or the +Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall +give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, +Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the +Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a +"Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the +Customer to install, +operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted +Global License allows the +Customer to install, operate and use such Licensed Product at any Customer site(s) located in the +Designated Country +and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech +Republic, Poland, +Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; + + (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or +consulting services to any third parties, or for commercial time-sharing or service bureau use; + + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed +Products, or otherwise +attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in +Schedule A, if applicable; + + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or +otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in +part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are +explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or +in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation +into computer memory for the purpose of executing the Licensed Products in accordance with this +Section 1, and/or (b) to +make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the +property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, +proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). +If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, +without limiting PTC's right to +terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or +penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a +Concurrent User Product, +the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the +number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated +Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may +use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the +Licensed Product is +licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated +Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses +a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" +or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer +may add and/or substitute from time to time new Registered Users as long as the aggregate number of +Registered Users does not +exceed at any point in time the number of Licenses in effect at such time for that particular Licensed +Product and, provided further, +that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at +PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on +the computer server that is designated by the Customer in connection with the initial installation of such product and that has one +unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner +(physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such +server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change +the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case (a) Customer shall +give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server +Products to a different +Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software +components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule +of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software +products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to +Customer directly by the +manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled +Third Party Products are also +described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party +Components and/or Bundled Third +Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing +Third Party Components or +Bundled Third Party Products may be subject to additional or different third party terms, of which PTC +shall notify the Customer at +the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the +Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on +Support Services for such software. +After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis +of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed +Software that formed the basis for +Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that +PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC +access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably +requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. +2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to +the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer +has issued a password or other unique identifier to enable such individual to use the Registered User +Product). Such report shall be +certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written +request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the +Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including +applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay +shall be grounds for termination in accordance with Section 7 hereof. + + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed +Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed +Products. All copies of the Licensed Products, in whatever form provided by PTC or made by +Customer, shall remain the property of +PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License +granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a +right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source +code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify +the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. +See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed +Products for which Usage License +Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support +Services in accordance with +Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the +Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or +Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) +evaluation, "trial" or "express" +Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) +Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, +(v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed +Products that are provided by +PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third +Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty +given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product +(s) or (b) use diligent efforts to +repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the +Error is received by PTC +within the Warranty Period and Customer supplies such additional information regarding the Error as +PTC may reasonably request. +If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a +workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by +PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed +Product(s) upon return of such +Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC +or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those +contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement +signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or +Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER +WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING +ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN +ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND +ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS +SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED +PRODUCTS, INCLUDING +THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING +LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed +Products will be uninterrupted or +error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 PTC's Obligation to Indemnify Customer. PTC, at its own expense, will defend any action brought against Customer based on a +claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its +option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified +promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on +such claim and all negotiations for its settlement or compromise and shall bear the costs of the same +(save where one or more of the +exclusions in Section 5.3 applies); and (C) Customer shall cooperate fully at PTC's expense with PTC +in the defense, settlement or +compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all +claims relating to infringement of any intellectual property right. + + 5.2 PTC's Right to Act to Prevent a Claim. If a claim described in Section 5.1 hereof occurs or, in +PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed +Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or (C) +terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by +Customer for such Licensed Product +depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be +equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclusions from PTC's Obligation to Indemnify Customer. PTC shall have no liability to Customer under Section 5.1 hereof or +otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed +Product in combination +with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed +Product in an application or environment for which it was not designed or not contemplated under this +Agreement; (C) use of other +than a current release of the Licensed Product(s) provided to Customer; (d) modification of the +Licensed Product by anyone other +than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other +proprietary right in which Customer has an interest. + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in +Germany, Austria or Switzerland. + + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of +PTC, its subsidiaries and +affiliates, and each of their respective directors, officers, employees or agents, with respect to the +Licensed Products and Services, +including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, +trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 +ABOVE, THE MAXIMUM +LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, +FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE +RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, +SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR +THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED +ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD +IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES +THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR +ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF +PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS +OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS +INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND (C) SPECIAL, +INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE +HOWSOEVER CAUSED; IN EACH +CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective +directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer +recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and +limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the +Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section +6 shall not apply to any +claim in respect of death or personal injury. + + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses +(i) through (vii) of +Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer +or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's +creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against +Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence +dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section + + 7.1(a) above) of this +Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed +Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable +satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this +Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for +which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in +Customer's possession or in use. +7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this +Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way +connected with this Agreement shall be governed by and construed in accordance with the laws of the +Commonwealth of +Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform +Computer Information +Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the +International Sale of Goods. +All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal +courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or +anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual +property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the +Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the +personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all +actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and +binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute +arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to +Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be +provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 +Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have +been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; (C) if given by express +courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by +sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any +of Customer's rights or +obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, +and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior +written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. +No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed +by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this +Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal +requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the +Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer +acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and +regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, +received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or +technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's +home country or countries, and that the transfer of the Licensed Products or related technology to +Customer's employees, affiliates, +or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall +be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services +requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby +warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. +Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State +Department's Nonproliferation +Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked +Persons or any similar Export +Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export +restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States +Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the +Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of +a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. +Government, including but not limited to persons listed on the Restricted Parties Lists, or (C) engaged in activities related to the +design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) +engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to +which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will +comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law +and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, +loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any +provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the +remaining provisions and such provisions determined to be invalid shall be deemed severed from this +Agreement and, to the extent +possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between +PTC and Customer +with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding +unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended +beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such +licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a +customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products +are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial +license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed +Product(s) under a United States +government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the +Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer +agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government +contract. +Schedule A - Purchases from PTC Affiliates +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the +License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set +forth below. +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +Belgium, Netherlands, Luxembourg +Parametric Technology Nederland B.V. Netherlands +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, Germany +France Parametric Technology S.A. France Ireland PTC Software and Services (Ireland) Limited +Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the +European Union +PTC Software and Services (Ireland) Limited +Republic of Ireland Turkey, Kosovo, Serbia, Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and Albania +PTC Software and Services (Ireland) Limited +Republic of Ireland +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the Chamber of Commerce and Industry of the Russian Federation in Moscow Belarus, Moldova, Ukraine, +Armenia, Georgia, Azerbaijan, Kazakhstan, Kyrgyzstan, Tajikistan, Turkmenistan, and Uzbekistan +PTC Software and Services (Ireland) Limited +Republic of Ireland +Norway, Sweden, and Denmark, Finland, Iceland, and the Faeroe Islands +PTC Sweden AB Sweden +Japan PTC Japan K.K. Japan / Tokyo District Court +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for +Disputes +China Parametric Technology (Shanghai) Software Co., Ltd. +The People's Republic of China/China International Economic and Trade Arbitration Commission in Shanghai +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited +India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries including Australia and New Zealand, but excluding China, Japan and Taiwan) +PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order +Commonwealth of Massachusetts, +United States + +*Specific Provisions for Austria, Germany and Switzerland: +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following +provisions shall have no applicability to any Licensed Products or Services purchased outside of +Austria, Germany or Switzerland. + +References to sections below are references to the applicable sections in the body of the Agreement. + +Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve +information necessary to achieve interoperability of an independently created computer program with other software +programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and +(iii) PTC, upon +Customer's written request, has not made available the information required for this within a reasonable period. + +Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of +Warranties) are hereby +replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) +months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty +period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the +Customer inspects the +Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this +Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the +Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the +Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious +Errors in writing +within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are +preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product +(s) or (b) repair +the Error, provided that notice of the Error is received by PTC within the periods set forth in Section +4.2 and Customer +provides such additional information regarding the Error as PTC may reasonably request. If the repair +(either by providing +a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error +by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: +(i) rescission of the +affected order so that PTC provides a refund of the license fees paid by Customer for the applicable +Licensed Product(s) +upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. +Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation +period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of +PTC or any of its +resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those +contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of +Customer by an +authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based +on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 +shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a +substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is +solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of +independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of +PTC or its sales +representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the +Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to +be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an +order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on +PTC only to the extent +to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" +or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for +PTC resulting from such guarantee. + +Section 6 is hereby replaced by the following provisions: +6. Limitation of Liability + + 6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a +material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused +by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + + 6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC +breaches material +contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of +PTC who are not +officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, +unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + + 6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + + 6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or +loss of profit. + + 6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, +shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this +knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed +Product(s), the +warranty limitation period pursuant to Section 4.2 shall apply. + + 6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act +(Produkthaftungsgesetz), for injury +of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition +(Beschaffenheitsgarantie) remains unaffected. + + 6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + + 6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of +Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or +inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of +appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other +phenomena which could put individual data or an entire data stock at risk. Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as +specified either in the Quote or at the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC +at the time of installation of +the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as +"fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer +Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with +Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable +installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at +the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student +Edition," "Schools Edition," + +"Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic +Edition/Version," or otherwise +designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable +Documentation, provided that Customer +informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. + +"License" shall have the meaning set out in Section 1.1 of the body of the Agreement. + +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified +in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant +to the terms hereof) or, if no +Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the +License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the +date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License +will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or +the invoice, and such License includes Support Services during such License Term at no additional fee. "License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked +Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked +Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable +Quote, as well as (i) any +software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software +product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 +hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services +purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc. com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and +conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support +Services ordered, may also include +telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C +attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC +as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in +accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, +subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC +and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. +Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the +applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to +connect to an ERP system and a CRM system, two licenses of such adapter will be required. The +Licensed Products that are Per +Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the +applicable Licensed Product or, if no such document is provided, Customer's purchase order for such +Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a +Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the +Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed +Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the +Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town +(based on postal address) +shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed +Products. "Training Services" +does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed +Products for purposes of this +Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed +Product in the original Designated Country and the License fee applicable to the installation of such +Licensed Product in the +Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable +Licensed Product and that, during the +period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed +Product in accordance with the +terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of +the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a +time period of twelve (12) months or for such other period specified in Customer's order accepted by +PTC (a "Support Services +Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that +for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no +additional fee. If Customer does not order Support Services to commence on shipment of the Licensed +Product(s), or if Customer at +any time discontinues Support Services, and in either case subsequently wishes to obtain Support +Services, Customer must pay (i) the +then current fees for Support Services and (ii) the fees for Support Services for any period for which + +Customer has not purchased +Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are +described on http://www.ptc.com at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. +With respect to Registered User Products, e-Learning products and Integrity Concurrent User and +Server Licensed Products, Support +Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide +Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with +the level of Support Services Customer has purchased. The services offered under any Support Services +Plan may change from time +to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to +Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize +PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which +PTC will provide telephone support will vary depending upon the level of Support Services ordered by +Customer. For all levels of +Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business +hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support + +Services that include +telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total +number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with +Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC +shall use diligent efforts +to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC +during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may +reasonably request. + +(C) New Releases. PTC will provide Customer with one copy of each New Release for each Licensed +Product for which +Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. +Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous +release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; +thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as +described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, +environment, databases or other system components which adversely affect the Licensed Products; (iii) +caused by Customer's +modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of +the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or +peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of +the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a +failure by the Customer to implement recommendations in respect of solutions to Errors previously +provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for +Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by +Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is +responsible for the distribution of New Releases to any of Customer's additional locations where +Licensed Products are authorized to +be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address +for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed +Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality +contained within the Licensed Products, all of which are Customer's sole responsibility + + + + +## MIT JsonCpp +============================ + + +The JsonCpp library's source code, including accompanying documentation, tests and demonstration applications, are licensed under the following conditions... + + +The author (Baptiste Lepilleur) explicitly disclaims copyright in all jurisdictions which recognize such a disclaimer. In such jurisdictions, this software is released into the Public Domain. + + +In jurisdictions which do not recognize Public Domain property (e.g. Germany as of +2010), this software is Copyright (C) 2007-2010 by Baptiste Lepilleur, and is released under the terms of the MIT License (see below). + + +In jurisdictions which recognize Public Domain property, the user of this software may choose to accept it either as 1) Public Domain, 2) under the conditions of the MIT License (see below), or 3) under the terms of dual Public Domain/MIT License conditions described here, as they choose. + + +The MIT License is about as close to Public Domain as a license can get, and is described in clear, concise terms at: + + +http://en.wikipedia.org/wiki/MIT_License + + +### The full text of the MIT License follows: +Copyright (C) 2007-2010 Baptiste Lepilleur + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## Open source HPND License + +PIL +The Python Imaging Library (PIL) is + + +Copyright (C) 1997-2011 by Secret Labs AB Copyright (C) 1995-2011 by Fredrik Lundh + + +Pillow is the friendly PIL fork. It is + + +Copyright (C) 2010-2022 by Alex Clark and contributors +Like PIL, Pillow is licensed under the open source HPND License: + + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + + +Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that +both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + + +END OF (3) ) Ion Chef(TM) Instrument Software Version 5.18 END USER LICENSE AGREEMENT +**************************************************** +**************************************************** +**************************************************** +**************************************************** +**************************************************** +(4) BEGINS: + +LIFE TECHNOLOGIES CORPORATION +END USER LICENSE AGREEMENT and LIMITED PRODUCT WARRANTY +FOR ION GENESTUDIOTM S5 INSTRUMENT SOFTWAREVERSION 5.18 INSTRUMENT OPERATING SOFTWARE +NOTICE TO USER: PLEASE READ THIS DOCUMENT CAREFULLY. THIS IS THE CONTRACT BETWEEN YOU AND LIFE TECHNOLOGIES CORPORATION ("LIFE TECHNOLOGIES") REGARDING THE OPERATING SOFTWARE FOR YOUR LIFE TECHNOLOGIES WORKSTATION OR OTHER INSTRUMENT AND BUNDLED SOFTWARE INSTALLED WITH YOUR OPERATING SOFTWARE. THIS AGREEMENT CONTAINS WARRANTY AND LIABILITY DISCLAIMERS AND LIMITATIONS. YOUR INSTALLATION AND USE OF THIS LIFE TECHNOLOGIES SOFTWARE IS SUBJECT TO THE TERMS AND CONDITIONS CONTAINED IN THIS END USER SOFTWARE LICENSE AGREEMENT, AND YOU WILL BE BOUND BY THESE TERMS AND CONDITIONS IF YOU INSTALL AND USE THE SOFTWARE. + +IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, YOU SHOULD PROMPTLY RETURN THIS SOFTWARE, TOGETHER WITH ALL PACKAGING, TO LIFE TECHNOLOGIES AND YOUR PURCHASE PRICE WILL BE REFUNDED. +This Life Technologies End User License Agreement accompanies a Life Technologies software product ("Software") and related explanatory materials ("Documentation"). The term "Software" also includes any upgrades, modified versions, updates, additions and copies of the Software licensed to you by Life Technologies. The term "License" or "Agreement" means this End User Software License Agreement. The term "you" or "Licensee" means the purchaser or user of this license to the Software. This Agreement includes herein by reference any additional use restrictions or Limited Use Label Licenses listed in or on user manuals, labeling, product inserts, technical notes, literature (including but not limited to Documentation) and/or splash screens related to this Software ("Supplemental Terms"). To the extent such Supplemental Terms are more restrictive than those contained herein, the more restrictive usage terms shall control. +This Software may use third-party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners. Various components require distribution of source code or if a URL is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by the license, offer to provide the source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license. Such licenses, if any, may be found in Appendix 1 below. In order to use this Software, the end-user must abide by the terms and conditions of these third-party licenses. + +TITLE + +Title, ownership rights and intellectual property rights in and to the Software and Documentation shall at all times remain with Life Technologies and its subsidiaries, and their suppliers. All rights not specifically granted by this License, including Federal and international copyrights, are reserved by Life Technologies or their respective owners. + +COPYRIGHT + +The Software, including its structure, organization, code, user interface and associated Documentation, is a proprietary product of Life Technologies or its suppliers, and is protected by international laws of copyright. The law provides for civil and criminal penalties for anyone in violation of the laws of copyright. + +LICENSE + +USE OF THE SOFTWARE + +Subject to the terms and conditions of this Agreement, Life Technologies grants the purchaser of this product a non-exclusive, non-transferable (except in connection with the sale of the instrument on which it is hereby pre-installed) license, with no rights to sublicense, only to use the Software in object code (machine readable) format only on the single instrument on which it has been pre-installed by Life Technologies. + +RESTRICTIONS + +Unless permitted by applicable law, and in such cases only to the extent permitted by such law: + +7. You shall not copy, transfer (except temporarily in the event of a computer malfunction), rent, modify, distribute, electronically transmit, lend, lease, use, create derivative works based on the Software or merge the Software, or the associated Documentation, in whole or in part, whether alone or combined with any other products, except as expressly permitted in this Agreement. +8. You shall not reverse assemble, decompile, discover the source code or otherwise reverse engineer the Software. +9. You shall not remove any proprietary, copyright, trade secret or warning legend from the Software or any Documentation. +10. You agree to comply fully with all export laws and restrictions and regulations of the United States or applicable foreign agencies or authorities. You agree that you will not export or reexport, directly or indirectly, the Software and the Documentation into any country prohibited by the United States Export Administration Act and the regulations thereunder or other applicable United States law. +11. You may not use the Software or Documentation for the benefit of any third party by means of an outsourcing or service bureau relationship or for any similar commercial time-sharing or third-party training use. +12. You shall not sell, rent, transfer, resell for profit, or distribute this license or the Software, or any part thereof or any interest therein, unless the next user agrees to comply with the terms of this End User License Agreement. + +VERIFICATION + +At the written request of Life Technologies, not more frequently than annually, you shall furnish Life Technologies with a signed certification verifying that the Software is being used pursuant to the provisions of this License. + +TRIAL + +If this license is granted on a trial basis, you are hereby notified that license management software may be included to automatically cause the Software to cease functioning at the end of the trial period (and in any case you agree to discontinue usage at the end of the trial period or at the express written request of Life Technologies). + +TERMINATION + +You may terminate this Agreement by discontinuing use of the Software, removing all copies from your computers and storage media, and returning the Software and Documentation, and all copies thereof, to Life Technologies. Life Technologies may terminate this Agreement if you fail to comply with all of its terms, in which case you agree to discontinue using the Software, remove all copies from your computers and storage media, and return the Software and Documentation, and all copies thereof, to Life Technologies. + +U.S. GOVERNMENT END USERS + +The Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. + +EUROPEAN UNION END USERS + +If this Software is used within a country of the European Union, nothing in this Agreement shall be construed as restricting any rights available under Directive 2009/24/EC of the European Parliament and of the Council of 23 April 2009 on the legal protection of computer programs. + +LIMITED WARRANTY AND LIMITATION OF REMEDIES + +Limited Warranty. Life Technologies warrants that, except for Software provided on a trial basis, for a period of ninety days from the beginning of the applicable warranty period (as described below) the Software will, under normal use and as unmodified, function substantially in accordance with the functions and features described in the Documentation delivered with the Software when properly installed, and that for a period of ninety days from the beginning of the applicable warranty period (as described below) the tapes, CDs, diskettes or other media bearing the Software will be free of defects in materials and workmanship under normal use. +The above warranties do not apply to defects resulting from misuse, neglect, or accident, including without limitation: operation outside of the environmental or use specifications, or not in conformance with the instructions for any instrument system, software, or accessories; improper or inadequate maintenance by the user; installation of software or interfacing, or use in combination with software or products not supplied or authorized by Life Technologies; and modification or repair of the products not authorized by Life Technologies. +Warranty Period Commencement Date. The applicable warranty period for software begins on the earlier of the date of installation or three (3) months from the date of shipment for software installed by Life Technologies personnel. For software installed by the purchaser or anyone other than Life Technologies, the warranty period begins on the date the software is delivered to you. The applicable warranty period for media begins on the date the media is delivered to the purchaser. + +LIFE TECHNOLOGIES MAKES NO OTHER WARRANTIES OF ANY KIND WHATSOEVER, EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, DATA GENERATED FROM THE USE OF THE SOFTWARE ("GENERATED DATA") OR DOCUMENTATION, INCLUDING BUT NOT LIMITED TO WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE OR MERCHANTABILITY, NON-INFRINGEMENT OR NON-MISSAPROPRIATION OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, CUSTOM, TRADE, QUIET ENJOYMENT, ACCURACY OF INFORMATIONAL CONTENT, OR SYSTEM INTEGRATION. ALL OTHER WARRANTIES ARE EXPRESSLY DISCLAIMED. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, LIFE TECHNOLOGIES MAKES NO WARRANTIES THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR COMPLETELY SECURE, WILL OPERATE IN COMBINATION WITH THIRD PARTY HARDWARE OR SOFTWARE PRODUCTS, OR WILL CONFORM EXACTLY TO THE DOCUMENTATION, OR THAT LIFE TECHNOLOGIES WILL CORRECT ALL PROGRAM ERRORS. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY FOR BREACH OF WARRANTY RELATING TO THE SOFTWARE OR DOCUMENTATION SHALL BE LIMITED, AT LIFE TECHNOLOGIES SOLE OPTION, TO (1) CORRECTION OF ANY ERROR IDENTIFIED TO LIFE TECHNOLOGIES IN A WRITING FROM YOU IN A SUBSEQUENT RELEASE OF THE SOFTWARE, WHICH SHALL BE SUPPLIED TO YOU FREE OF CHARGE, (2) ACCEPTING A RETURN OF THE PRODUCT, AND REFUNDING THE PURCHASE PRICE UPON RETURN OF THE PRODUCT AND REMOVAL OF ALL COPIES OF THE SOFTWARE FROM YOUR COMPUTERS AND STORAGE DEVICES, (3) REPLACEMENT OF THE DEFECTIVE SOFTWARE WITH A FUNCTIONALLY EQUIVALENT PROGRAM AT NO CHARGE TO YOU, OR (4) PROVIDING A REASONABLE WORK AROUND WITHIN A REASONABLE TIME. LIFE TECHNOLOGIES SOLE LIABILITY AND RESPONSIBILITY UNDER THIS AGREEMENT FOR BREACH OF WARRANTY RELATING TO MEDIA IS THE REPLACEMENT OF DEFECTIVE MEDIA RETURNED WITHIN 90 DAYS OF THE DELIVERY DATE. THESE ARE YOUR SOLE AND EXCLUSIVE REMEDIES FOR ANY BREACH OF WARRANTY. WARRANTY CLAIMS MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. +YOU ACKNOWLEDGE THAT LIFE TECHNOLOGIES HAS NO CONTROL OVER THE SPECIFIC CONDITIONS UNDER WHICH YOU USE THE SOFTWARE. ACCORDINGLY, EXCEPT FOR THE FOREGOING EXPRESS WARRANTY, LICENSOR CANNOT AND DOES NOT WARRANT THE PERFORMANCE OF THE SOFTWARE OR ANY PARTICULAR RESULTS THAT MAY BE OBTAINED BY THE USE OF THE SOFTWARE. THE SOFTWARE DOES NOT REPLACE YOUR OBLIGATION TO EXERCISE YOUR INDEPENDENT JUDGMENT IN USING THE SOFTWARE. The warranties made by Life Technologies may be voided by abuse or misuse of the Software. + +LIMITATION OF LIABILITY + +IN NO EVENT SHALL LIFE TECHNOLOGIES OR ITS SUPPLIERS BE RESPONSIBLE OR LIABLE, WHETHER IN CONTRACT, TORT, WARRANTY OR UNDER ANY STATUTE (INCLUDING WITHOUT LIMITATION ANY TRADE PRACTICE, UNFAIR COMPETITION OR OTHER STATUTE OF SIMILAR IMPORT) OR ON ANY OTHER BASIS FOR DAMAGES ARISING FROM PERSONAL INJURY OR DEATH OR SPECIAL, INDIRECT, INCIDENTAL, MULTIPLE, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE POSSESSION OR USE OF, OR THE INABILITY TO USE, THE SOFTWARE, THE GENERATED DATA OR DOCUMENTATION, EVEN IF LIFE TECHNOLOGIES IS ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES, INCLUDING WITHOUT LIMITATION DAMAGES OR EXPENSES ARISING FROM OR RELATED TO, OR ALLEGED TO HAVE ARISEN FROM OR BE RELATED TO, LOSS OF USE, LOSS OF DATA, DOWNTIME, OR FOR LOSS OF REVENUE, PROFITS, GOODWILL OR BUSINESS OR OTHER FINANCIAL LOSS. IN ANY CASE, THE ENTIRE LIABILITY OF LIFE TECHNOLOGIES AND ITS SUPPLIERS UNDER THIS LICENSE, OR ARISING OUT OF THE USE OF THE SOFTWARE OR DOCUMENTATION OR GENERATED DATA, SHALL NOT EXCEED, IN THE AGGREGATE, THE PURCHASE PRICE OF THE PRODUCT. +SOME STATES, COUNTRIES OR JURISDICTIONS LIMIT THE SCOPE OF OR PRECLUDE LIMITATIONS OR EXCLUSION OF REMEDIES OR DAMAGES, OR OF LIABILITY, SUCH AS LIABILITY FOR GROSS NEGLIGENCE OR WILLFUL MISCONDUCT, AS OR TO THE EXTENT SET FORTH ABOVE, OR DO NOT ALLOW IMPLIED WARRANTIES TO BE EXCLUDED. IN SUCH STATES, COUNTRIES OR JURISDICTIONS, THE LIMITATION OR EXCLUSION OF WARRANTIES, REMEDIES, DAMAGES OR LIABILITY SET FORTH ABOVE MAY NOT APPLY TO YOU. HOWEVER, ALTHOUGH THEY SHALL NOT APPLY TO THE EXTENT PROHIBITED BY LAW, THEY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW. YOU MAY ALSO HAVE OTHER RIGHTS THAT VARY BY STATE, COUNTRY OR OTHER JURISDICTION. +CONFIDENTIALITY + +You agree to protect Life Technologies Confidential Information with the same degree of care used to protect your own confidential information (but in no event less than a reasonable standard of care), and not to use or disclose any portion of such Confidential Information to third parties, except as expressly authorized in this Agreement. You acknowledge that the Software, including its content, structure, organization and design constitute proprietary and valuable trade secrets (and other intellectual property rights) of Life Technology and/or its licensors. The term "Confidential Information" means, collectively, non-public information that Life Technologies (and its licensors) provide and reasonably consider to be of a confidential, proprietary or trade secret nature, including but not limited to (i) the Software, and (ii) confidential elements of the Software and Life Technologies (and its licensors') technology and know-how, whether in tangible or intangible form, whether designated as confidential or not, and whether or not stored, compiled or memorialized physically, electronically, graphically, photographically, or in writing. Confidential Information does not include any information which you can demonstrate by credible evidence: (a) is, as of the time of its disclosure, or thereafter becomes part of the public domain through no fault of yours; (b) was rightfully known to you prior to the time of its disclosure, or to have been independently developed by you without use of Confidential Information; and/or (C) is subsequently learned from a third party not under a confidentiality obligation with respect to such Confidential Information. Confidential Information that is required to be disclosed by you pursuant to a duly authorized subpoena, court order, or government authority shall continue to be Confidential Information for all other purposes and you agree, prior to disclosing pursuant to a subpoena, court order, or government authority, to provide prompt written notice and assistance to Life Technologies prior to such disclosure, so that Life Technologies may seek a protective order or other appropriate remedy to protect against disclosure. + +SOFTWARE IMPROVEMENTS + +You acknowledge and agree that any ideas, enhancements, modifications, and the like disclosed by you to Life Technologies with respect to the Software ("Software Improvements and Feedback") will be the property of Life Technologies. You agree to assign, and hereby assign, all right, title, and interest worldwide in the Software Improvements and Feedback to Life Technologies and agree to assist Life Technologies, at Life Technologies' expense, in perfecting and enforcing Life Technologies rights thereto and ownership thereof. You acknowledge and agree that Life Technologies may use such Software Improvements and Feedback for its business purposes without restriction. + +GENERAL + +This Agreement shall be governed by laws of the State of California, exclusive of its conflict of laws provisions. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods. This Agreement contains the complete agreement between the parties with respect to the subject matter hereof, and supersedes all prior or contemporaneous agreements or understandings, whether oral or written. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law, that provision will be enforced to the maximum extent permissible and the remaining provisions of this Agreement will remain in full force and effect. The controlling language of this Agreement, and any proceedings relating to this Agreement, shall be English. You agree to bear any and all costs of translation, if necessary. The headings to the sections of this Agreement are used for convenience only and shall have no substantive meaning. All questions concerning this Agreement shall be directed to: Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008, Attention: Legal Department. +Unpublished rights reserved under the copyright laws of the United States. Life Technologies Corporation, 5781 Van Allen Way, Carlsbad, CA 92008. +Life Technologies is a trademark of Life Technologies Corporation or its subsidiaries in the U.S. and certain other countries. +All other trademarks are the sole property of their respective owners. + +May 26, 2022 + +Appendix 1 + +Life Technologies Corporation +Third Party Copyright Notices and Licenses + +Ion GeneStudioTM S5 Instrument Software VERSION 5.18 INSTRUMENT OPERATING SOFTWARE +This software uses third party software components from several sources. Portions of these software components are copyrighted and licensed by their respective owners as indicated below. Various licenses require distribution of source code or if a link is used to point the end-user to a source-code repository, and the source code is not available at such site, the distributor must, for a time determined by license, offer to provide source code. In such cases, please contact your Life Technologies representative. As well, various licenses require that the end-user receive a copy of the license or certain notices. Such licenses and notices may be found in this appendix. + +MIT/X derivate license libcurl +The curl license +COPYRIGHT AND PERMISSION NOTICE + + +Copyright (C) 1996 - 2022, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS +file. + + +All rights reserved. + + +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +## MIT +json library + +Copyright (C) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +======================================================================== +(END LICENSE TEXT) + + +The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. + + + +## LGPL-2.1 + +libjpeg + +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 + +Name: libjpeg8-empty + + +Files: * + +Copyright: 2011 Linaro Limited + +License: LGPL-2.1 + +This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License (LGPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +* This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. +* You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Library General Public +License, version 2, can be found in /usr/share/common-licenses/LGPL-2.1. + + + +## LGPL-2.1 libpthread +This is the Debian prepackaged version of the Embedded GNU C Library version 2.19. + + +It was put together by the GNU Libc Maintainers +from + + +* Most of the GNU C library is under the following copyright: + + +Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + +You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +02110-1301 USA + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. + + +* The utilities associated with GNU C library is under the following copyright: + + +Copyright (C) 1991,92,93,94,95,96,97,98,99,2000,2001,2002,2003,2004,2005, +2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License, or +(at your option) any later version. + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/GPL-2'. + + +* All code incorporated from 4.4 BSD is distributed under the following license: + + +Copyright (C) 1991 Regents of the University of California. All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. [This condition was removed.] +4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software +without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The DNS resolver code, taken from BIND 4.9.5, is copyrighted both by UC Berkeley and by Digital Equipment Corporation. The DEC portions are under the following license: +Portions Copyright (C) 1993 by Digital Equipment Corporation. Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that the name of Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the document or software without specific, written prior permission. + + +THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP. +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +* The Sun RPC support (from rpcsrc-4.0) is covered by the following license: +Copyright (C) 2010, Oracle America, Inc. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the "Oracle America, Inc." nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following CMU license covers some of the support code for Mach, derived from Mach 3.0: + + +Mach Operating System +Copyright (C) 1991,1990,1989 Carnegie Mellon University +All Rights Reserved. + + +Permission to use, copy, modify and distribute this software and its documentation is hereby granted, provided that both the copyright notice and this permission notice appear in all copies of the software, derivative works or modified versions, and any portions thereof, and that both notices appear in supporting documentation. + + +CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS'' CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + + +Carnegie Mellon requests users of this software to return to + + +Software Distribution Coordinator School of Computer Science Carnegie Mellon University Pittsburgh PA 15213-3890 + + +or Software.Distribution@CS.CMU.EDU any improvements or extensions that they make and grant Carnegie Mellon the rights to redistribute these changes. +* The file if_ppp.h is under the following CMU license: Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The following license covers the files from Intel's "Highly Optimized +Mathematical Functions for Itanium" collection: + +Intel License Agreement + + +Copyright (C) 2000, Intel Corporation + + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + +* The name of Intel Corporation may not be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +* The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright +(C) by Craig Metz and are distributed under the following license: + + +* The Inner Net License, Version 2.00 + + +The author(s) grant permission for redistribution and use in source and +binary forms, with or without modification, of the software and documentation provided that the following conditions are met: + + +0. If you receive a version of the software that is specifically labelled +as not being for redistribution (check the version message and/or README), +you are not permitted to redistribute that version of the software in any way or form. +1. All terms of the all other applicable copyrights and licenses must be followed. +2. Redistributions of source code must retain the authors' copyright notice(s), this list of conditions, and the following disclaimer. +3. Redistributions in binary form must reproduce the authors' copyright notice(s), this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. +4. [The copyright holder has authorized the removal of this clause.] +5. Neither the name(s) of the author(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. If these license terms cause you a real problem, contact the author. */ + +## MIT +libxml + +https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home + + +The MIT License +OSI Approved License LogoLicense Copyright: Unknown. License License: Unknown. +License Contact: Unknown. + +SPDX short identifier: MIT Further resources... + +Begin license text. +Copyright + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +End license text. + + + + +## LGPL-2.1+ +libudev + +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: systemd +Upstream-Contact: systemd-devel@lists.freedesktop.org +Source: https://www.freedesktop.org/wiki/Software/systemd/ + + +Files: debian/* +Copyright: 2010-2013 Tollef Fog Heen +2013-2015 Michael Biebl +2013 Michael Stapelberg License: LGPL-2.1+ + + +Files: * + +Copyright: 2008-2015 Kay Sievers + +2010-2015 Lennart Poettering +2012-2015 Zbigniew Ja (TM) drzejewski-Szmek +2013-2015 Tom Gundersen +2013-2015 Daniel Mack +2010-2015 Harald Hoyer +2013-2015 David Herrmann +2013, 2014 Thomas H.P. Andersen +2013, 2014 Daniel Buch +2014 Susant Sahani +2009-2015 Intel Corporation +2000, 2005 Red Hat, Inc. +2009 Alan Jenkins +2010 ProFUSION embedded systems +2010 Maarten Lankhorst +1995-2004 Miquel van Smoorenburg +1999 Tom Tromey +2011 Michal Schmidt +2012 B. Poettering +2012 Holger Hans Peter Freyther +2012 Dan Walsh +2012 Roberto Sassu +2013 David Strauss +2013 Marius Vollmer +2013 Jan Janssen +2013 Simon Peeters +License: LGPL-2.1+ + + +Files: src/basic/siphash24.h src/basic/siphash24.c +Copyright: 2012 Jean-Philippe Aumasson +2012 Daniel J. Bernstein License: CC0-1.0 + + +Files: src/basic/securebits.h +Copyright: Linus Torvalds License: GPL-2 + + +Files: src/basic/ioprio.h +Copyright: Jens Axboe License: GPL-2 + + +Files: src/shared/linux/auto_dev-ioctl.h +Copyright: 2008 Red Hat, Inc. +2008 Ian Kent License: GPL-2+ + + +Files: src/basic/sparse-endian.h +Copyright: 2012 Josh Triplett License: Expat + + +Files: src/journal/lookup3.c src/journal/lookup3.h +Copyright: none +License: public-domain +You can use this free for any purpose. It's in the public domain. It has no warranty. + + +Files: src/udev/* +Copyright: 2003-2012 Kay Sievers +2003-2004 Greg Kroah-Hartman +2004 Chris Friesen +2004, 2009, 2010 David Zeuthen +2005, 2006 SUSE Linux Products GmbH +2003 IBM Corp. +2007 Hannes Reinecke +2009 Canonical Ltd. +2009 Scott James Remnant +2009 Martin Pitt +2009 Piter Punk +2009, 2010 Lennart Poettering +2009 Filippo Argiolas +2010 Maxim Levitsky +2011 ProFUSION embedded systems +2011 Karel Zak +2014 Zbigniew Ja (TM) drzejewski-Szmek +2014 David Herrmann +2014 Carlos Garnacho License: GPL-2+ + + +Files: src/udev/udev-ctrl.c src/udev/udevadm-hwdb.c src/udev/udev-builtin.c src/udev/udev-builtin-net_id.c +src/udev/udev-builtin-net_setup_link.c src/udev/udev-builtin-hwdb.c src/udev/udev-builtin-btrfs.c src/udev/udev-builtin-keyboard.c +src/udev/net/link-config.h src/udev/net/link-config.c src/udev/net/ethtool-util.c src/udev/net/ethtool-util.h +Copyright: 2007-2013 Kay Sievers +2013 Tom Gundersen License: LGPL-2.1+ + + +Files: src/udev/scsi_id/scsi.h Copyright: 2003 IBM Corp. License: GPL-2 + + +License: Expat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +## License: GPL-2 +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. +*On Debian and systems the full text of the GNU General Public +License version 2 can be found in the file +`/usr/share/common-licenses/GPL-2` + + +## License: GPL-2+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +* You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2` (TM) . + + +## License: LGPL-2.1+ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, or (at your option) +any later version. + +* This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. +* You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* On Debian systems, the complete text of the GNU Lesser General Public +License version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1`(TM) . + +## License: CC0-1.0 +To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. + +* You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see . +* On Debian systems, the complete text of the CC0 1.0 Universal license can be found in `/usr/share/common-licenses/CC0-1.0` (TM) . + + +## Libpng license libpng12 + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE + + +### PNG Reference Library License version 2 + + +* Copyright (C) 1995-2019 The PNG Reference Library Authors. +* Copyright (C) 2018-2019 Cosmin Truta. +* Copyright (C) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. +* Copyright (C) 1996-1997 Andreas Dilger. +* Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +The software is supplied "as is", without warranty of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or anyone distributing the software, be liable for any damages or other liability, whether in contract, tort or otherwise, arising from, out of, or in connection with the software, or the use or other dealings in the software, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this software, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you +use this software in a product, an acknowledgment in the product documentation would be appreciated, but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + + +## PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) + + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are Copyright (C) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are derived from libpng-1.0.6, and are distributed according to the same disclaimer and license as libpng-1.0.6 with the following individuals added to the list of Contributing Authors: + + +Simon-Pierre Cadieux +Eric S. Raymond Mans Rullgard Cosmin Truta Gilles Vollant James Yu +Mandar Sahastrabuddhe +Google Inc. Vadim Barkov + + +and with the following additions to the disclaimer: + + +There is no warranty against interference with your enjoyment of the library or against infringement. There is no warranty that our efforts or the library will fulfill any of your particular purposes +or needs. This library is provided with all faults, and the entire risk of satisfactory quality, performance, accuracy, and effort is with the user. + + +Some files in the "contrib" directory and some configure-generated files that are distributed with libpng have other copyright owners, and are released under other open source licenses. + + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are Copyright (C) 1998-2000 Glenn Randers-Pehrson, are derived from libpng-0.96, and are distributed according to the same disclaimer and license as libpng-0.96, with the following individuals added to the list of Contributing Authors: + +Tom Lane +Glenn Randers-Pehrson +Willem van Schaik + + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (C) 1996-1997 Andreas Dilger, are derived from libpng-0.88, and are distributed according to the same disclaimer and license as libpng-0.88, with the following individuals added to the list of Contributing Authors: + + +John Bowler Kevin Bracey Sam Bushell +Magnus Holmgren +Greg Roelofs +Tom Tanner + + +Some files in the "scripts" directory have other copyright owners, but are released under this license. + + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + + +For the purposes of this copyright and license, "Contributing Authors" is defined as the following set of individuals: + + +Andreas Dilger Dave Martindale Guy Eric Schalnat Paul Schmidt +Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage. + + +Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, for any purpose, without fee, subject to the following restrictions: + + +1. The origin of this source code must not be misrepresented. + + +2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. + + +3. This Copyright notice may not be removed or altered from any source or altered source distribution. + + +The Contributing Authors and Group 42, Inc. specifically permit, without fee, and encourage the use of this source code as a component to supporting the PNG file format in commercial products. If you use +this source code in a product, acknowledgment is not required but would be appreciated. + + +LGPL-2.1 libnuma +This package was debianized by Ian Wienand +on Wed, 15 Dec 2004. + + +libnuma sources are available from https://github.com/numactl/numactl + + +Upstream Authors: +Andi Kleen Copyright (C) 2004 Andi Kleen +numactl and the demo programs are under the GNU General Public License, v.2 libnuma is under the GNU Lesser General Public License, v2.1. +The manpages are under the same license as the Linux manpages (see the files) + + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. The full text of the License may be found in /usr/share/common-licenses/GPL. + + +The redistribution of portions of this program are controlled by the GNU Lesser General Public License as published by the Free Software Foundation. The full text of the License may be found in + + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + +Parts of the numademo program are derived from the STREAM benchmark, available from + +http://www.cs.virginia.edu/stream/ + + +Proprietary license from PTC Axeda Agent Embedded +PTC CUSTOMER AGREEMENT + +THIS PTC CUSTOMER AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN THE INDIVIDUAL, OR THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF SUCH INDIVIDUAL ACCEPTS THIS AGREEMENT, THAT EITHER (A) CLICKS THE "I ACCEPT" BUTTON BELOW OR (B) INSTALLS, ACCESSES, OR USES ANY SOFTWARE OR DOCUMENTATION FROM PTC ("CUSTOMER"), AND PTC INC. OR, IF THE PURCHASE WAS MADE IN A COUNTRY SPECIFIED ON SCHEDULE A TO THIS AGREEMENT, THE PTC AFFILIATE SPECIFIED ON SCHEDULE A (AS APPLICABLE, "PTC"). + +PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE ACCEPTING THIS AGREEMENT. BY CLICKING ON THE "I ACCEPT" BUTTON BELOW OR BY INSTALLING, ACCESSING, OR USING ANY SOFTWARE OR DOCUMENTATION FROM PTC, CUSTOMER HEREBY AGREES TO BE BOUND BY THIS AGREEMENT AND REPRESENTS THAT IT IS AUTHORIZED TO DO SO. + +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT OR IF YOU DO NOT HAVE AUTHORITY TO BIND THE COMPANY OR OTHER ORGANIZATION ON WHOSE BEHALF YOU ARE ACCEPTING THIS AGREEMENT, CLICK THE "I DECLINE" BUTTON AND RETURN TO PTC THE SOFTWARE AND DOCUMENTATION PRODUCTS PROVIDED TOGETHER WITH THIS AGREEMENT IN ACCORDANCE WITH THE INSTRUCTIONS PROVIDED WHEN YOU CLICK THE "I DECLINE" BUTTON. NOTE THAT FAILURE TO COMPLY WITH SUCH INSTRUCTIONS WITHIN THE TIME PERIOD SPECIFIED WILL VOID ANY RIGHT YOU WOULD OTHERWISE HAVE HAD FOR A REFUND OF ANY FEES PAID. EACH ORDER FOR LICENSED PRODUCTS MAY NOT BE CANCELLED ONCE THIS AGREEMENT HAS BEEN ACCEPTED. + +IF CUSTOMER DID NOT OBTAIN THE LICENSED PRODUCT FROM PTC DIRECTLY, FROM AN AUTHORIZED PTC DISTRIBUTOR OR RESELLER OR FROM THE PTC ONLINE STORE (AT WWW.PTC.COM), CUSTOMER IS USING AN ILLEGALLY OBTAINED UNLICENSED VERSION OF THE APPLICABLE LICENSED PRODUCT. PTC REGARDS SOFTWARE PIRACY AS THE CRIME IT IS AND PURSUES (BOTH CIVILLY AND CRIMINALLY) THOSE WHO TAKE PART IN THESE ACTIVITIES. AS PART OF THESE EFFORTS, PTC UTILIZES DATA MONITORING AND SCOURING TECHNOLOGIES TO OBTAIN AND TRANSMIT TO PTC DATA ON USERS OF ILLEGAL COPIES OF LICENSED PRODUCTS. IF CUSTOMER IS USING AN ILLEGAL COPY OF SOFTWARE, CEASE USING THE ILLEGAL VERSION AND CONTACT PTC TO OBTAIN A LEGALLY LICENSED COPY. BY USING THIS SOFTWARE, YOU CONSENT TO THE COLLECTION, USE, AND TRANSFER OF PERSONAL DATA (INCLUDING TO THE UNITED STATES) FOR THE PURPOSES OF IDENTIFYING USERS OF ILLEGAL COPIES OF OUR SOFTWARE. SUCH CONSENT SHALL BE BINDING ON ANY USERS OF THIS SOFTWARE, INCLUDING USERS OTHER THAN YOU. + +IN ORDER TO UNDERSTAND THE PREFERENCES OF OUR SOFTWARE USERS, PTC USES DATA MONITORING TECHNOLOGIES TO OBTAIN AND TRANSMIT DATA ON SYSTEM USE AND PERFORMANCE AND FOR GATHERING USER DATA AND USE METRICS ON USERS OF OUR SOFTWARE. WE WILL SHARE THIS DATA WITHIN PTC, ITS AFFILIATED COMPANIES AND OUR BUSINESS PARTNERS, INCLUDING WITHIN THE UNITED STATES AND ELSEWHERE FOR TECHNICAL AND MARKETING PURPOSES AND WILL ENDEAVOR TO ENSURE THAT ANY SUCH DATA TRANSFERRED IS APPROPRIATELY PROTECTED. OUR COMMERCIAL LICENSES PERMIT USERS TO OPT- OUT OF THIS DATA COLLECTION AND OUR STUDENT/EDUCATIONAL VERSIONS ONLY COLLECT DATA ON SYSTEM USE AND PERFORMANCE. OUR FREE AND TRIAL VERSIONS OF SOFTWARE DO NOT ALLOW USERS TO OPT-OUT OF THIS DATA COLLECTION, INCLUDING USER DATA. +IF YOU ARE USING PTC SOFTWARE, VISITING A PTC WEBSITE OR COMMUNICATING ELECTRONICALLY WITH US FROM A COUNTRY OTHER THAN THE UNITED STATES, VARIOUS COMMUNICATIONS WILL NECESSARILY RESULT IN A TRANSFER OF THIS INFORMATION ACROSS INTERNATIONAL BOUNDARIES. +IF YOU DO NOT CONSENT TO THE COLLECTION AND/OR TRANSMISSION (INCLUDING TO THE UNITED STATES) OF YOUR DATA AS DESCRIBED ABOVE, DO NOT DOWNLOAD OR USE PTC SOFTWARE. BY (I) USING FREE OR TRIAL SOFTWARE OR (II) NOT OPTING-OUT OF THE COLLECTION OF CERTAIN PERSONAL DATA AS YOU ARE ABLE TO WITH PTC COMMERCIAL SOFTWARE, YOU CONSENT TO PTC'S COLLECTION, USE, AND TRANSFER OF YOUR PERSONAL DATA (INCLUDING TO THE UNITED STATES). + +CAPITALIZED TERMS NOT DEFINED IN THE TEXT BELOW ARE DEFINED IN SCHEDULE B AT THE END OF THIS AGREEMENT. + +SCHEDULE A TO THIS AGREEMENT CONTAINS ADDITIONAL (OR ALTERNATIVE) TERMS APPLICABLE TO SPECIFIC GEOGRAPHIES. + + +1. License. + + 1.1 License Grant. Subject to the terms and conditions of this Agreement, PTC hereby grants to Customer a non-exclusive, revocable, non-transferable license, without any right to sub-license, to install and use the Licensed Products identified in the Quote during the applicable License Term, solely for Customer's internal business purposes and solely in accordance with the applicable usage and license-type restrictions identified in the Quote and in the Licensing Basis Webpage ("License"). Notwithstanding the foregoing: + + (a) If the Licensed Product is being provided by PTC on an "evaluation" or "trial" basis, such License will be instead to install and use the Licensed Product solely to evaluate such Licensed Products, and Customer agrees not to use the Licensed Product in any commercial applications or for productive purposes. + + (b) If the Licensed Software is Educational Software, Customer must be enrolled in, or employed by, an accredited, academic institution, and shall use the Licensed Software solely for educational purposes in a degree-granting program. If Customer does not meet one of these qualifications, Customer has no rights under this Agreement. Without limitation, non- educational research or funded educational research conducted using the facilities of an academic institution or under an academic name does not qualify as "educational purposes" and use of Educational Software for such purposes represents a violation of the terms of this Agreement. + + (C) If the Licensed Software is sold on a "demo and test" or "non-production" basis (or similar designation), such Licensed +Software may not be used in a production environment. + + 1.2 Designated Country/Computers/Networks. Subject to Section 1.3, Customer may only install and operate Licensed Products on the applicable Designated Computers or Designated Networks on computer systems and networks situated in the applicable Designated Country. Customer may, from time to time, change the Designated Computer, Designated Network, and/or the Designated Country in which Customer seeks to install or operate a Licensed Product, provided that in each case (i) Customer shall give prior written notice to PTC of any such change, and (ii) upon moving the Licensed Products to a different Designated Country, Customer shall pay all applicable Uplift Fees. Notwithstanding the foregoing, Registered Users need not be located in the Designated Country when accessing a Registered User Product. + + 1.3 Global/Restricted Global Licenses. If a Concurrent User Licensed Product is licensed by PTC on a "Global" or "Restricted +Global" basis, Section 1.2 shall not apply to such Licensed Products and the following provisions shall apply instead: + + (i) Global Licenses. Subject to the other requirements of this Agreement, a Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) throughout the world. + + (ii) Restricted Global Licenses. Subject to the other requirements of this Agreement, a Restricted Global License allows the Customer to install, operate and use such Licensed Product at any Customer site(s) located in the Designated Country and/or in any Permitted Country. "Permitted Countries" means China, India, Russia, the Czech Republic, Poland, Hungary, Malaysia, South Africa, Israel, Mexico, Brazil, Argentina, and Romania. + + 1.4 Additional Restrictions on Use. Customer shall not permit any persons who are not Permitted Users to access or use the +Licensed Products. Customer shall not and shall not permit any third party(ies) to: + + (i) modify or create any derivative work of any part of the Licensed Products; (ii) rent, lease, or loan the Licensed Products; + + (iii) use the Licensed Products, or permit them to be used, for third-party training, to deliver software implementation or consulting services to any third parties, or for commercial time-sharing or service bureau use; + + (iv) disassemble, decompile or reverse engineer the Licensed Products or the file format of the Licensed Products, or otherwise attempt to gain access to the source code or file format of the Licensed Products, except as expressly permitted in Schedule A, if applicable; + + (v) sell, license, sublicense, loan, assign, or otherwise transfer (whether by sale, exchange, gift, operation of law, or otherwise) to any third party the Licensed Products, any copy thereof, or any License or other rights thereto, in whole or in part, without in each case obtaining PTC's prior written consent, except to the extent that any of the foregoing are explicitly authorized in the Quote and/or the Licensing Basis Webpage; + + (vi) alter, remove, or obscure any copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices on or in any copies of the Licensed Products; and + + (vii) copy or otherwise reproduce the Licensed Products in whole or in part, except (a) as may be required for their installation into computer memory for the purpose of executing the Licensed Products in accordance with this Section 1, and/or (b) to make a reasonable number of copies solely for back-up purposes (provided that any such permitted copies shall be the property of PTC, and Customer shall reproduce thereon all PTC copyright, trade secret, patent, trademark, logo, proprietary and/or other legal notices contained in the original copy of the Licensed Product obtained from PTC). + + If Customer uses any unlicensed or unauthorized copies of any PTC software, Customer agrees that, without limiting PTC's right to terminate this Agreement for breach in accordance with Section 7 and without limiting any other remedies to which PTC may be +entitled, Customer will pay to PTC the PTC then-current list price for all such unlicensed software, in addition to any fines or penalties that may be imposed by law. + + 1.5 Additional Restrictions on Use Applicable to Concurrent User Products. If the Licensed Product is a Concurrent User Product, the following provisions apply: + + (i) The number of Permitted Users accessing or operating a Concurrent User Product at any point in time may not exceed the number of Licenses in effect at such time for that particular Licensed Product. + + (ii) Except with respect to Integrity and Implementer Products, only Permitted Users physically located in the Designated Country may access, operate and/or use the Licensed Products. Permitted Users who are not employees of Customer may use the Licensed Products while physically located at Customer's site only. + + (iii) Where a Concurrent User Product is Licensed on a "fixed," "locked" or "node-locked" basis, or the Licensed Product is licensed as a "Designated Computer" product, such Licensed Product is licensed to operate solely on the Designated Computer on which it is installed. + + 1.6 Additional Restrictions on Use Applicable to Registered User Products. A License is required for each individual who accesses a Registered User product or the data contained therein, whether directly or through a web portal or other mechanism for "batching" or otherwise achieving indirect access to the Licensed Product or such data. Generic or shared log-ins are not permitted. Customer may add and/or substitute from time to time new Registered Users as long as the aggregate number of Registered Users does not exceed at any point in time the number of Licenses in effect at such time for that particular Licensed Product and, provided further, that if a person who was previously a Registered User returns to Registered User status, a new License fee must be paid to PTC at PTC's then current rates. + + 1.7 Additional Restrictions on Use Applicable to Designated Server Products. Each Designated Server product may only be used on the computer server that is designated by the Customer in connection with the initial installation of such product and that has one unique instance of the applicable installed product application. In the event a computer server is partitioned in any manner (physically, logically or otherwise), the reference in the preceding sentence to "computer server" shall mean each partition of such server, and such Designated Server product may only be used on one of such partitions. Customer may, from time to time, change the Designated Server(s) for a Designated Server Product, and/or the location thereof, provided that in each case +(a) Customer shall give prior written notice to PTC of any such change, and (b) upon transferring the Designated Server Products to a different Designated Country, Customer pays all applicable Uplift Fees. + + 1.8 Third Party Components and Bundled Third Party Products. Certain of the Licensed Products may contain third party software components for which additional terms apply ("Third Party Components"). The current additional terms are set forth on the Schedule of Third Party Terms available in the legal policies and guidelines section of http://www.ptc.com. Separately, third party software products that PTC resells and/or bundles for distribution with the Licensed Products are licensed to Customer directly by the manufacturer of such third party software products ("Bundled Third Party Products"). Such Bundled Third Party Products are also described on the Schedule of Third Party Terms. Customer agrees that its use of Third Party Components and/or Bundled Third Party Products is subject to the terms of the Schedule of Third Party Terms. New Releases containing Third Party Components or Bundled Third Party Products may be subject to additional or different third party terms, of which PTC shall notify the Customer at the time such New Releases are delivered to the Customer. + + 1.9 Upgrades: If the Licensed Software was licensed as an upgrade from a previous version, Customer must first be licensed for the Licensed Software identified by PTC as eligible for the upgrade and Customer must be active on Support Services for such software. After installing the upgrade, Licensed Software licensed as an upgrade replaces and/or supplements the product that formed the basis of Customer's eligibility for the upgrade and Customer may no longer use the original Licensed Software that formed the basis for Customer's upgrade eligibility. + +2. Compliance. + + 2.1 License Usage Assessments. To confirm Customer's compliance with the terms and conditions hereof, Customer agrees that PTC may perform a usage assessment with respect to Customer's use of the Licensed Products. Customer agrees to provide PTC access to Customer's facilities and computer systems, and cooperation from Customer's employees and consultants, as reasonably requested by PTC in order to perform such assessment, all during normal business hours, and after reasonable prior notice from PTC. + + 2.2 Reports. Upon written request from PTC, Customer agrees to provide to PTC an installation and/or usage report with respect to the Licensed Products (and in the case of Registered User Products, such report shall include a list of all users for whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product). Such report shall be certified by an authorized representative of Customer as to its accuracy within ten (10) business days after receipt of any written request from PTC. For any period in which Customer's use of the Licensed Products exceeds the number and/or the scope of the Licenses in effect during such period for such Licensed Products, Customer agrees to pay for any such excess usage, including applicable license and Support Services fees, and without limiting any other rights or remedies to which it is entitled, failure to pay shall be grounds for termination in accordance with Section 7 hereof. + +3. Intellectual Property. PTC and its licensors are the sole owners of the Licensed Products and of any copies of the Licensed Products, and of all copyright, trade secret, patent, trademark and other intellectual or industrial property rights in and to the Licensed Products. All copies of the Licensed Products, in whatever form provided by PTC or made by Customer, shall remain the property of PTC, and such copies shall be deemed to be on loan to Customer during the License Term. Customer acknowledges that the License granted hereunder does not provide Customer with title to or ownership of the Licensed Products or any copies thereof, but only a right of limited use consistent with the express terms and conditions of this Agreement. Customer shall have no rights to the source code for the Licensed Products, and Customer agrees that only PTC shall have the right to maintain, enhance, or otherwise modify the Licensed Products. + +4. Support Services; Warranty; Disclaimer of Warranties. + + See Schedule A for a modified version of this Section 4 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 4.1 Support Services. Upon PTC's acceptance of an order for Support Services or for Licensed Products for which Usage License Fees apply, PTC agrees that it or its designated service provider shall provide the applicable Support Services in accordance with Schedule C. + + 4.2 Warranty. PTC warrants to Customer that PTC is authorized to grant the License(s) and that, subject to Section 4.3, the Licensed Products will be free from Errors for a period of ninety (90) days following PTC's initial shipment to Customer or Customer's designee of such Licensed Products (the "Warranty Period"). + + 4.3 Warranty Exceptions. PTC shall have no warranty obligations hereunder with respect to any (i) evaluation, "trial" or "express" Licenses, (ii) New Releases, (iii) computer software provided to Customer in the course of PTC's delivery of Training Services, (iv) Errors attributable to the use of the Licensed Product in an application or environment for which it was not designed or contemplated, (v) Errors attributable to any modifications or customizations of the Licensed Products, (vi) Licensed Products that are provided by PTC free of charge to Customer, and/or (vii) Sun Software, Oracle Software and/or Bundled Third Party Products. + + 4.4 Sole Remedy. PTC's and its licensors' entire liability and Customer's exclusive remedy for any breach by PTC of the warranty given in Section 4.2 above shall be, at PTC's sole discretion, either to (a) replace the Licensed Product(s) or (b) use diligent efforts to repair the Error. PTC's obligations set forth in the preceding sentence shall apply only if notice of the Error is received by PTC within the Warranty Period and Customer supplies such additional information regarding the Error as PTC may reasonably request. If PTC does not replace the applicable Licensed Product(s) and/or does not repair the Error (either by providing a bug fix, a workaround or otherwise) within a reasonable time after notice of the Error and associated information from Customer is received by PTC, PTC will provide a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies thereof. + + 4.5 No Additional Warranties. No third party, including any employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents, is authorized to give any representations, warranties or covenants greater or different than those contained in this Agreement with respect to any Licensed Products or Services, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. + + 4.6 Disclaimer of Warranties. EXCEPT AS EXPRESSLY STATED IN SECTION 4, PTC DISCLAIMS (AND CUSTOMER WAIVES) ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, WRITTEN OR ORAL, INCLUDING ANY WARRANTY OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND/OR ANY WARRANTY THAT CUSTOMER WILL ACHIEVE ANY PARTICULAR RETURN ON INVESTMENT. THE LICENSED PRODUCTS ARE INTENDED TO BE USED BY TRAINED PROFESSIONALS AND ARE NOT A SUBSTITUTE FOR PROFESSIONAL JUDGMENT, TESTING, SAFETY AND UTILITY. CUSTOMER IS SOLELY RESPONSIBLE FOR ANY RESULTS OBTAINED FROM USING THE LICENSED PRODUCTS, INCLUDING THE ADEQUACY OF INDEPENDENT TESTING OF RELIABILITY AND ACCURACY OF ANY ITEM DESIGNED USING LICENSED PRODUCTS. PTC does not warrant that the operation or other use of the Licensed Products will be uninterrupted or error free or will not cause damage or disruption to Customer's data, computers or networks. + +5. Indemnification; Infringement. + + 5.1 P TC's Ob li gati on to Ind emn ify C u sto mer . PTC, at its own expense, will defend any action brought against Customer based on a claim that any Licensed Product infringes a United States, European Union or Japanese patent, copyright or trademark and, at its option, will settle any such action or will pay any final judgment awarded against Customer, provided that: (a) PTC shall be notified promptly in writing by Customer of any notice of any such claim; (b) PTC shall have the sole control of the defense of any action on such claim and all negotiations for its settlement or compromise and shall bear the costs of the same (save where one or more of the exclusions in Section 5.3 applies); and (C) Customer shall cooperate fully at PTC's expense with PTC in the defense, settlement or compromise of such claim. This Section 5 states PTC's sole and exclusive liability, and Customer's sole remedy, for any and all claims relating to infringement of any intellectual property right. + + 5.2 P TC's Righ t to Act to P reven t a Clai m + + + If a claim described in Section 5.1 hereof occurs or, in PTC's opinion, may occur, +Customer shall permit PTC, at PTC's option and expense to: (a) procure for Customer the right to continue using the Licensed Product; (b) modify the Licensed Product so that it becomes non-infringing without materially impairing its functionality; or (C) terminate the applicable Licenses, accept return of the Licensed Products and grant Customer a credit thereon. For Licenses purchased with a perpetual License Term, such credit shall be equal to the License fees paid by Customer for such Licensed Product depreciated on a straight-line, five year basis. For Licenses purchased on a term license or subscription basis, such credit shall be equal to the prepaid license or subscription fees for the remainder of the License Term. + + 5.3 Exclu sio n s fro m P TC's Ob li gati o n to In d emn ify Cu sto mer . PTC shall have no liability to Customer under Section 5.1 hereof or otherwise to the extent that any infringement or claim thereof is based upon: (a) use of the Licensed Product in combination with equipment or software not supplied hereunder where the Licensed Product itself would not be infringing; (b) use of the Licensed Product in an application or environment for which it was not designed or not contemplated under this Agreement; (C) use of other than a current release of the Licensed Product(s) provided to Customer; (d) modification of the Licensed Product by anyone other than PTC or its employees or agents; or (e) any claims of infringement of any patent, copyright, trade secret, trademark or other proprietary right in which Customer has an interest. + + +6. Limitation of Liability. + + See Schedule A for a modified version of this Section 6 for Licensed Products licensed and used in Germany, Austria or Switzerland. + + 6.1 The warranty and indemnification provisions of Sections 4 and 5 hereof state the entire liability of PTC, its subsidiaries and affiliates, and each of their respective directors, officers, employees or agents, with respect to the Licensed Products and Services, including (without limitation) any liability for breach of warranty, or for infringement or alleged infringement of patent, copyrights, trademarks, trade secrets and other intellectual or proprietary rights by the Licensed Products, or their use. + + 6.2 EXCEPT FOR PTC'S INDEMNIFICATION OBLIGATIONS IDENTIFIED IN SECTION 5.1 ABOVE, THE MAXIMUM LIABILITY OF PTC AND ITS LICENSORS ARISING OUT OF, OR RELATING TO, THE CREATION, LICENSE, FUNCTIONING, USE OR SUPPLY OF THE LICENSED PRODUCTS OR THE PROVISION OF SERVICES OR OTHERWISE RELATING TO THIS AGREEMENT, WHETHER BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, SHALL NOT, (I) FOR LICENSES PURCHASED ON A PERPETUAL BASIS, EXCEED THE FEES PAID BY CUSTOMER FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM AND (II) FOR LICENSES PURCHASED ON A TERM OR SUBSCRIPTION BASIS, EXCEED THE FEES PAID BY CUSTOMER IN THE TWELVE MONTH PERIOD IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO DAMAGES FOR THE LICENSED PRODUCTS OR SERVICES THAT GAVE RISE TO THE CLAIM. + + 6.3 IN NO EVENT SHALL PTC, ITS LICENSORS, ITS AFFILIATES (INCLUDING ITS SUBSIDIARY COMPANIES), OR ANY OF THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES OR AGENTS BE LIABLE FOR: (A) ANY LOSS OF PROFIT, LOSS OF USE DAMAGES, LOSS OF GOODWILL, LOSS OF BUSINESS OPPORTUNITY, LOSS OF SALES, LOSS OF REPUTATION OR LOSS OF ANTICIPATED SAVINGS; (B) ANY LOSS OR INACCURACY OF DATA OR BUSINESS INFORMATION OR FAILURE OR INADEQUACY OF ANY SECURITY SYSTEM OR FEATURE; AND (C) SPECIAL, INCIDENTAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL LOSS OR DAMAGE HOWSOEVER CAUSED; IN EACH CASE EVEN IF PTC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6.4 Customer agrees not to bring any suit or action against PTC, and/or its subsidiaries and affiliates, and/or any of their respective directors, officers, employees or agents for any reason whatsoever more than one year after the cause of action arises. Customer recognizes that fees paid by Customer for the Licensed Products and Services are based in part on the disclaimer of warranty and limitation of liability provisions set forth herein and that, in the absence of Customer's agreement to such terms, the charges for the Licensed Products would be significantly higher. The limitations and exclusions set forth in this Section 6 shall not apply to any claim in respect of death or personal injury. + +7. Term and Termination. + + 7.1 Events Causing Termination. This Agreement and all Licenses will terminate: + + (a) Automatically and without notice on the following events: (I) Customer's breach of any of clauses (i) through (vii) of Section 1.4 or Sections 3 or 8.4 hereof; (II) a receiver, trustee, liquidator, or such similar officer is appointed for Customer or for any of Customer's properties or assets; (III) Customer makes a general assignment for the benefit of Customer's creditors; (IV) Customer files a petition for its reorganization, dissolution or liquidation, or such a petition is filed against Customer and is not dismissed within sixty (60) days thereafter; or (V) Customer ceases doing business or commence dissolution or liquidation proceedings; or + + (b) Thirty (30) days after written notice from PTC specifying a breach (other than as listed in Section 7.1(a) above) of this Agreement, including failure to make any payment due to either PTC or a Reseller in connection with the Licensed Products in a timely manner, if that breach is not, within that thirty (30) day period, remedied to PTC's reasonable satisfaction. + + 7.2 Effects of Expiration or Termination. Upon expiration of a given License Term and/or any expiration or termination of this Agreement, Customer shall promptly pay all sums owed by Customer, return to PTC the original copies of all Licensed Products for which the License Term has expired or has been terminated, destroy and/or delete all copies and backup copies thereof from Customer's computer libraries, storage facilities and/or hosting facilities, and certify in writing by an officer that Customer is in +compliance with the foregoing requirements and that such Licensed Products are no longer in Customer's possession or in use. + + 7.3 Survival. Sections 2, 3, 4.6, 5, 6, 7.2, 7.3 and 8 shall survive expiration or termination of this Agreement. + +8. General. + + 8.1 Governing Law and Jurisdiction. Unless otherwise stated in Schedule A, all disputes arising under, out of, or in any way connected with this Agreement shall be governed by and construed in accordance with the laws of the Commonwealth of Massachusetts without reference to conflict of laws principles (and specifically excluding the Uniform Computer Information Transactions Act). The parties hereby expressly disclaim the application of the U.N. Convention for the International Sale of Goods. All disputes arising under, out of, or in any way connected with this Agreement shall be litigated exclusively in the state or federal courts situated in the Commonwealth of Massachusetts, and in no other court or jurisdiction. Notwithstanding the foregoing or anything to the contrary, PTC shall have the right to bring a claim in any court of competent jurisdiction to enforce any intellectual property rights and/or protect any confidential information. Customer agrees that the state and federal courts situated in the Commonwealth of Massachusetts shall have personal jurisdiction over its person, and Customer hereby irrevocably (i) submits to the personal jurisdiction of said courts and (ii) consents to the service of process, pleadings, and notices in connection with any and all actions initiated in said courts. The parties agree that a final judgment in any such action or proceeding shall be conclusive and binding and may be enforced in any other jurisdiction. Each party waives its right to trial by jury in connection with any dispute arising out of this Agreement. + + 8.2 Notices. Any notice or communication required or permitted under this Agreement shall be in writing. In the case of notice to Customer, the notice shall be directed to the address set forth on the Customer's purchase order or to such other address as may be provided to PTC in writing. In the case of notice to PTC, such notice shall be directed to PTC, 140 Kendrick Street, Needham, MA +02494; Attn: Corporate Controller, with a copy to General Counsel. Any notice provided under this section shall be deemed to have been received: (a) if given by hand, immediately; (b) if given by mail, five (5) business days after posting; (C) if given by express courier service, the second business day following dispatch in the jurisdiction of the sender; or (d) if given by fax, upon receipt +thereof by the recipient's fax machine or as stated in the sender's transmission confirmation report as produced electronically by sender's fax machine. + + 8.3 Assignment, Waiver, Modification. Customer may not assign, transfer, delegate or sublicense any of Customer's rights or obligations hereunder (including without limitation by operation of law or by sale of Customer assets, whether directly or by merger, and a change in control of Customer shall be deemed to be an "assignment" for purposes of the foregoing) without PTC's prior written consent, and any such attempted delegation, assignment, transfer or sublicense shall be void and a breach of this Agreement. No waiver, consent, modification, amendment or change of the terms of this Agreement shall be binding unless in writing and signed by PTC and Customer. PTC reserves the right to charge a transfer fee for any proposed assignment, transfer or sublicense of this Agreement. + + 8.4 Compliance with Laws. Each party shall be responsible for its own compliance with applicable laws, regulations and other legal requirements relating to the conduct of its business and this Agreement. Further Customer represents and warrants that it will use the Licensed Products, as well as related technology and services, in full compliance with applicable laws and regulations. Customer acknowledges and agrees that the Licensed Products and related technical data and services are subject to the export control laws and regulations of the United States and any country in which the Licensed Products or related technical data or services are developed, received, downloaded, used, or performed. Further, Customer understands and acknowledges that the release of software or technology to a non-U.S. person within the United States or elsewhere abroad is deemed to be an export to the non-U.S. person's home country or countries, and that the transfer of the Licensed Products or related technology to Customer's employees, affiliates, or any third party, may require a license from the United States Government and possibly other applicable authorities. Customer shall be solely responsible for determining whether Customer's use or transfer of the Licensed Products or related technology or services requires an export license or approval from U.S. or other authorities, and for securing all required authorizations. Customer hereby warrants and represents that: (x) neither Customer nor any of Customer's directors, officers or affiliates is identified on the U.S. Commerce Department's Denied Persons List, Entity List, or Unverified List, the U.S. State Department's Nonproliferation Sanctions List, the U.S. Treasury Department's List of Specially Designated Nationals and Blocked Persons or any similar Export Controls Division-Foreign Affairs and International Trade Canada listing that designates individuals or entities to which export restrictions apply (collectively, the "Restricted Parties Lists"), (y) except as specifically authorized or licensed by the United States Government and other applicable authorities, Customer will not sell, offer, transfer, deliver, release, either directly or indirectly, the Licensed Products or related technology or services to any end-user: (A) that is either located in, a national of, or acting on behalf of a country subject to U.S. economic embargoes, or (B) that have been designated as prohibited or restricted parties by the U.S. Government, including but not limited to persons listed on the Restricted Parties Lists, or (C) engaged in activities related to the design, development, stockpiling, or proliferation of nuclear, chemical, or biological weapons, or missiles or missile systems, or (D) engaged in maritime nuclear propulsion activities. Customer represents and warrants that it will ensure that any person or entity to which Customer has granted access to the Licensed Products or related technology or services has been made aware of, and will comply with, this provision and U.S. and other applicable export control laws and regulations. Unless prohibited by applicable law and without waiving sovereign immunity, Customer shall indemnify and hold harmless PTC and its employees against any damage, loss, liability or expense (including attorneys' fees) that PTC may incur as a result of Customer's failure to comply with this Section + + 8.4. Such indemnification shall survive the expiration or termination of this Agreement. + + 8.5 Severability. It is intended that this Agreement shall not violate any applicable law and the unenforceability or invalidity of any provision (other than the provisions obligating Customer to make payments to PTC) shall not affect the force and validity of the remaining provisions and such provisions determined to be invalid shall be deemed severed from this Agreement and, to the extent possible, be replaced with terms which as closely as possible approximate the interest and economic intent of such invalid provisions. + + 8.6 Entire Agreement. This Agreement is the complete and exclusive statement of the contract between PTC and Customer with respect to the subject matter hereof. No waiver, consent, modification, amendment or change of this Agreement shall be binding unless in writing and signed or otherwise expressly acknowledged by PTC and Customer. + + 8.7 Third Party Beneficiaries. It is agreed by the parties to this Agreement that PTC's third party licensors are intended beneficiaries of this Agreement and have the right to rely upon and directly enforce its terms with respect to the products of such licensors. + + 8.8 Marketing. Customer agrees that while this Agreement is in effect, PTC shall be authorized to identify Customer as a customer/end-user of PTC software and services (as applicable) in public relations and marketing materials. + + 8.9 Government Licensees. If Customer is a United States Governmental entity, Customer agrees that the Licensed Products are "commercial computer software" under the applicable federal acquisition regulations and are provided with the commercial license rights and restrictions described elsewhere herein. If Customer is acquiring the Licensed Product(s) under a United States government contract, Customer agrees that Customer will include all necessary and applicable restricted rights legends on the Licensed Products to protect PTC's proprietary rights under the FAR or other similar regulations of other federal agencies. Customer agrees to always include such legends whenever the Licensed Products are, or are deemed to be, a deliverable under a government contract. + + +Schedule A - Purchases from PTC Affiliates + +If the Customer has obtained a License to any Licensed Products in one of the following countries, the entity granting the License is specified below and, notwithstanding Section 8.1 of this Agreement, the governing law and jurisdiction shall be as set forth below. + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +Belgium, Netherlands, Parametric Technology Nederland B.V. Netherlands +Luxembourg +Austria, Germany Parametric Technology GmbH German Law*, Landgericht Munchen I, +Germany +France Parametric Technology S.A. France +Ireland PTC Software and Services (Ireland) +Limited Republic of Ireland +Italy Parametric Technology Italia S.r.L. Italy +Spain, Portugal Parametric Technology Espana, S.A. Spain +Switzerland Parametric Technology (Schweiz) AG German Law*, Landgericht Munchen I, +Germany +United Kingdom Parametric Technology (UK) Limited United Kingdom +Remaining countries of the PTC Software and Services (Ireland) +Limited Republic of Ireland +European Union +Turkey, Kosovo, Serbia, PTC Software and Services (Ireland) +Limited Republic of Ireland +Macedonia, Montenegro, Croatia, Bosnia and Herzegovina, and +Albania +The Russian Federation PTC International LLC Russian Law / International +Commercial Arbitration Court at the +Chamber of Commerce and Industry of the Russian Federation in Moscow + +Belarus Moldova, Ukraine, PTC Software and Services (Ireland) +Limited Republic of Ireland +Armenia, Georgia, Azerbaijan, +Kazakhstan, Kyrgyz stan, +Tajikistan, Turkmenistan, and +Uzbekistan +Norway, Sweden, and Denmark, PTC Sweden AB Sweden +Finland, Iceland, and the Faeroe +Islands +Japan PTC Japan K.K. Japan / Tokyo District Court + + +Country PTC Affiliate Licensing Entity Governing Law/Jurisdiction for + Disputes +China Parametric Technology (Shanghai) The People's Republic of China/China +International Economic and Trade +Arbitration Commission in Shanghai + Software Co., Ltd. +Taiwan Parametric Technology Taiwan Limited Taiwan / Courts of Taipei, Taiwan +India Parametric Technology (India) Private +Limited India +Korea Parametric Technology Korea Ltd. Republic of Korea +Other Asia Pacific Countries PTC Inc. Special Administrative Region of Hong +Kong / Hong Kong International +Arbitration Centre +including Australia and New +Zealand, but excluding China, +Japan and Taiwan) +Canada PTC (Canada) Inc. Ontario +Any other country PTC Inc., or such other affiliate of PTC as +PTC directs at the time of the order Commonwealth of Massachu setts, + United States + +* Specific Provisions for Austria, Germany and Switzerland: + +For Licensed Products licensed and used in Austria, Germany or Switzerland, the following provisions shall apply. The following provisions shall have no applicability to any Licensed Products or Services purchased outside of Austria, Germany or Switzerland. References to sections below are references to the applicable sections in the body of the Agreement. + +* Section 1.4 (iv) above shall not apply to the extent that (i) the processes Customer undertakes are required to achieve information necessary to achieve interoperability of an independently created computer program with other software programs, (ii) the further requirements of Section 69e of the German Copyright Act are fulfilled and (iii) PTC, upon Customer's written request, has not made available the information required for this within a reasonable period. + +* Sections 4.2 (Warranty), 4.4 (Sole Remedy), 4.5 (No Additional Warranties) and 4.6 (Disclaimer of Warranties) are hereby replaced by the following provisions: + +4.2 Warranty Period, Restarts and Investigation Duty. The limitation period for warranty claims shall be twelve (12) months from delivery. Any replacement of the Licensed Product(s) and/or repair of Errors will not restart the warranty period. The pre-requisite for the Customer's warranty claims (Mangelanspruche) is that: (i) the Customer inspects the Licensed Products according to Section 377 German Commercial Code, (ii) the defect is an Error as defined in this Agreement, (iii) the Error already existed at the time of delivery and (iv) the Customer effects a proper notification of the Error. Customer shall provide notifications of Errors to PTC in writing and Customer shall provide specific details of the Error as deemed reasonable under the specific circumstances. Customer shall notify PTC of obvious Errors in writing within one week of delivery and of latent Errors within one week of discovery of such Error. The periods specified are preclusion periods. + +4.4 Remedies. In the event of an Error, PTC in its sole discretion may: (a) replace the Licensed Product(s) or (b) repair the Error, provided that notice of the Error is received by PTC within the periods set forth in Section 4.2 and Customer provides such additional information regarding the Error as PTC may reasonably request. If the repair (either by providing a bug fix, a workaround or otherwise) or replacement is not successful (after at least two repair attempts for the same Error by PTC within a reasonable period of time), Customer shall be entitled, at Customer's choice, to either: (i) rescission of the affected order so that PTC provides a refund of the license fees paid by Customer for the applicable Licensed Product(s) upon return of such Licensed Product(s) and any copies made thereof or (ii) a reasonable reduction in the purchase price. Replacements or repairs shall be made without acknowledgement of a legal obligation and shall not suspend the limitation period for warranty claims related to the Licensed Products. + +4.5 No Additional Warranties. No employee, partner, distributor (including any Reseller) or agent of PTC or any of its resellers or sales agents is authorized to give representations, warranties or covenants greater or different than those contained in this Agreement, except as specifically set forth in a written agreement signed on behalf of Customer by an authorized officer and on behalf of PTC by its legal counsel or Corporate Controller. Apart from claims for damages based on Errors that are subject to the limitation of liability as set forth in Section 6, the obligations provided for in this Section 4 shall be PTC's exclusive liability in case of warranty claims. + +4.6 Customer Responsibility. The Licensed Products are intended to be used by trained professionals and are not a substitute for the exercise by Customer of professional judgement, testing, safety and utility in their use. Customer is solely responsible for any results which were obtained by using the Licensed Products, including the adequacy of independent testing of reliability and accuracy of any item designed using Licensed Products. + +4.7 Qualities (Beschaffenheit), Guarantees. Qualities of the Licensed Products stated in publications of PTC or its sales representatives, in particular in advertising, in drawings, brochures or other documents, including presentations in the Internet, or on packaging and labeling of the Licensed Products, or which fall under trade usages, shall only be deemed to be covered by the contractual quality of the Licensed Products if such qualities are expressly contained in an offer or an order confirmation in writing. Guarantees, in particular guarantees as to quality, shall be binding on PTC only to the extent to which they (i) are contained in an offer or an order confirmation in writing, (ii) are expressly designated as "guarantee" or "guarantee as to condition" (Beschaffenheitsgarantie), and (iii) expressly stipulate the obligations for PTC resulting from such guarantee. + +* Section 6 is hereby replaced by the following provisions: + +6.Limitation of Liability + +6.1 Liability Categories. PTC shall be liable for damages, regardless of the legal grounds, only if: (i) PTC breaches a material contractual obligation (cardinal obligation) culpably (i.e., at least negligently), or (ii) the damage has been caused by gross negligence or wilfull intent on the part of PTC or (iii) PTC has assumed a guarantee. + +6.2 Predictability. PTC's liability shall be limited to the typical, foreseeable damage: (i) if PTC breaches material contractual obligations (cardinal obligations) with slight negligence, or (ii) if employees or agents of PTC who are not officers or executive staff have breached other obligations by gross negligence, or (iii) if PTC has assumed a guarantee, unless such guarantee is expressly designated as guarantee as to condition (Beschaffenheitsgarantie). + +6.3 Maximum Amount. In the cases of Section 6.2 (i) and (ii), PTC's liability shall be limited to a maximum amount of +EURO 1,000,000 or, in case of purely financial losses, to a maximum amount of EURO 100,000. + +6.4 Indirect Damages. In the cases of Section 6.2, PTC shall not be liable for indirect damages, consequential damages or loss of profit. + +6.5 Liability Period. Customer's claims for damages against PTC and/or PTC's affiliates, regardless of the legal grounds, shall expire at the latest one year from the time the Customer gains knowledge of the damage or, irrespective of this knowledge, at the latest two years after the damaging event. For claims based on Errors of the Licensed Product(s), the warranty limitation period pursuant to Section 4.2 shall apply. + +6.6 Mandatory Liability. PTC's liability pursuant to the German Product Liability Act (Produkthaftungsgesetz), for injury of life, body and health, for fraudulent concealment of a defect or for the assumption of a guarantee as to condition (Beschaffenheitsgarantie) remains unaffected. + +6.7 Employees. Sections 6.1 to 6.6 shall also apply in the case of any claims for damages of Customer against employees +or agents of PTC and/or PTC's affiliates. + +6.8 Contributory Negligence. In the event of a guarantee or liability claim against PTC any contributory fault of Customer must be taken into account accordingly, particularly in the event of inadequate fault notification or inadequate data securing. It constitutes inadequate data securing if the client, among others, does not, by way of appropriate state of the art security measures, take precautions against external influences, e.g. computer viruses and other phenomena which could put individual data or an entire data stock at risk. + +Schedule B - Definitions + +"Concurrent User Products" means the Licensed Products licensed on a concurrent user basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Designated Computer" means the central processing unit(s) designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Computer Product" means the Licensed Products licensed on a "Designated Computer" basis or otherwise designated as "fixed," "locked" or "node-locked", as specified either in the Quote or at the Licensing Basis Webpage. Designated Computer Products may not be remotely accessed or installed in a virtual environment. + +"Designated Country" means the country of installation specified in writing by Customer to PTC at the time Customer places its +order of the Licensed Products. The Designated Country may be changed only in accordance with Section 1.2 of this Agreement. + +"Designated Network" means the network designated in writing by Customer to PTC at the time of installation of the Licensed +Products (as may be modified in accordance with Section 1.2 of this Agreement). + +"Designated Server" means a computer server designated in writing by Customer to PTC at the time of installation of the Licensed Products (as may be modified in accordance with Section 1.2 of this Agreement) that has one unique instance of the applicable installed Licensed Product application. + +"Designated Server Products" means the Licensed Products licensed on a Designated Server basis, as specified either in the Quote or +at the Licensing Basis Webpage. + +"Documentation" means the applicable Licensed Software user manuals provided or made available by electronic means by PTC at the time of shipment of the Licensed Software. + +"Educational Software" means Licensed Products identified as "Priced for Education," "Student Edition," "Schools Edition," "Schools Advanced Edition," "University Edition," "Professor's Edition/Version" or "Academic Edition/Version," or otherwise designated as educational or academic licenses. + +"Error" means a failure of the Licensed Software to conform substantially to the applicable Documentation, provided that Customer informs PTC of such failure in writing and PTC is able to replicate such failure after making reasonable efforts. + +"External User" means a Registered User who is a vendor or other third party external to the Customer and its affiliates. "License" shall have the meaning set out in Section 1.1 of the body of the Agreement. +"License Term" means the time period during which the License for the applicable Licensed Products shall be in effect, as specified in the name of the Licensed Product or in the applicable Quote (subject to earlier termination pursuant to the terms hereof) or, if no Quote was provided to Customer, as otherwise communicated by PTC to Customer. In the absence of a stated license term, the License Term shall be perpetual, except that the License Term for evaluation Licenses shall be no longer than thirty days from the date of Customer's request for an evaluation license, unless otherwise specifically designated by PTC, and the evaluation License will cease to be operational after such term expires. The License Term of a "subscription" License is as specified in the Quote and/or the invoice, and such License includes Support Services during such License Term at no additional fee. + +"License Locked Product" means a Licensed Product licensed for use with another PTC product to which the License Locked Product is an extension. The License Locked Product will assume the licensing basis of such other product.. License Locked Products are specified either in the Quote or at the Licensing Basis Webpage. + +"Licensed Products" means collectively the Licensed Software and the Documentation. + +"Licensed Software" means, collectively, the computer software product identified in the applicable Quote, as well as (i) any software product that is provided to operate with such computer software product (e.g., modules, software bundled with this software product, etc.), but excluding any software that is a consulting services deliverable, (ii) any Error corrections pursuant to Section 4.4 hereof, (iii) any updates, Error corrections and/or New Releases provided to Customer by PTC pursuant to Support Services purchased by Customer and (iv) any computer software provided to Customer in the course of PTC's delivery of Training Services. + +"Licensing Basis Webpage" means the "Licensing Basis" document at http://www.ptc.com/support/customer_agreements/ +index.htm, which specifies the licensing basis of PTC's different products and states certain additional product-specific terms and conditions. + +"Support Services" means the provision of New Releases and, depending on the level of Support Services ordered, may also include telephone support, web-based support tools, and correction of Errors, all in accordance with Schedule C attached to this Agreement. + +"New Release" means a modified or enhanced version of a Licensed Product that is designated by PTC as a new release of that +product and that PTC makes generally available to its Support Services customers. + +"Permitted User" means an individual who is authorized by Customer to use the Licensed Products, such use to be solely in accordance with the terms and conditions of the Agreement. Permitted Users are limited to Customer's employees, consultants, subcontractors, suppliers, business partners and customers who (i) are not competitors of PTC or employed by competitors of PTC and (ii) are directly involved in the utilization of the Licensed Products solely in support of Customer's internal business purposes. Customer shall at all times be responsible for its Permitted Users' compliance with this Agreement. + +"Per Instance Product" means a Licensed Product for which one License is required for each instance of a system to which the applicable Licensed Product connects. For example, if an adapter that is licensed on a Per Instance basis enables Windchill to connect to an ERP system and a CRM system, two licenses of such adapter will be required. The Licensed Products that are Per Instance Products are identified either in the Quote or at the Licensing Basis Webpage. + +"Quote" means the PTC product schedule, quote or order confirmation provided to Customer in connection with the purchase of the applicable Licensed Product or, if no such document is provided, Customer's purchase order for such Licensed Product, if any. + +"Registered User" means a Permitted User for whom Customer has purchased a License to use a Registered User Product and for +whom Customer has issued a password or other unique identifier to enable such individual to use the Registered User Product. + +"Registered User Products" means the Licensed Products licensed on a Registered User basis, as specified either in the Quote or at +the Licensing Basis Webpage. + +"Reseller" means a third-party appointed and authorized by PTC to resell or distribute any Licensed Product. . + +"Services" means collectively Support Services and Training Services. + +"Site License" means a Licensed Product for which one License is required for each Customer location, as specified either in the Quote or at the Licensing Basis Webpage. Multiple customer facilities located in the same city or town (based on postal address) shall be considered one "location," whereas locations located in different cities or towns will require multiple Site Licenses. + +"Training Services" means instruction or other training provided by PTC in the use of the Licensed Products. "Training Services" does not include PTC's e-Learning training products (e.g., "PTCU"), which are considered Licensed Products for purposes of this Agreement. + +"Uplift Fee" means a fee based upon the difference between the License fee applicable to installation of the applicable Licensed Product in the original Designated Country and the License fee applicable to the installation of such Licensed Product in the Designated Country to which Customer wishes to move the Licensed Product. + +"Usage License Fee" means an ongoing fee that commences upon installation of the applicable Licensed Product and that, during the period for which the Usage License Fee is paid, entitles Customer to (i) continued use of the Licensed Product in accordance with the terms of the License and (ii) telephone support, Error corrections or workarounds, and New Releases for such software. + + +Schedule C - PTC Support Services Terms and Conditions +The following additional terms and conditions apply to the provision of Support Services by PTC: + +Support Services Plan; Levels of Support Services. Upon PTC's acceptance of Customer's order for Support Services in respect of the Licensed Products, PTC and/or its authorized subcontractors shall provide Support Services in accordance with these terms for a time period of twelve (12) months or for such other period specified in Customer's order accepted by PTC (a "Support Services Plan"). All Support Services are provided subject to Customer's payment for such services at PTC's then-current rates, provided that for Licensed Product licensed on a subscription basis, such License includes Support Services during such License Term at no additional fee. If Customer does not order Support Services to commence on shipment of the Licensed Product(s), or if Customer at any time discontinues Support Services, and in either case subsequently wishes to obtain Support Services, Customer must pay (i) the then current fees for Support Services and (ii) the fees for Support Services for any period for which Customer has not purchased Support Services. The then current levels of Support Services offered and the corresponding services provided thereunder are described on http://www.ptc.com at + +http://www.ptc.com/support/maintenance/maintenance_support_policies.htm + +A Support Services Plan may not be cancelled by Customer following PTC's acceptance of an order for such Support Services Plan. With respect to Registered User Products, e-Learning products and Integrity Concurrent User and Server Licensed Products, Support Services ordered by Customer must cover all Licenses granted to Customer for such Licensed Products. PTC is obligated to provide Support Services only during periods for which Customer has paid the applicable Support Services fees and only in accordance with the level of Support Services Customer has purchased. The services offered under any Support Services Plan may change from time to time, and PTC may cease to offer Support Services Plans at any time without notice, subject only to the obligation to refund to Customer the unused portion of any previously paid applicable Support Services fee (on a prorated basis). + +(a) Telephone Support. If Customer purchases Support Services at a level that includes telephone support, Customer may utilize PTC's telephone support service to report problems and seek assistance in use of the Licensed Products. The hours during which PTC will provide telephone support will vary depending upon the level of Support Services ordered by Customer. For all levels of Support Services that include telephone support, PTC will provide telephone support in the languages, and during normal business hours for the countries, listed on PTC's website at the website URL listed above. For levels of Support Services that include telephone support during non-business hours, PTC will provide such support in the English language only. Regardless of the total number of the Licensed Products licensed by Customer, Customer is entitled to telephone support only in direct connection with Licenses that are covered by a Support Services Plan at a level that includes telephone support. + +(b) Repair of Errors. If Customer's Support Services Plan includes repair or workaround of Errors, PTC shall use diligent efforts to repair Errors or provide workarounds as required in such Support Services Plan, provided notice of the Error is received by PTC during the term of a Support Services Plan and Customer supplies such additional information regarding the Error as PTC may reasonably request. + +(C) New Releases. PTC will provide Customer with one copy of each New Release for each Licensed Product for which Customer is entitled to Support Services at the time the applicable language version of the New Release is made generally available. Subject to different terms for particular products set forth at http://www.ptc.com/support/maintenance/maintenance_support_policies.htm, following shipment of the New Release, the previous release shall remain "current" for purposes of this Agreement for a period of ninety (90) days; thereafter only such New Release will be current. + +(d) Exclusions. + +(1) PTC is not obligated to perform investigation and/or repair of Errors (i) found by PTC to be in other than a current (as described above), unaltered release of the Licensed Products; (ii) caused by changes to the Customer's operating systems, environment, databases or other system components which adversely affect the Licensed Products; (iii) caused by Customer's modification of the Licensed Product or use thereof in combination or interconnection with software not provided by PTC; (iv) use of the Licensed Product on a computer, operating system, software or peripherals other than a computer, operating system, software or peripherals for which such Licensed Product was designed for and licensed for use on; (v) caused by improper or unauthorized use of the Licensed Products; (vi) due to external causes such as, but not limited to, power failures or electric power surges; or (vii) due to a failure by the Customer to implement recommendations in respect of solutions to Errors previously provided by PTC to Customer. + +(2) PTC shall only be responsible for responding to problems reported by one of the two (2) technical contacts for Customer's main location (which technical contacts and main location have previously been identified in writing to PTC by Customer), and for sending New Releases to the "Central Support Location" designated by Customer in writing. Customer is responsible for the distribution of New Releases to any of Customer's additional locations where Licensed Products are authorized to be used. Customer is responsible for providing to PTC in writing the name, address, phone number, fax number, and e-mail address for each of Customer's designated contacts and Customer's Central Support Location. + +(3) PTC is not obligated to perform any Support Services with respect to modifications or customizations of the Licensed Products, nor with respect to any developments resulting from Customer's use, development or customization of functionality contained within the Licensed Products, all of which are Customer's sole responsibility. + + +END OF (4) Ion GeneStudio(TM) S5 V5.18 END USER LICENSE AGREEMENT +**************************************************** + diff --git a/dbReports/iondb/bin/add_or_update_systemPlanTemplates.py b/dbReports/iondb/bin/add_or_update_systemPlanTemplates.py index 9a77339b..d277dbf6 100755 --- a/dbReports/iondb/bin/add_or_update_systemPlanTemplates.py +++ b/dbReports/iondb/bin/add_or_update_systemPlanTemplates.py @@ -101,11 +101,16 @@ def __init__(self, templateName, instrument, runType="GENS"): self.libraryReadLength = 0 self.samplePrepProtocol = "" self.irworkflow = "" + self.usableSequenceThreshold = "" + self.keySignal = "" + self.beadLoading = "" + # Experiment self.chipType = "" self.flows = 0 self.sequencekitname = "" self.flowOrder = "" + self.metaData = {} # EAS self.barcodeKitName = "" self.libraryKey = "TCAG" @@ -117,6 +122,16 @@ def __init__(self, templateName, instrument, runType="GENS"): self.libraryKitName = "" self.selectedPlugins = "" self.endBarcodeKitName = "" + self.sseBedFile = "" + self.mixedTypeRNA_reference = "" + self.mixedTypeRNA_targetRegionBedFile = "" + self.mixedTypeRNA_hotSpotRegionBedFile = "" + self.chipTecDfltAmbient = None + self.chipTecSlope = None + self.chipTecMinThreshold = None + self.manTecDfltAmbient = None + self.manTecSlope = None + self.manTecMinThreshold = None if instrument == PGM: self.instrumentType = "PGM" @@ -188,9 +203,16 @@ def finish_creating_sys_template(currentTime, sysTemplate, templateParams): sysTemplate.save() + threshold = 30 for qcType in models.QCType.objects.all(): + if 'Usable Sequence' in qcType.qcName and templateParams.usableSequenceThreshold: + threshold = templateParams.usableSequenceThreshold + if 'Key Signal' in qcType.qcName and templateParams.keySignal: + threshold = templateParams.keySignal + if 'Bead Loading' in qcType.qcName and templateParams.beadLoading: + threshold = templateParams.beadLoading sysDefaultQC, isQcCreated = models.PlannedExperimentQC.objects.get_or_create( - plannedExperiment=sysTemplate, qcType=qcType, threshold=30 + plannedExperiment=sysTemplate, qcType=qcType, threshold=threshold ) sysTemplate.plannedexperimentqc_set.add(sysDefaultQC) @@ -228,6 +250,11 @@ def create_sys_template_experiment(currentTime, sysTemplate, templateParams): "storageHost": "", "notes": "", "status": templateParams.planStatus, + "chipTecDfltAmbient": templateParams.chipTecDfltAmbient, + "chipTecSlope": templateParams.chipTecSlope, + "manTecDfltAmbient": templateParams.manTecDfltAmbient, + "manTecSlope": templateParams.manTecSlope, + "metaData": templateParams.metaData or {} } experiment = models.Experiment(**exp_kwargs) @@ -261,6 +288,7 @@ def create_sys_template_eas( "targetRegionBedFile": templateParams.targetRegionBedFile, "threePrimeAdapter": templateParams.threePrimeAdapter, "tfKey": templateParams.tfKey, + "sseBedFile": templateParams.sseBedFile } eas = models.ExperimentAnalysisSettings(**eas_kwargs) @@ -276,6 +304,14 @@ def create_sys_template_eas( return sysTemplate +def orderedJson(obj): + if isinstance(obj, dict): + return sorted((k, orderedJson(v)) for k, v in obj.items()) + if isinstance(obj, list): + return sorted(orderedJson(x) for x in obj) + else: + return obj + @cache_plugin_config def finish_sys_template(sysTemplate, isCreated, templateParams, plugins={}): # when debug, do nothing @@ -365,6 +401,69 @@ def finish_sys_template(sysTemplate, isCreated, templateParams, plugins={}): exp.flowsInOrder = templateParams.flowOrder hasChanges = True + if exp.chipTecDfltAmbient != templateParams.chipTecDfltAmbient: + print( + ">>> DIFF: orig exp.chipTecDfltAmbient=%s for system template.id=%d; name=%s" + % (exp.chipTecDfltAmbient, sysTemplate.id, sysTemplate.planName) + ) + + exp.chipTecDfltAmbient = templateParams.chipTecDfltAmbient + hasChanges = True + + if exp.chipTecSlope != templateParams.chipTecSlope: + print( + ">>> DIFF: orig exp.chipTecSlope=%s for system template.id=%d; name=%s" + % (exp.chipTecSlope, sysTemplate.id, sysTemplate.planName) + ) + + exp.chipTecSlope = templateParams.chipTecSlope + hasChanges = True + + if exp.chipTecMinThreshold != templateParams.chipTecMinThreshold: + print( + ">>> DIFF: orig exp.chipTecMinThreshold=%s for system template.id=%d; name=%s" + % (exp.chipTecMinThreshold, sysTemplate.id, sysTemplate.planName) + ) + + exp.chipTecMinThreshold = templateParams.chipTecMinThreshold + hasChanges = True + + if exp.manTecDfltAmbient != templateParams.manTecDfltAmbient: + print( + ">>> DIFF: orig exp.manTecDfltAmbient=%s for system template.id=%d; name=%s" + % (exp.manTecDfltAmbient, sysTemplate.id, sysTemplate.planName) + ) + + exp.manTecDfltAmbient = templateParams.manTecDfltAmbient + hasChanges = True + + if exp.manTecSlope != templateParams.manTecSlope: + print( + ">>> DIFF: orig exp.manTecSlope=%s for system template.id=%d; name=%s" + % (exp.manTecSlope, sysTemplate.id, sysTemplate.planName) + ) + + exp.manTecSlope = templateParams.manTecSlope + hasChanges = True + + if exp.manTecMinThreshold != templateParams.manTecMinThreshold: + print( + ">>> DIFF: orig exp.manTecMinThreshold=%s for system template.id=%d; name=%s" + % (exp.manTecMinThreshold, sysTemplate.id, sysTemplate.planName) + ) + + exp.manTecMinThreshold = templateParams.manTecMinThreshold + hasChanges = True + + if orderedJson(exp.metaData) != orderedJson(templateParams.metaData): + print( + ">>> DIFF: orig exp.metaData=%s for system template.id=%d; name=%s" + % (exp.metaData, sysTemplate.id, sysTemplate.planName) + ) + + exp.metaData = templateParams.metaData + hasChanges = True + if hasChanges: exp.date = currentTime exp.save() @@ -487,6 +586,33 @@ def finish_sys_template(sysTemplate, isCreated, templateParams, plugins={}): eas.tfKey = templateParams.tfKey hasChanges = True + if eas.mixedTypeRNA_reference != templateParams.mixedTypeRNA_reference: + print( + ">>> DIFF: orig eas.mixedTypeRNA_reference=%s for system template.id=%d; name=%s" + % (eas.mixedTypeRNA_reference, sysTemplate.id, sysTemplate.planName) + ) + + eas.mixedTypeRNA_reference = templateParams.mixedTypeRNA_reference + hasChanges = True + + if eas.mixedTypeRNA_targetRegionBedFile != templateParams.mixedTypeRNA_targetRegionBedFile: + print( + ">>> DIFF: orig eas.mixedTypeRNA_targetRegionBedFile=%s for system template.id=%d; name=%s" + % (eas.mixedTypeRNA_targetRegionBedFile, sysTemplate.id, sysTemplate.planName) + ) + + eas.mixedTypeRNA_targetRegionBedFile = templateParams.mixedTypeRNA_targetRegionBedFile + hasChanges = True + + if eas.mixedTypeRNA_hotSpotRegionBedFile != templateParams.mixedTypeRNA_hotSpotRegionBedFile: + print( + ">>> DIFF: orig eas.mixedTypeRNA_hotSpotRegionBedFile=%s for system template.id=%d; name=%s" + % (eas.mixedTypeRNA_hotSpotRegionBedFile, sysTemplate.id, sysTemplate.planName) + ) + + eas.mixedTypeRNA_hotSpotRegionBedFile = templateParams.mixedTypeRNA_hotSpotRegionBedFile + hasChanges = True + if sysTemplate.latestEAS != eas: print( ">>> DIFF: orig eas.latestEAS=%s for system template.id=%d; name=%s" @@ -531,6 +657,38 @@ def _get_plugin_dict(pluginName, userInput={}): return pluginDict +def get_plugin_user_input_from_custom_json(configFileName = None): + pluginUserInput = {} + if configFileName: + with open(configFileName) as fileInput: + data = json.load(fileInput) + if data: + pluginUserInput = data + return pluginUserInput + +def _get_plugin_dict_custom(pluginName, customUserInputJson=None): + try: + userInput = get_plugin_user_input_from_custom_json(customUserInputJson) + selectedPlugin = models.Plugin.objects.get( + name=pluginName, selected=True, active=True + ) + pluginDict = { + "id": selectedPlugin.id, + "name": selectedPlugin.name, + "version": selectedPlugin.version, + "userInput": userInput, + "ampliSeqVariantCallerConfig": userInput, + "features": [], + } + except models.Plugin.DoesNotExist: + pluginDict = { + "name": pluginName, + "version": "1.0", + "userInput": userInput, + "features": [], + } + + return pluginDict def get_tvc_plugin_dict(configuration): """tvc: variantCaller""" @@ -616,7 +774,7 @@ def add_or_update_sys_template(templateParams, isSystemDefault=False): "templatingKitName": templateParams.templatingKitName, "controlSequencekitname": templateParams.controlSequencekitname, "samplePrepKitName": templateParams.samplePrepKitName, - "metaData": "", + "metaData": templateParams.metaData or {}, "date": currentTime, "applicationGroup": applicationGroup_obj, "sampleGrouping": sampleGrouping_obj, @@ -946,7 +1104,7 @@ def add_or_update_genericseq_system_templates(): finish_sys_template(sysTemplate, isCreated, templateParams) # 14 - templateParams = TemplateParams("System Generic Seq Template", PGM, "GENS") + templateParams = TemplateParams("System Generic Seq Template", S5, "GENS") templateParams.update({"flows": 500, "reference": "hg19"}) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) finish_sys_template(sysTemplate, isCreated, templateParams) @@ -1355,7 +1513,7 @@ def add_or_update_reproseq_system_templates(): DEFAULT_P1_3_PRIME_ADAPTER_SEQUENCE = "ATCACCGACTGCCCATAGAGAGGAAAGCGG" BARCODE_KIT_PGM = "Ion SingleSeq Barcode set 1-24" BARCODE_KIT_S5 = "Ion SingleSeq Barcode set 1-96" - CATEGORIES = "repro" + CATEGORIES = "repro;multi_ir_workflow_support" LIBRARY_KIT = "IonPicoPlex" LIBRARY_READ_LENGTH = 0 REFERENCE = "hg19" @@ -1365,6 +1523,7 @@ def add_or_update_reproseq_system_templates(): plugins = {} plugins["FilterDuplicates"] = _get_plugin_dict("FilterDuplicates") + metaData = {"lockAssayParams": ["applicationGroupName", "runType", "chipType", "flows", "sequenceKit", "libraryKitType", "templateKit"]} # 32 templateParams = TemplateParams( "Ion ReproSeq Aneuploidy - Ion PGM System", PGM, RUN_TYPE @@ -1378,6 +1537,7 @@ def add_or_update_reproseq_system_templates(): "sequencekitname": "IonPGMHiQView", "libraryKitName": LIBRARY_KIT, "barcodeKitName": BARCODE_KIT_PGM, + "metaData": metaData, "reference": REFERENCE, "threePrimeAdapter": DEFAULT_P1_3_PRIME_ADAPTER_SEQUENCE, "categories": CATEGORIES, @@ -1412,6 +1572,7 @@ def add_or_update_reproseq_system_templates(): "reference": REFERENCE, "threePrimeAdapter": PGS_S5_3PrimeAdapter, "categories": CATEGORIES, + "metaData": metaData, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) @@ -2554,25 +2715,53 @@ def add_or_update_ocp_myeloid_s5_system_templates(): def add_or_update_ocp_myeloid_mrd_550_s5_system_templates(): + # These templates has the 550 chef protocol auto selected for 5.18. BARCODE_KIT_NAME = "Ion AmpliSeq HD Dual Barcode Kit 1-24" - CATEGORIES_DNA = "Oncomine;barcodes_12;onco_liquidBiopsy;onco_heme;mrd;" - CATEGORIES_RNA_FUSIONS = "Oncomine;barcodes_48;onco_liquidBiopsy;onco_heme;" - CATEGORIES_DNA_n_FUSIONS = "Oncomine;barcodes_24;onco_liquidBiopsy;onco_heme;mrd;" + CATEGORIES_DNA = "Oncomine;barcodes_6;onco_liquidBiopsy;onco_heme;mrd;" + CATEGORIES_RNA_FUSIONS = "Oncomine;barcodes_18;onco_liquidBiopsy;onco_heme;" + CATEGORIES_DNA_n_FUSIONS = "Oncomine;barcodes_8;onco_liquidBiopsy;onco_heme;mrd;" + CATEGORIES_MHT = "Oncomine;barcodes_18;onco_liquidBiopsy;onco_heme;mrd;" + CATEGORIES_DNA_MHT = "Oncomine;barcodes_5;onco_liquidBiopsy;onco_heme;mrd;" + CATEGORIES_DNA_n_FUSIONS_MHT = "Oncomine;barcodes_6;onco_liquidBiopsy;onco_heme;mrd;" + CHIP_NAME = "550" FLOWS = 550 LIB_KIT_NAME = "Ion AmpliSeq HD Library Kit" LIBRARY_READ_LENGTH = 200 REFERENCE = "hg19" SAMPLE_GROUPING = "Self" - SAMPLE_PREP_PROTOCOL = "" + SAMPLE_PREP_PROTOCOL = "cerebro_550" SEQ_KIT_NAME = "Ion S5 Sequencing Kit" TEMPLATE_KIT_NAME = "Ion Chef S550 V1" - PLAN_STATUS = "inactive" + BEDFILE = "Oncomine_Myeloid_MRD_DNA_Regions_v1.2.bed" + HOTSPOT_FILE = "Oncomine_Myeloid_MRD_DNA_Hotspots_v1.2.bed" + FUSION_REFERENCE = "Oncomine_Myeloid_MRD_RNA_Fusions_v1.2_Reference" + FUSION_BEDFILE = "Oncomine_Myeloid_MRD_RNA_Fusions_v1.2_Reference.bed" + MICROHAPLOTYPE_DNA_BEDFILE = "Oncomine_Myeloid_MRD_DNA_Microhaplotype_Regions_v1.2.bed" + MICROHAPLOTYPE_DNA_HOTSPOT_FILE = "Oncomine_Myeloid_MRD_DNA_Microhaplotype_Hotspots_v1.2.bed" + MICROHAPLOTYPE_BEDFILE = "Oncomine_Myeloid_MRD_Microhaplotype_Regions_v1.2.bed" + MICROHAPLOTYPE_HOTSPOT_FILE = "Oncomine_Myeloid_MRD_Microhaplotype_Hotspots_v1.2.bed" # pre-select plugins - plugins = {} - plugins["molecularCoverageAnalysis"] = get_mca_plugin_dict("ampliseq_hd_cfdna") - plugins["sampleID"] = _get_plugin_dict("sampleID") + # Add custom param to MCA plugin - TS-18359 + CUSTOM_PLUGIN_CONFIG_FILENAME_TVC = "rundb/fixtures/systemtemplateparams/cerebro_mrd_parameters.json" + CUSTOM_PLUGIN_CONFIG_FILENAME_MCA = "rundb/fixtures/systemtemplateparams/cerebro_mrd_mca_parameters.json" + plugins = { + "coverageAnalysis": _get_plugin_dict("coverageAnalysis"), + "molecularCoverageAnalysis": _get_plugin_dict_custom("molecularCoverageAnalysis", CUSTOM_PLUGIN_CONFIG_FILENAME_MCA), + } + plugins_with_custom_tvc = dict(plugins) + plugins_with_custom_tvc.update({"variantCaller": _get_plugin_dict_custom("variantCaller", CUSTOM_PLUGIN_CONFIG_FILENAME_TVC)}) + + plugins_microaplotype = dict(plugins) + plugins_microaplotype.update({"microhaplotype_analysis" : _get_plugin_dict("microhaplotype_analysis")}) + + plugins_microaplotype_custom_tvc = dict(plugins_with_custom_tvc) + plugins_microaplotype_custom_tvc.update({"microhaplotype_analysis": _get_plugin_dict("microhaplotype_analysis")}) + + fusion_plugins = { + "coverageAnalysis": _get_plugin_dict("coverageAnalysis") + } templateParams = TemplateParams( "Oncomine Myeloid MRD DNA for 550", S5, "AMPS_HD_DNA" @@ -2587,15 +2776,16 @@ def add_or_update_ocp_myeloid_mrd_550_s5_system_templates(): "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, "reference": REFERENCE, + "targetRegionBedFile": BEDFILE, + "hotSpotRegionBedFile": HOTSPOT_FILE, "sampleGrouping": SAMPLE_GROUPING, "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_with_custom_tvc) templateParams = TemplateParams( "Oncomine Myeloid MRD Fusions for 550", S5, "AMPS_HD_RNA" @@ -2609,19 +2799,19 @@ def add_or_update_ocp_myeloid_mrd_550_s5_system_templates(): "flows": FLOWS, "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, - "reference": "", + "reference": FUSION_REFERENCE, + "targetRegionBedFile": FUSION_BEDFILE, "sampleGrouping": "Single Fusions", "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, fusion_plugins) templateParams = TemplateParams( - "Oncomine Myeloid MRD DNA and Fusions for 550", S5, "AMPS_HD_DNA_RNA_1" + "Oncomine Myeloid MRD DNA and Fusions for 550", S5, "AMPS_HD_DNA_RNA" ) templateParams.update( { @@ -2633,22 +2823,102 @@ def add_or_update_ocp_myeloid_mrd_550_s5_system_templates(): "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, "reference": REFERENCE, + "targetRegionBedFile": BEDFILE, + "hotSpotRegionBedFile": HOTSPOT_FILE, + "mixedTypeRNA_reference": FUSION_REFERENCE, + "mixedTypeRNA_targetRegionBedFile": FUSION_BEDFILE, "sampleGrouping": "DNA and Fusions", "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_with_custom_tvc) + #Microhaplotype templates + templateParams = TemplateParams( + "Oncomine Myeloid MRD Microhaplotype for 550", S5, "AMPS_HD_DNA" + ) + templateParams.update( + { + "applicationGroup": "DNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_MHT, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_HOTSPOT_FILE, + "sampleGrouping": SAMPLE_GROUPING, + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype) + + templateParams = TemplateParams( + "Oncomine Myeloid MRD DNA and Microhaplotype for 550", S5, "AMPS_HD_DNA" + ) + templateParams.update( + { + "applicationGroup": "DNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_DNA_MHT, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_DNA_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_DNA_HOTSPOT_FILE, + "sampleGrouping": SAMPLE_GROUPING, + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype_custom_tvc) + + templateParams = TemplateParams( + "Oncomine Myeloid MRD DNA Fusions and Microhaplotype for 550", S5, "AMPS_HD_DNA_RNA" + ) + templateParams.update( + { + "applicationGroup": "DNA + RNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_DNA_n_FUSIONS_MHT, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_DNA_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_DNA_HOTSPOT_FILE, + "mixedTypeRNA_reference": FUSION_REFERENCE, + "mixedTypeRNA_targetRegionBedFile": FUSION_BEDFILE, + "sampleGrouping": "DNA and Fusions", + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype_custom_tvc) def add_or_update_ocp_myeloid_mrd_540_s5_system_templates(): BARCODE_KIT_NAME = "Ion AmpliSeq HD Dual Barcode Kit 1-24" - CATEGORIES_DNA = "Oncomine;barcodes_12;onco_liquidBiopsy;onco_heme;mrd" - CATEGORIES_RNA_FUSIONS = "Oncomine;barcodes_48;onco_liquidBiopsy;onco_heme;" - CATEGORIES_DNA_n_FUSIONS = "Oncomine;barcodes_24;onco_liquidBiopsy;onco_heme;mrd" + CATEGORIES_DNA = "Oncomine;barcodes_4;onco_liquidBiopsy;onco_heme;mrd" + CATEGORIES_RNA_FUSIONS = "Oncomine;barcodes_12;onco_liquidBiopsy;onco_heme;" + CATEGORIES_DNA_n_FUSIONS = "Oncomine;barcodes_4;onco_liquidBiopsy;onco_heme;mrd" + CATEGORIES_MHT = "Oncomine;barcodes_12;onco_liquidBiopsy;onco_heme;mrd" + CATEGORIES_DNA_MHT = "Oncomine;barcodes_3;onco_liquidBiopsy;onco_heme;mrd" + CHIP_NAME = "540" FLOWS = 550 LIB_KIT_NAME = "Ion AmpliSeq HD Library Kit" @@ -2658,12 +2928,36 @@ def add_or_update_ocp_myeloid_mrd_540_s5_system_templates(): SAMPLE_PREP_PROTOCOL = "" SEQ_KIT_NAME = "Ion S5 Sequencing Kit" TEMPLATE_KIT_NAME = "Ion Chef S540 V1" - PLAN_STATUS = "inactive" + BEDFILE = "Oncomine_Myeloid_MRD_DNA_Regions_v1.2.bed" + HOTSPOT_FILE = "Oncomine_Myeloid_MRD_DNA_Hotspots_v1.2.bed" + FUSION_REFERENCE = "Oncomine_Myeloid_MRD_RNA_Fusions_v1.2_Reference" + FUSION_BEDFILE = "Oncomine_Myeloid_MRD_RNA_Fusions_v1.2_Reference.bed" + MICROHAPLOTYPE_DNA_BEDFILE = "Oncomine_Myeloid_MRD_DNA_Microhaplotype_Regions_v1.2.bed" + MICROHAPLOTYPE_DNA_HOTSPOT_FILE = "Oncomine_Myeloid_MRD_DNA_Microhaplotype_Hotspots_v1.2.bed" + MICROHAPLOTYPE_BEDFILE = "Oncomine_Myeloid_MRD_Microhaplotype_Regions_v1.2.bed" + MICROHAPLOTYPE_HOTSPOT_FILE = "Oncomine_Myeloid_MRD_Microhaplotype_Hotspots_v1.2.bed" + # pre-select plugins - plugins = {} - plugins["molecularCoverageAnalysis"] = get_mca_plugin_dict("ampliseq_hd_cfdna") - plugins["sampleID"] = _get_plugin_dict("sampleID") + # Add custom param to MCA plugin - TS-18359 + CUSTOM_PLUGIN_CONFIG_FILENAME_TVC = "rundb/fixtures/systemtemplateparams/cerebro_mrd_parameters.json" + CUSTOM_PLUGIN_CONFIG_FILENAME_MCA = "rundb/fixtures/systemtemplateparams/cerebro_mrd_mca_parameters.json" + plugins = { + "coverageAnalysis": _get_plugin_dict("coverageAnalysis"), + "molecularCoverageAnalysis": _get_plugin_dict_custom("molecularCoverageAnalysis", CUSTOM_PLUGIN_CONFIG_FILENAME_MCA), + } + plugins_with_custom_tvc = dict(plugins) + plugins_with_custom_tvc.update({"variantCaller": _get_plugin_dict_custom("variantCaller", CUSTOM_PLUGIN_CONFIG_FILENAME_TVC)}) + + plugins_microaplotype = dict(plugins) + plugins_microaplotype.update({"microhaplotype_analysis" : _get_plugin_dict("microhaplotype_analysis")}) + + plugins_microaplotype_custom_tvc = dict(plugins_with_custom_tvc) + plugins_microaplotype_custom_tvc.update({"microhaplotype_analysis": _get_plugin_dict("microhaplotype_analysis")}) + + fusion_plugins = { + "coverageAnalysis": _get_plugin_dict("coverageAnalysis") + } templateParams = TemplateParams( "Oncomine Myeloid MRD DNA for 540", S5, "AMPS_HD_DNA" @@ -2678,15 +2972,16 @@ def add_or_update_ocp_myeloid_mrd_540_s5_system_templates(): "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, "reference": REFERENCE, + "targetRegionBedFile": BEDFILE, + "hotSpotRegionBedFile": HOTSPOT_FILE, "sampleGrouping": SAMPLE_GROUPING, "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_with_custom_tvc) templateParams = TemplateParams( "Oncomine Myeloid MRD Fusions for 540", S5, "AMPS_HD_RNA" @@ -2700,19 +2995,19 @@ def add_or_update_ocp_myeloid_mrd_540_s5_system_templates(): "flows": FLOWS, "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, - "reference": "", + "reference": FUSION_REFERENCE, + "targetRegionBedFile": FUSION_BEDFILE, "sampleGrouping": "Single Fusions", "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, fusion_plugins) templateParams = TemplateParams( - "Oncomine Myeloid MRD DNA and Fusions for 540", S5, "AMPS_HD_DNA_RNA_1" + "Oncomine Myeloid MRD DNA and Fusions for 540", S5, "AMPS_HD_DNA_RNA" ) templateParams.update( { @@ -2724,15 +3019,93 @@ def add_or_update_ocp_myeloid_mrd_540_s5_system_templates(): "libraryKitName": LIB_KIT_NAME, "libraryReadLength": LIBRARY_READ_LENGTH, "reference": REFERENCE, + "targetRegionBedFile": BEDFILE, + "hotSpotRegionBedFile": HOTSPOT_FILE, + "mixedTypeRNA_reference": FUSION_REFERENCE, + "mixedTypeRNA_targetRegionBedFile": FUSION_BEDFILE, "sampleGrouping": "DNA and Fusions", "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "sequencekitname": SEQ_KIT_NAME, "templatingKitName": TEMPLATE_KIT_NAME, - "planStatus": PLAN_STATUS, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) - finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_with_custom_tvc) + + # Microhaplotype templates for Cerebro + templateParams = TemplateParams( + "Oncomine Myeloid MRD Microhaplotype for 540", S5, "AMPS_HD_DNA" + ) + templateParams.update( + { + "applicationGroup": "DNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_MHT, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_HOTSPOT_FILE, + "sampleGrouping": SAMPLE_GROUPING, + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype) + + templateParams = TemplateParams( + "Oncomine Myeloid MRD DNA and Microhaplotype for 540", S5, "AMPS_HD_DNA" + ) + templateParams.update( + { + "applicationGroup": "DNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_DNA_MHT, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_DNA_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_DNA_HOTSPOT_FILE, + "sampleGrouping": SAMPLE_GROUPING, + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype_custom_tvc) + + templateParams = TemplateParams( + "Oncomine Myeloid MRD DNA Fusions and Microhaplotype for 540", S5, "AMPS_HD_DNA_RNA" + ) + templateParams.update( + { + "applicationGroup": "DNA + RNA", + "barcodeKitName": BARCODE_KIT_NAME, + "categories": CATEGORIES_DNA_n_FUSIONS, + "chipType": CHIP_NAME, + "flows": FLOWS, + "libraryKitName": LIB_KIT_NAME, + "libraryReadLength": LIBRARY_READ_LENGTH, + "reference": REFERENCE, + "targetRegionBedFile": MICROHAPLOTYPE_DNA_BEDFILE, + "hotSpotRegionBedFile": MICROHAPLOTYPE_DNA_HOTSPOT_FILE, + "mixedTypeRNA_reference": FUSION_REFERENCE, + "mixedTypeRNA_targetRegionBedFile": FUSION_BEDFILE, + "sampleGrouping": "DNA and Fusions", + "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, + "sequencekitname": SEQ_KIT_NAME, + "templatingKitName": TEMPLATE_KIT_NAME, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins_microaplotype_custom_tvc) def add_or_update_proton_PQ_system_template(): @@ -3031,7 +3404,7 @@ def add_or_update_tagseq_cfdna_s5_540_chef_system_template(templateName): def add_or_update_immune_repertoire_clonality_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "540" END_BARCODE_KIT_NAME = "" LIBRARY_KIT_NAME = "Ion AmpliSeq Library Kit Plus" @@ -3041,19 +3414,17 @@ def add_or_update_immune_repertoire_clonality_s5_system_templates(): SEQ_KIT_NAME = "Ion S5 Sequencing Kit" TEMPLATE_KIT_NAME = "Ion Chef S540 V1" PLAN_STATUS = "planned" + FLOWS = 550 # the follow templates will be create with same settings. template_names = [ - "Oncomine BCR IGHKL-SR - DNA", - "Oncomine BCR IGH FR3-J RF1 Assay", - "Oncomine BCR IGH FR2-J RF2 Assay", + "Oncomine BCR Pan-Clonality Assay", + "Oncomine IGH FR3(d)-J Assay", + "Oncomine IGH FR2-J Assay", "Oncomine TCR Pan-Clonality Assay" ] for template_name in template_names: - FLOWS = 500 if template_name in ["Oncomine BCR IGHKL-SR - DNA", - "Oncomine TCR Pan-Clonality Assay"] else 550 - templateParams = TemplateParams(template_name, S5, "MIXED") templateParams.update( { @@ -3100,7 +3471,7 @@ def add_or_update_immune_repertoire_clonality_s5_system_templates(): def add_or_update_immune_repertoire_SHM_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "530" END_BARCODE_KIT_NAME = "" FLOWS = 1100 @@ -3112,13 +3483,23 @@ def add_or_update_immune_repertoire_SHM_s5_system_templates(): TEMPLATE_KIT_NAME = "Ion Chef S530 V2" SAMPLE_PREP_PROTOCOL = "pcr400bp" PLAN_STATUS = "planned" + USABLE_SEQ_THRESHOLD = 30 # the follow templates will be create with same settings. template_names = [ "Oncomine BCR IGH FR1-J RF3 Assay", "Oncomine BCR IGHV SHM Leader-J Assay" ] + + # the follow templates will be create with same settings. + template_names = [ + "Oncomine IGH FR1-J Assay", + "Oncomine IGHV Leader-J Assay" + ] for template_name in template_names: + if template_name in "Oncomine IGHV Leader-J Assay": + LIBRARY_READ_LENGTH = 400 + USABLE_SEQ_THRESHOLD = 20 templateParams = TemplateParams(template_name, S5, "MIXED") templateParams.update( { @@ -3136,6 +3517,7 @@ def add_or_update_immune_repertoire_SHM_s5_system_templates(): "templatingKitName": TEMPLATE_KIT_NAME, "samplePrepProtocol": SAMPLE_PREP_PROTOCOL, "planStatus": PLAN_STATUS, + "usableSequenceThreshold": USABLE_SEQ_THRESHOLD, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) @@ -3146,7 +3528,7 @@ def add_or_update_immune_repertoire_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Select BC Set-1" BARCODE_KIT_NAME_DUAL = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "530" FLOWS = 850 LIBRARY_KIT_NAME = "Ion AmpliSeq Library Kit Plus" @@ -3205,7 +3587,7 @@ def add_or_update_immune_repertoire_s5_system_templates(): def add_or_update_immune_repertoire_long_igh_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "530" FLOWS = 1100 LIBRARY_KIT_NAME = "Ion AmpliSeq Library Kit Plus" @@ -3243,7 +3625,7 @@ def add_or_update_immune_repertoire_long_igh_s5_system_templates(): def add_or_update_immune_repertoire_pgm_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Select BC Set-1" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "318" FLOWS = 800 LIBRARY_KIT_NAME = "Ion AmpliSeq Library Kit Plus" @@ -3335,7 +3717,7 @@ def add_or_update_tagseq_cfdna_s5_550_chef_system_template(templateName): def add_or_update_immune_repertoire_short_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "540" END_BARCODE_KIT_NAME = "" # TODO: replace with the real barcode kit FLOWS = 500 @@ -3373,7 +3755,7 @@ def add_or_update_immune_repertoire_short_s5_system_templates(): def add_or_update_immune_repertoire_short_igh_mouse_s5_system_templates(): APPLICATION_GROUP = "immune_repertoire" BARCODE_KIT_NAME = "Ion Dual Barcode Kit 1-96" - CATEGORIES = "onco_immune;immunology" + CATEGORIES = "onco_immune;immunology;multi_ir_workflow_support" CHIP = "540" END_BARCODE_KIT_NAME = "" # TODO: replace with the real barcode kit FLOWS = 500 @@ -3846,8 +4228,8 @@ def add_or_update_carrierseq_system_templates(): def add_or_update_oncomine_ocav4_550_system_templates(): # OCAv4 550 OCAV4_BARCODE_KIT_NAME = "IonXpress" - OCAV4_CATEGORIES = "Oncomine;onco_solidTumor;onco_immune;ocav4" - OCAV4_CATEGORIES_2 = "Oncomine;barcodes_8;onco_solidTumor;onco_immune;ocav4" + OCAV4_CATEGORIES = "Oncomine;onco_solidTumor;onco_immune;ocav4;tecParam" + OCAV4_CATEGORIES_2 = "Oncomine;barcodes_8;onco_solidTumor;onco_immune;ocav4;tecParam" OCAV4_CHIP_NAME = "550" OCAV4_FLOWS = 500 OCAV4_FUSION_LIB_KIT_NAME = "Ion AmpliSeq Library Kit Plus" @@ -3857,6 +4239,13 @@ def add_or_update_oncomine_ocav4_550_system_templates(): OCAV4_SEQ_KIT_NAME = "Ion S5 Sequencing Kit" OCAV4_TEMPLATE_KIT_NAME = "Ion Chef S550 V1" OCAV4_STATUS = "planned" + # PlaceHolder : Get below final values from R&D and update all OCA4(DNA, DNA&Fusion and Fusion only) templates + CHIP_TEC_DFLTAMBIENT = 0.0 + CHIP_TEC_SLOPE = 0.0 + CHIP_TEC_MINTHRESHOLD = 0.0 + MAN_TEC_DFLTAMBIENT = 26.90 + MAN_TEC_SLOPE = 1.47 + MAN_TEC_MINTHRESHOLD = 40 # pre-select plugins plugins = {} @@ -3879,6 +4268,12 @@ def add_or_update_oncomine_ocav4_550_system_templates(): "sequencekitname": OCAV4_SEQ_KIT_NAME, "templatingKitName": OCAV4_TEMPLATE_KIT_NAME, "planStatus": OCAV4_STATUS, + "chipTecDfltAmbient": CHIP_TEC_DFLTAMBIENT, + "chipTecSlope": CHIP_TEC_SLOPE, + "chipTecMinThreshold": CHIP_TEC_MINTHRESHOLD, + "manTecDfltAmbient": MAN_TEC_DFLTAMBIENT, + "manTecSlope": MAN_TEC_SLOPE, + "manTecMinThreshold": MAN_TEC_MINTHRESHOLD, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) @@ -3902,6 +4297,12 @@ def add_or_update_oncomine_ocav4_550_system_templates(): "sequencekitname": OCAV4_SEQ_KIT_NAME, "templatingKitName": OCAV4_TEMPLATE_KIT_NAME, "planStatus": OCAV4_STATUS, + "chipTecDfltAmbient": CHIP_TEC_DFLTAMBIENT, + "chipTecSlope": CHIP_TEC_SLOPE, + "chipTecMinThreshold": CHIP_TEC_MINTHRESHOLD, + "manTecDfltAmbient": MAN_TEC_DFLTAMBIENT, + "manTecSlope": MAN_TEC_SLOPE, + "manTecMinThreshold": MAN_TEC_MINTHRESHOLD, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) @@ -3925,11 +4326,55 @@ def add_or_update_oncomine_ocav4_550_system_templates(): "sequencekitname": OCAV4_SEQ_KIT_NAME, "templatingKitName": OCAV4_TEMPLATE_KIT_NAME, "planStatus": OCAV4_STATUS, + "chipTecDfltAmbient": CHIP_TEC_DFLTAMBIENT, + "chipTecSlope": CHIP_TEC_SLOPE, + "chipTecMinThreshold": CHIP_TEC_MINTHRESHOLD, + "manTecDfltAmbient": MAN_TEC_DFLTAMBIENT, + "manTecSlope": MAN_TEC_SLOPE, + "manTecMinThreshold": MAN_TEC_MINTHRESHOLD, } ) sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) finish_sys_template(sysTemplate, isCreated, templateParams) +def add_or_update_hiv_drug_system_templates(): + HIV_DRUG_CHIP = "520" + HIV_DRUG_FLOWS = 850 + HIV_DRUG_REFERENCE = "HXB2" + HIV_DRUG_BARCODE = "IonCode" + HIV_DRUG_SEQ_KIT_NAME = "Ion S5 Sequencing Kit" + HIV_DRUG_TEMPLATE_KIT_NAME = "Ion Chef S530 V2" + HIV_DRUG_LIBRARY_KIT_NAME = "Ampliseq DNA V1" + HIV_DRUG_STATUS = "planned" + HIV_DRUG_BEDFILE = "WG00248.3.20170122.designed.bed" + + # pre-select plugins + plugins = {} + plugins["ARUPHIVGenotyper"] = _get_plugin_dict("ARUPHIVGenotyper") + plugins["coverageAnalysis"] = _get_plugin_dict("coverageAnalysis") + + templateParams = TemplateParams( + templateName="Ion Ampliseq HIV Drug Resistance Research Panel", instrument=S5, runType="AMPS" + ) + + templateParams.update( + { + "applicationGroup": "DNA", + "barcodeKitName": HIV_DRUG_BARCODE, + "categories": "", + "chipType": HIV_DRUG_CHIP, + "flows": HIV_DRUG_FLOWS, + "reference": HIV_DRUG_REFERENCE, + "targetRegionBedFile": HIV_DRUG_BEDFILE, + "sequencekitname": HIV_DRUG_SEQ_KIT_NAME, + "templatingKitName": HIV_DRUG_TEMPLATE_KIT_NAME, + "libraryKitName": HIV_DRUG_LIBRARY_KIT_NAME, + "planStatus": HIV_DRUG_STATUS, + } + ) + sysTemplate, isCreated, isUpdated = add_or_update_sys_template(templateParams) + finish_sys_template(sysTemplate, isCreated, templateParams, plugins) + def add_or_update_pan_bacteria_540_system_templates(): LIBRARY_READ_LENGTH = 150 @@ -4060,6 +4505,7 @@ def add_or_update_all_system_templates(): add_or_update_immune_repertoire_clonality_s5_system_templates() add_or_update_immune_repertoire_SHM_s5_system_templates() add_or_update_trilink_small_rna_system_templates() + add_or_update_hiv_drug_system_templates() except Exception: print(format_exc()) @@ -4153,7 +4599,14 @@ def clean_up_obsolete_templates(): "Ion Carrier Seq DNA - Ion S5 System", "Oncomine BCR IGH FR3-J Assay Reflex 1", "Oncomine BCR IGH FR2-J Assay Reflex 2", - "Oncomine BCR IGHV SHM FR1 - J Assay" + "Oncomine BCR IGHV SHM FR1 - J Assay", + "Oncomine BCR IGH FR1-J RF3 Assay", + "Oncomine BCR IGH FR2-J RF2 Assay", + "Oncomine BCR IGH FR3-J RF1 Assay", + "Oncomine BCR IGH FR3-J Assay", + "Oncomine BCR IGHV SHM Leader-J Assay", + "Oncomine BCR IGHV SHM FR1-J Assay", + "Oncomine BCR IGHKL-SR - DNA" ] templates = models.PlannedExperiment.objects.filter( @@ -4222,6 +4675,7 @@ def add_or_updateSystemTemplate_OffCycleRelease(**sysTemp): return status + def generate_offcycle_params(): """this is used to output template params and plugin config to be used in offcycle json""" @@ -4258,4 +4712,4 @@ def pre_select_plugins(application, pluginsList): add_or_update_all_system_templates() # delete system templates here... - clean_up_obsolete_templates() + clean_up_obsolete_templates() \ No newline at end of file diff --git a/dbReports/iondb/media/resources/scripts/plan/ionreporter_util.js b/dbReports/iondb/media/resources/scripts/plan/ionreporter_util.js index 93270350..63d67746 100644 --- a/dbReports/iondb/media/resources/scripts/plan/ionreporter_util.js +++ b/dbReports/iondb/media/resources/scripts/plan/ionreporter_util.js @@ -87,6 +87,13 @@ function get_workflow_url(start_url, account_id) { return myURL; } + // if ReproSeq, only use ApplicationType filtering + if (planCategories.toLowerCase() == "repro;multi_ir_workflow_support") { + myURL += build_ir_workflow_filters("ApplicationType", "Low-Coverage Whole Genome Sequencing", isFilterSet); + console.log("myURL: " + myURL); + return myURL; + } + // if Application Categories contains 'CarrierSeq' if (planCategories.toLowerCase().indexOf("carrierseq") != -1) { myURL += build_ir_workflow_filters("tag_CARRIERSEQ", "true", isFilterSet); diff --git a/dbReports/iondb/media/resources/scripts/plan/iru_get_user_input.js b/dbReports/iondb/media/resources/scripts/plan/iru_get_user_input.js index c326b49e..a60cc5e7 100644 --- a/dbReports/iondb/media/resources/scripts/plan/iru_get_user_input.js +++ b/dbReports/iondb/media/resources/scripts/plan/iru_get_user_input.js @@ -140,7 +140,7 @@ function getIonReporterColumns(){ var headerText = 'Ion Reporter Workflow ' - if (!($('[name=planCategories]').val() === 'onco_immune;immunology')){ + if (($('[name=planCategories]').val().indexOf("multi_ir_workflow_support") < 0)) { irWorkflowField = { field: "irWorkflow", title: "Ion Reporter Workflow", width: '350px', @@ -148,7 +148,7 @@ function getIonReporterColumns(){ editor: irWorkflowEditor, headerTemplate: headerText, template: dropDnTemplate({'html': $('#irWorkflowColumnTemplate').html()}), - hidden: ($('[name=planCategories]').val() === 'onco_immune;immunology') + hidden: ($('[name=planCategories]').val().indexOf("multi_ir_workflow_support") > 0) }; } else { irWorkflowField = { diff --git a/dbReports/iondb/media/resources/scripts/plan/page_plan_kits.js b/dbReports/iondb/media/resources/scripts/plan/page_plan_kits.js index dc055840..1fc32a57 100644 --- a/dbReports/iondb/media/resources/scripts/plan/page_plan_kits.js +++ b/dbReports/iondb/media/resources/scripts/plan/page_plan_kits.js @@ -11,12 +11,29 @@ $(document).ready(function () { // 8 - categorized applProduct for the application, target technique and categories var categorizedApplProductInUse = null; var isInit = true; + var lockAssayParams = $('input[name = "lockAssayParams"]').val().split(","); $("form").submit(function(){ $("select[name=barcodeId]").prop('disabled', false); $('.advanced').each(function(){ $(this).prop('disabled',false); }); + check_lock_assay_params(); }); + function check_lock_assay_params() { + if(lockAssayParams) { + $.each(lockAssayParams, function (i, val) { + if ($("#" + val).is("select")) { + $("select[id=" + val + "]").prop('disabled', false); + if (val.toLowerCase().indexOf("templatekit") >= 0) { + $("input[id=IonChef__templatekitType]").prop('disabled', false); + $("input[id=IA__templatekitType]").prop('disabled', false); + } + } else if ($("#" + val).is("input")) { + $("input[id=" + val + "]").prop('disabled', false); + } + }); + } + } function init_protocol_n_readLength_visibility() { var templateKit = templateKits[$("#templateKit").val()]; @@ -673,6 +690,9 @@ $(document).ready(function () { updateSummaryPanel("#selectedFlows", flowsSpinner.spinner("value")); }); } + if(lockAssayParams && lockAssayParams.indexOf("flows") !== -1) { + flowsSpinner.spinner("disable").prop('disabled',true); + } var readLengthSpinner = $("#libraryReadLength").spinner({min: 0, max: 1000}); @@ -707,6 +727,7 @@ $(document).ready(function () { update_TemplateKit_select(); update_SequencingKit_select(); } + set_default_flows_from_category_rules(); show_chiptype_warning($(this).val()); updateSummaryPanel("#selectedChipType", chipNameToDisplayName[$(this).val()]); diff --git a/dbReports/iondb/media/resources/scripts/plan/page_plan_sample_table.js b/dbReports/iondb/media/resources/scripts/plan/page_plan_sample_table.js index 3cae42a5..c895d6b7 100644 --- a/dbReports/iondb/media/resources/scripts/plan/page_plan_sample_table.js +++ b/dbReports/iondb/media/resources/scripts/plan/page_plan_sample_table.js @@ -497,6 +497,7 @@ $(document).ready(function () { if (planOpt.isPlanBySample){ toggleDisableElements($('[name=sampleDescription]'), true); toggleDisableElements($('[name=sampleExternalId]'), true); + toggleDisableElements($('[name=barcodeId]'), true); } // display validation errors diff --git a/dbReports/iondb/rundb/PlannedExperimentResource.py b/dbReports/iondb/rundb/PlannedExperimentResource.py index e2f2b058..521df284 100644 --- a/dbReports/iondb/rundb/PlannedExperimentResource.py +++ b/dbReports/iondb/rundb/PlannedExperimentResource.py @@ -1069,7 +1069,6 @@ def _copy_plan_bundle_from_obj(self, planObj): # modify data to create a new plan bundle.obj = None - bundle.data.pop("id") bundle.data.pop("experiment") bundle.data.pop("planGUID") bundle.data.pop("planShortID") @@ -1081,6 +1080,18 @@ def _copy_plan_bundle_from_obj(self, planObj): bundle.data["planExecuted"] = False bundle.data["isSystem"] = False bundle.data["isSystemDefault"] = False + # metaData is required for Dynamic Tech Param + metaData = { + "fromTemplate": bundle.data.get("planName"), + "fromTemplateId": bundle.data.pop("id"), + "fromTemplateCategories": bundle.data.get("categories"), + "fromTemplateChipType": bundle.data.get("chipType"), + "fromTemplateSequenceKitname": bundle.data.get("sequencekitname"), + "fromTemplateSource": "ION" + } + if bundle.data.get("metaData"): + metaData.update(bundle.data.get("metaData")) + bundle.data["metaData"] = metaData return bundle @@ -1271,6 +1282,17 @@ def dehydrate(self, bundle): sampleGrouping.displayedName if sampleGrouping else "" ) + # Chip and Manifold Tec Parameters from experiment + bundle.data["chipTecDfltAmbient"] = experiment.chipTecDfltAmbient + bundle.data["chipTecSlope"] = experiment.chipTecSlope + bundle.data["chipTecMinThreshold"] = experiment.chipTecMinThreshold + bundle.data["manTecDfltAmbient"] = experiment.manTecDfltAmbient + bundle.data["manTecSlope"] = experiment.manTecSlope + bundle.data["manTecMinThreshold"] = experiment.manTecMinThreshold + + bundle.data["metaData"] = experiment.metaData or {} + + # IonChef parameters from Experiment if experiment.chefInstrumentName: @@ -1360,9 +1382,11 @@ def hydrate_barcodedSamples(self, bundle): reference = barcode.get("reference") or bundle.data.get( "reference", "" ) + # this also handles the sse/svb bed files for target_or_hotspot in [ "targetRegionBedFile", "hotSpotRegionBedFile", + "sseBedFile" ]: bedfile = barcode.get(target_or_hotspot) if bedfile: @@ -1551,7 +1575,7 @@ def hydrate_regionfile(self, bundle): return bundle - def hydrate_sseBedfile(self, bundle): + def hydrate_sseBedFile(self, bundle): bedfile = bundle.data.get("sseBedFile") if bedfile: if bedfile.lower() == "none": @@ -2034,6 +2058,13 @@ def _get_barcodedSamples(samplesList, default_nuctype): barcodedSamples = data.get("barcodedSamples") or {} payload_samples_key = "barcodedSamples" default_nuctype = templateObj.get_default_nucleotideType() + isDynamicTecParamsModified, errMsg = plan_validator.get_dynamicTecParams(templateObj, data) + if isDynamicTecParamsModified: + raise SDKValidationError( + { + "Manifold Tec Params": errMsg + } + ) if data.get("samplesList"): if barcodedSamples: raise SDKValidationError( @@ -2158,6 +2189,14 @@ def _get_barcodedSamples(samplesList, default_nuctype): bundle.data["barcodedSamples"] = barcodedSamples + if templateObj.experiment.chipTecDfltAmbient or templateObj.experiment.manTecDfltAmbient: + bundle.data["chipTecDfltAmbient"] = templateObj.experiment.chipTecDfltAmbient + bundle.data["chipTecSlope"] = templateObj.experiment.chipTecSlope + bundle.data["chipTecMinThreshold"] = templateObj.experiment.chipTecMinThreshold + bundle.data["manTecDfltAmbient"] = templateObj.experiment.manTecDfltAmbient + bundle.data["manTecSlope"] = templateObj.experiment.manTecSlope + bundle.data["manTecMinThreshold"] = templateObj.experiment.manTecMinThreshold + # validate all fields and create the plan bundle = self.obj_create(bundle) return self.create_response( diff --git a/dbReports/iondb/rundb/admin.py b/dbReports/iondb/rundb/admin.py index 8e206948..446b97c9 100644 --- a/dbReports/iondb/rundb/admin.py +++ b/dbReports/iondb/rundb/admin.py @@ -1,6 +1,10 @@ # Copyright (C) 2010 Ion Torrent Systems, Inc. All Rights Reserved from __future__ import absolute_import +from django.contrib.auth.forms import UserChangeForm, AdminPasswordChangeForm +from django.contrib.auth.hashers import check_password +from iondb.rundb.login.forms import UserRegistrationForm +from iondb.rundb.login.password_validator import PasswordValidator from iondb.rundb.models import * from iondb.rundb import tasks from iondb.rundb import tsvm @@ -19,6 +23,7 @@ from django.contrib.admin.views.decorators import staff_member_required from django.contrib.sessions.models import Session from django.core.urlresolvers import reverse +from django.contrib.auth.admin import UserAdmin from django import http import httplib2 @@ -719,6 +724,10 @@ def exp_redo_from_scratch(request): ) return HttpResponseRedirect("/admin/rundb/experiment/") +@staff_member_required +def configure_account_admin(request): + return HttpResponseRedirect(reverse("configure_account")) + @staff_member_required def configure_server(request): @@ -1266,3 +1275,53 @@ class PlanSessionAdmin(admin.ModelAdmin): admin.site.register(PlanSession, PlanSessionAdmin) + + +class AdminPasswordChangeForm(AdminPasswordChangeForm): + def clean_password2(self): + password1 = self.cleaned_data.get('password1') + password2 = self.cleaned_data.get('password2') + if password1 and password2: + if password1 != password2: + raise forms.ValidationError( + self.error_messages['password_mismatch'], + code='password_mismatch', + ) + + if password2: + password_validator = PasswordValidator(password2) + exec_validation_methods = PasswordValidator.validation_methods + error_list = {} + for method in exec_validation_methods: + if 'username' in method: + username = str(self.user.username) + message = getattr(password_validator, method)(username) + else: + message = getattr(password_validator, method)() + + if isinstance(message, list): + error_list[method] = str(''.join(message)) + elif message is not None: + error_list[method] = message + if error_list: + raise forms.ValidationError(map(str, error_list.values())) + if check_password(password2, self.user.password): + raise forms.ValidationError('That password has already been used') + + return password2 + + +class CustomUserAdmin(UserAdmin): + form = UserChangeForm + add_form = UserRegistrationForm + change_password_form = AdminPasswordChangeForm + add_fieldsets = ( + (None, { + 'classes': ('wide',), + 'fields': ('username', 'email', 'password1', 'password2')} + ), + ) + + +admin.site.unregister(User) +admin.site.register(User, CustomUserAdmin) diff --git a/dbReports/iondb/rundb/api.py b/dbReports/iondb/rundb/api.py index 6182da11..1534a5b2 100755 --- a/dbReports/iondb/rundb/api.py +++ b/dbReports/iondb/rundb/api.py @@ -289,6 +289,8 @@ def post_activate(self, request, **kwargs): if user.userprofile and user.userprofile.needs_activation: user.userprofile.needs_activation = False user.userprofile.save() + msg = "New pending user registration for '{0}'".format(user.username) + models.Message.objects.filter(body__contains=msg).delete() return HttpAccepted() diff --git a/dbReports/iondb/rundb/barcodedata.py b/dbReports/iondb/rundb/barcodedata.py index c89d33fa..d773e3de 100644 --- a/dbReports/iondb/rundb/barcodedata.py +++ b/dbReports/iondb/rundb/barcodedata.py @@ -271,6 +271,15 @@ def createDnaBarcodeModel(read_group={}): end_sequence=end_sequence, end_adapter=end_adapter, ) + + def getBarcodeName(readGroupName): + # many times it seems that the readGroupId is a join between the results runid and barcodeName + # so they need to break this out and parse the readGroupId + if "." in readGroupName: + runid, barcodeName = readGroupName.split(".", 1) + else: + barcodeName = readGroupName + return barcodeName data = dict() reportFullPath = self.result.get_report_path() @@ -284,31 +293,33 @@ def createDnaBarcodeModel(read_group={}): for dataset in basecallerResults.get("datasets"): barcodeEntry = dict() readGroups = dataset["read_groups"] - # currently multiple read_groups on single barcode not supported - if len(readGroups) != 1: - logger.warn("Multiple read_groups on single barcode not supported") + + # Repeat Sequencing stores more than one read group in one dataset - iterate over read groups + if len(readGroups) == 0: + logger.warn("No read_groups found in dataset " + dataset.get("dataset_name", "")) continue - - readGroupId = readGroups[0] - - # many times it seems that the readGroupId is a join between the results runid and barcodeName - # so they need to break this out and parse the readGroupId - if "." in readGroupId: - runid, barcodeName = readGroupId.split(".", 1) - else: - barcodeName = readGroupId - + + barcodeName = getBarcodeName(readGroups[0]) if NO_MATCH in barcodeName: continue - - # since there should be one and only one read group, we can hard code the first element of the read groups - singleReadGroup = basecallerResults.get("read_groups")[readGroupId] - - barcodeEntry[REFERENCE] = self.eas.reference - barcodeEntry[FILTERED] = singleReadGroup.get(FILTERED, False) - # if this is a "filtered" barcode, then we will skip including it. - if barcodeEntry[FILTERED] and not include_filtered: + + # Infer filtered status & verify all read groups belong to the same barcode + is_filtered = True + same_barcode = True + for readGroupName in readGroups: + is_filtered = is_filtered and basecallerResults.get("read_groups")[readGroupName].get(FILTERED, False) + same_barcode = same_barcode and barcodeName == getBarcodeName(readGroupName) + + if not same_barcode: + logger.warn("Different barcodes in the same dataset are not supported") continue + + if is_filtered and not include_filtered: + continue + + barcodeEntry[FILTERED] = is_filtered + barcodeEntry[READ_COUNT] = dataset.get("read_count", 0) + firstReadGroup = basecallerResults.get("read_groups")[readGroups[0]] try: dnaBarcodeData = dnaBarcode.objects.get( @@ -320,7 +331,7 @@ def createDnaBarcodeModel(read_group={}): barcodeName=barcodeName, barcodeKit=self.eas.barcodeKitName ) ) - dnaBarcodeData = createDnaBarcodeModel(read_group=singleReadGroup) + dnaBarcodeData = createDnaBarcodeModel(read_group=firstReadGroup) if not dnaBarcodeData: logger.error( @@ -330,11 +341,10 @@ def createDnaBarcodeModel(read_group={}): ) continue + barcodeEntry[REFERENCE] = self.eas.reference barcodeEntry[BARCODE_ANNOTATION] = dnaBarcodeData.annotation barcodeEntry[BARCODE_TYPE] = dnaBarcodeData.type - barcodeEntry[READ_COUNT] = singleReadGroup[READ_COUNT] - barcodeEntry[BARCODE_SEQUENCE] = dnaBarcodeData.sequence barcodeEntry[BARCODE_ADAPTER] = dnaBarcodeData.adapter barcodeEntry[BARCODE_NAME] = barcodeName diff --git a/dbReports/iondb/rundb/configure/ampliseq_design_parser.py b/dbReports/iondb/rundb/configure/ampliseq_design_parser.py index 7a77414a..45d9a5e6 100644 --- a/dbReports/iondb/rundb/configure/ampliseq_design_parser.py +++ b/dbReports/iondb/rundb/configure/ampliseq_design_parser.py @@ -96,6 +96,23 @@ def ampliseq_concurrent_api_call(user, password, api_url): return get_ampliseq_designs(user, password, api_url) +def get_status_uploadHistoryLink(downloadObj): + uploadHistoryLink = None + status = None + if downloadObj: + try: + status = downloadObj.status + if "HTTP Error" not in status: + uploadHistoryLink = "/rundb/uploadstatus/{0}/".format( + downloadObj.id + ) + else: + uploadHistoryLink = "#" + except Exception as Err: + logger.error( + "Unknown error %s" % Err + ) # do not crash if any unknown issue + return status, uploadHistoryLink def get_ampliseq_designs(user, password, api_url): ctx = {} @@ -117,21 +134,10 @@ def get_ampliseq_designs(user, password, api_url): solution_id = solution["id"] configurationChoices = solution["configuration_choices"] sourceUrl = solution["resultsUri"] - uploadHistoryLink = None - status = None downloadObj = getASPanelImportStatus( "ordered", design["id"], solution_id, sourceUrl ) - if downloadObj: - try: - uploadHistoryLink = "/rundb/uploadstatus/{0}/".format( - downloadObj.id - ) - status = downloadObj.status - except Exception as Err: - logger.error( - "Unknown error %s" % Err - ) # do not crash if any unknown issue + status, uploadHistoryLink = get_status_uploadHistoryLink(downloadObj) if solution.get("ordered", False): panelType = template.get("panelType") or "on-demand" @@ -213,13 +219,9 @@ def get_fixed_designs_list(fixed_design_data): designID = design["id"] sourceUrl = design["resultsUri"] configurationChoices = design["configuration_choices"] - uploadHistoryLink = None - status = None downloadObj = getASPanelImportStatus("fixed", designID, sourceUrl=sourceUrl) + status, uploadHistoryLink = get_status_uploadHistoryLink(downloadObj) - if downloadObj: - uploadHistoryLink = "/rundb/uploadstatus/{0}/".format(downloadObj.id) - status = downloadObj.status tmpDict = {"id": designID, "configuration_choices": configurationChoices} description = design["description"] rec_app = None diff --git a/dbReports/iondb/rundb/configure/updateProducts.py b/dbReports/iondb/rundb/configure/updateProducts.py index 3825ea8d..3830ac52 100644 --- a/dbReports/iondb/rundb/configure/updateProducts.py +++ b/dbReports/iondb/rundb/configure/updateProducts.py @@ -51,6 +51,7 @@ "E010": "Duplicate product entry found ({0}). Check your product info.", "E011": "Invalid JSON file or response ({0}}", "E012": "Unknown system error: {0}", + "E013": "Invalid Product Update. Template Parameters({0}) for locking are required. Please consult Torrent Suite administrator" } PRODUCT_UPDATE_PATH_LOCAL = os.path.join( @@ -505,6 +506,8 @@ def update_product(name, update_version): if sysTemplatesToUpdate: logger.debug("Going to install system templates via off-cycle release") for sysTemp in sysTemplatesToUpdate: + if sysTemp.get("metaData"): + validate_sysTemp_metaData(monitor_pk, sysTemp) ctx_sys_temp_upd = add_or_updateSystemTemplate_OffCycleRelease(**sysTemp) if not ctx_sys_temp_upd["isValid"]: status = errorCode["E009"] @@ -514,6 +517,29 @@ def update_product(name, update_version): updateFileMonitor(monitor_pk, "Complete") +def validate_sysTemp_metaData(monitor_pk, sysTemplate): + lockAssayParams = sysTemplate.get("metaData").get("lockAssayParams") + err_msg = None + status = errorCode["E009"] + if lockAssayParams and ("runType" in lockAssayParams and "applicationGroupName" not in lockAssayParams) or \ + ("applicationGroupName" in lockAssayParams and "runType" not in lockAssayParams): + if monitor_pk: + updateFileMonitor(monitor_pk, status) + err_msg = errorCode["E013"].format("runType and applicationGroupName") + + if lockAssayParams and "chipType" in lockAssayParams and \ + ("runType" not in lockAssayParams or "applicationGroupName" not in lockAssayParams): + if monitor_pk: + updateFileMonitor(monitor_pk, status) + err_msg = errorCode["E013"].format("chipType, runType and applicationGroupName") + + if err_msg: + logger.debug( + "Error: iondb.rundb.configure.updateProducts.update_product %s", err_msg + ) + raise Exception(err_msg) + + return err_msg def validate_modelObject(modelsToUpdate): """validate incoming models to be updated or created @@ -891,6 +917,11 @@ def validate_productFile(productFile, fileName=None): raise Exception( "Missing product content, please consult Torrent Suite administrator." ) + if ("sys_template_info" in productFileContent + and productFileContent["sys_template_info"] + ): + for sysTemplate in productFileContent["sys_template_info"]: + validate_sysTemp_metaData(None, sysTemplate) if os.path.exists(destinationFilePath): existingProductData = json.loads(open(destinationFilePath).read()) diff --git a/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_mca_parameters.json b/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_mca_parameters.json new file mode 100644 index 00000000..05053340 --- /dev/null +++ b/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_mca_parameters.json @@ -0,0 +1,121 @@ +{ + "tvc_config": { + "freebayes": { + "allow_complex": 0, + "allow_indels": 1, + "allow_mnps": 1, + "allow_snps": 1, + "gen_min_alt_allele_freq": 0.0003, + "gen_min_coverage": 4, + "gen_min_indel_alt_allele_freq": 0.0004, + "min_cov_fraction": 0.9, + "min_mapping_qv": 4, + "read_max_mismatch_fraction": 1, + "read_mismatch_limit": 7, + "read_snp_limit": 10 + }, + "long_indel_assembler": {}, + "meta": { + "based_on": "ampliseq_hd_liquidbiopsy_parameters.json", + "built_in": "true", + "compatibility": { + "panel": "/rundb/api/v1/contentupload/xx", + "chip": [ + "530", + "540", + "550" + ], + "frequency": [ + "rare_somatic" + ], + "library": [ + "ampliseq_hd" + ], + "stringency": [ + "low" + ] + }, + "configuration": "cerebro_ampliseq_hd_cfdna", + "custom": true, + "name": "Cerebro 5.18 Panel -AmpliSeq HD for Oncomine Liquid Biopsy DNA - GeneStudio S5 phase 2", + "replaces": [ + "ampliseq_hd_cfdna" + ], + "repository_id": "", + "tooltip": "Parameters optimized for Cerebro and Microapotype Panel on 550 chips", + "tmapargs": "tmap mapall -g 0 ... --context stage1 map4", + "tvcargs": "tvc", + "unifyargs": "tvcutils unify_vcf --hotspot-positions-only off --filter-by-target on", + "ts_version": "5.18", + "user_selections": { + "chip": "550", + "frequency": "germline", + "library": "ampliseq", + "panel": "/rundb/api/v1/contentupload/xx/" + } + }, + "torrent_variant_caller": { + "data_quality_stringency": 20, + "downsample_to_coverage": 20000, + "error_motifs": "", + "fd_nonsnp_min_var_cov": 1, + "filter_deletion_predictions": 0.2, + "filter_insertion_predictions": 0.2, + "filter_unusual_predictions": 0.2, + "heavy_tailed": 3, + "hotspot_min_allele_freq": 0.0005, + "hotspot_min_cov_each_strand": 0, + "hotspot_min_coverage": 0, + "hotspot_min_var_coverage": 3, + "hotspot_min_variant_score": 3, + "hotspot_strand_bias": 0.65, + "hotspot_strand_bias_pval": 0, + "hp_del_len": [], + "hp_indel_hrun": [], + "hp_ins_len": [], + "hp_max_length": 5, + "indel_as_hpindel": 0, + "indel_func_size_offset": 0, + "indel_min_allele_freq": 0.0005, + "indel_min_cov_each_strand": 0, + "indel_min_coverage": 0, + "indel_min_var_coverage": 3, + "indel_min_variant_score": 10, + "indel_strand_bias": 0.65, + "indel_strand_bias_pval": 0, + "max_flows_to_test": 10, + "min_callable_prob": 0.95, + "min_fam_per_strand_cov": 0, + "min_ratio_for_fd": 0.1, + "min_tag_fam_size": 3, + "mnp_min_allele_freq": 0.0005, + "mnp_min_cov_each_strand": 0, + "mnp_min_coverage": 0, + "mnp_min_var_coverage": 3, + "mnp_min_variant_score": 6, + "mnp_strand_bias": 0.65, + "mnp_strand_bias_pval": 0, + "outlier_probability": 0.001, + "position_bias": 0.75, + "position_bias_pval": 0.05, + "position_bias_ref_fraction": 0.05, + "prediction_precision": 1, + "report_ppa": 0, + "snp_min_allele_freq": 0.0005, + "snp_min_cov_each_strand": 0, + "snp_min_coverage": 0, + "snp_min_var_coverage": 3, + "snp_min_variant_score": 6, + "snp_strand_bias": 0.65, + "snp_strand_bias_pval": 0, + "sse_prob_threshold": 1, + "suppress_called_allele_lod": 1, + "suppress_recalibration": 0, + "tag_sim_max_cov": 10, + "tag_trim_method": "sloppy-trim", + "try_few_restart_freq": 1, + "use_fd_param": 0, + "use_position_bias": 0 + } + } +} \ No newline at end of file diff --git a/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_parameters.json b/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_parameters.json new file mode 100644 index 00000000..c7749dbd --- /dev/null +++ b/dbReports/iondb/rundb/fixtures/systemtemplateparams/cerebro_mrd_parameters.json @@ -0,0 +1,119 @@ +{ + "freebayes": { + "allow_complex": 0, + "allow_indels": 1, + "allow_mnps": 1, + "allow_snps": 1, + "gen_min_alt_allele_freq": 0.0003, + "gen_min_coverage": 4, + "gen_min_indel_alt_allele_freq": 0.0004, + "min_cov_fraction": 0.9, + "min_mapping_qv": 4, + "read_max_mismatch_fraction": 1, + "read_mismatch_limit": 7, + "read_snp_limit": 10 + }, + "long_indel_assembler": {}, + "meta": { + "based_on": "ampliseq_hd_liquidbiopsy_parameters.json", + "built_in": "true", + "compatibility": { + "panel": "/rundb/api/v1/contentupload/xx", + "chip": [ + "530", + "540", + "550" + ], + "frequency": [ + "rare_somatic" + ], + "library": [ + "ampliseq_hd" + ], + "stringency": [ + "low" + ] + }, + "configuration": "cerebro_ampliseq_hd_cfdna", + "custom": true, + "name": "Cerebro 5.18 Panel -AmpliSeq HD for Oncomine Liquid Biopsy DNA - GeneStudio S5 phase 2", + "replaces": [ + "ampliseq_hd_cfdna" + ], + "repository_id": "", + "tooltip": "Parameters optimized for Cerebro and Microapotype Panel on 550 chips", + "tmapargs": "tmap mapall -g 0 ... --context stage1 map4", + "tvcargs": "tvc", + "unifyargs": "tvcutils unify_vcf --hotspot-positions-only off --filter-by-target on", + "ts_version": "5.18", + "user_selections": { + "chip": "550", + "frequency": "germline", + "library": "ampliseq", + "panel": "/rundb/api/v1/contentupload/xx/" + } + }, + "torrent_variant_caller": { + "data_quality_stringency": 20, + "downsample_to_coverage": 20000, + "error_motifs": "", + "fd_nonsnp_min_var_cov": 1, + "filter_deletion_predictions": 0.2, + "filter_insertion_predictions": 0.2, + "filter_unusual_predictions": 0.2, + "heavy_tailed": 3, + "hotspot_min_allele_freq": 0.0005, + "hotspot_min_cov_each_strand": 0, + "hotspot_min_coverage": 0, + "hotspot_min_var_coverage": 3, + "hotspot_min_variant_score": 3, + "hotspot_strand_bias": 0.65, + "hotspot_strand_bias_pval": 0, + "hp_del_len": [], + "hp_indel_hrun": [], + "hp_ins_len": [], + "hp_max_length": 5, + "indel_as_hpindel": 0, + "indel_func_size_offset": 0, + "indel_min_allele_freq": 0.0005, + "indel_min_cov_each_strand": 0, + "indel_min_coverage": 0, + "indel_min_var_coverage": 3, + "indel_min_variant_score": 10, + "indel_strand_bias": 0.65, + "indel_strand_bias_pval": 0, + "max_flows_to_test": 10, + "min_callable_prob": 0.95, + "min_fam_per_strand_cov": 0, + "min_ratio_for_fd": 0.1, + "min_tag_fam_size": 3, + "mnp_min_allele_freq": 0.0005, + "mnp_min_cov_each_strand": 0, + "mnp_min_coverage": 0, + "mnp_min_var_coverage": 3, + "mnp_min_variant_score": 6, + "mnp_strand_bias": 0.65, + "mnp_strand_bias_pval": 0, + "outlier_probability": 0.001, + "position_bias": 0.75, + "position_bias_pval": 0.05, + "position_bias_ref_fraction": 0.05, + "prediction_precision": 1, + "report_ppa": 0, + "snp_min_allele_freq": 0.0005, + "snp_min_cov_each_strand": 0, + "snp_min_coverage": 0, + "snp_min_var_coverage": 3, + "snp_min_variant_score": 6, + "snp_strand_bias": 0.65, + "snp_strand_bias_pval": 0, + "sse_prob_threshold": 1, + "suppress_called_allele_lod": 1, + "suppress_recalibration": 0, + "tag_sim_max_cov": 10, + "tag_trim_method": "sloppy-trim", + "try_few_restart_freq": 1, + "use_fd_param": 0, + "use_position_bias": 0 + } +} \ No newline at end of file diff --git a/dbReports/iondb/rundb/fixtures/ts_dbData.json b/dbReports/iondb/rundb/fixtures/ts_dbData.json index 8aeb14a8..745c9128 100644 --- a/dbReports/iondb/rundb/fixtures/ts_dbData.json +++ b/dbReports/iondb/rundb/fixtures/ts_dbData.json @@ -753,6 +753,91 @@ "sequencing_instrumentType": "", "uid": "APPCAT0026" } + }, + { + "pk": 27, + "model": "rundb.common_cv", + "fields": { + "cv_type": "applicationCategory", + "value": "multi_ir_workflow_support", + "displayedValue": "Multi IR Workflow Support", + "description": "Multi IR Workflow launch Support", + "isDefault": false, + "isActive": true, + "isVisible": false, + "categories": "AMPS;AMPS_RNA;AMPS_DNA_RNA;AMPS_HD_DNA;AMPS_HD_RNA;AMPS_HD_DNA_RNA;AMPS_HD_DNA_RNA_1", + "samplePrep_instrumentType": "", + "sequencing_instrumentType": "", + "uid": "APPCAT0027" + } + }, + { + "pk": 28, + "model": "rundb.common_cv", + "fields": { + "cv_type": "samplePrepProtocol", + "value": "cerebro_550", + "displayedValue": "MRD 550 Templating Script", + "description": "Use Ion Chef script protocol optimized for Cerebro 550", + "isDefault": true, + "isActive": true, + "categories": "cerebro_550_cycling", + "samplePrep_instrumentType": "IC", + "sequencing_instrumentType": "S5", + "uid": "CV0007" + } + }, + { + "pk": 29, + "model": "rundb.common_cv", + "fields": { + "cv_type": "libraryPrepProtocol", + "value": "myeloid_dl8_v2_qc", + "displayedValue": "Myeloid V2 QC", + "description": "Myeloid V2 QC Library Prep Protocol", + "isDefault": false, + "isActive": false, + "isVisible": false, + "categories": "myeloid", + "samplePrep_instrumentType": "", + "sequencing_instrumentType": "", + "uid": "CV0022" + } + }, + + { + "pk": 30, + "model": "rundb.common_cv", + "fields": { + "cv_type": "applicationCategory", + "value": "tecParam", + "displayedValue": "Dynamic Manifold Tec parameter support", + "description": "Dynamic Manifold Tec parameter support", + "isDefault": false, + "isActive": true, + "isVisible": false, + "categories": "AMPS;AMPS_RNA;AMPS_DNA_RNA;AMPS_HD_DNA;AMPS_HD_RNA;AMPS_HD_DNA_RNA;AMPS_HD_DNA_RNA_1", + "samplePrep_instrumentType": "", + "sequencing_instrumentType": "", + "uid": "APPCAT0028" + } + }, + { + "pk": 31, + "model": "rundb.common_cv", + "fields": { + "cv_type": "applicationCategory", + "value": "exome", + "displayedValue": "exome", + "description": "Ampliseq Exome Panels", + "isDefault": false, + "isActive": true, + "isVisible": false, + "categories": "AMPS;AMPS_RNA;AMPS_DNA_RNA;AMPS_HD_DNA;AMPS_HD_RNA;AMPS_HD_DNA_RNA;AMPS_HD_DNA_RNA_1;AMPS_EXOME", + "samplePrep_instrumentType": "", + "sequencing_instrumentType": "", + "uid": "APPCAT0029" + } }, { "pk": 1, diff --git a/dbReports/iondb/rundb/fixtures/ts_dbData_analysisargs.json b/dbReports/iondb/rundb/fixtures/ts_dbData_analysisargs.json index cd0db8fb..9e96f264 100644 --- a/dbReports/iondb/rundb/fixtures/ts_dbData_analysisargs.json +++ b/dbReports/iondb/rundb/fixtures/ts_dbData_analysisargs.json @@ -475,6 +475,8 @@ "chipType": "540", "sequenceKitName": "Ion S5 Sequencing Kit", "samplePrepKitName": "Ion AmpliSeq Exome Kit", + "applType": ["AMPS_EXOME"], + "applCategory" : "exome", "beadfindargs" : "justBeadFind --args-json /opt/ion/config/args_540_beadfind.json", "analysisargs" : "Analysis --args-json /opt/ion/config/args_540_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --wells-normalization on", @@ -947,6 +949,7 @@ "applType": ["AMPS_EXOME"], "sequenceKitName": "", "samplePrepKitName": "", + "applCategory" : "exome", "beadfindargs" : "justBeadFind --args-json /opt/ion/config/args_530_beadfind.json", "analysisargs" : "Analysis --args-json /opt/ion/config/args_530_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", @@ -1034,6 +1037,7 @@ "applType": ["AMPS_EXOME"], "sequenceKitName": "", "samplePrepKitName": "", + "applCategory" : "exome", "beadfindargs" : "justBeadFind --args-json /opt/ion/config/args_540_beadfind.json", "analysisargs" : "Analysis --args-json /opt/ion/config/args_540_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --wells-normalization on", @@ -2076,6 +2080,8 @@ "chipType": "550", "sequenceKitName": "Ion S5 Sequencing Kit", "samplePrepKitName": "Ion AmpliSeq Exome Kit", + "applType": ["AMPS_EXOME"], + "applCategory" : "exome", "beadfindargs" : "justBeadFind --args-json /opt/ion/config/args_550_beadfind.json", "analysisargs" : "Analysis --args-json /opt/ion/config/args_550_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2", @@ -2628,14 +2634,14 @@ "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "calibrateargs" : "Calibration --num-calibration-regions 1,1", "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --end-barcodes off", - "alignmentargs" : "tmap mapall -q 50000 ... stage1 map4", + "alignmentargs" : "tmap mapall -q 5000 ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_530_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_530_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --end-barcodes off", - "thumbnailalignmentargs" : "tmap mapall -q 50000 ... stage1 map4", + "thumbnailalignmentargs" : "tmap mapall -q 5000 ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } }, @@ -2655,14 +2661,14 @@ "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --wells-normalization on", "calibrateargs" : "Calibration", "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --num-unfiltered 1000 --barcode-filter-postpone 1 --wells-normalization on --end-barcodes off", - "alignmentargs" : "tmap mapall -q 50000 ... stage1 map4", + "alignmentargs" : "tmap mapall -q 5000 ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_540_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_540_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on --end-barcodes off", - "thumbnailalignmentargs" : "tmap mapall -q 50000 ... stage1 map4", + "thumbnailalignmentargs" : "tmap mapall -q 5000 ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } }, @@ -2920,14 +2926,14 @@ "analysisargs" : "Analysis --args-json /opt/ion/config/args_520_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "calibrateargs" : "Calibration --num-calibration-regions 1,1", - "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "alignmentargs" : "tmap mapall ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_520_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_520_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", - "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "thumbnailalignmentargs" : "tmap mapall ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } @@ -2950,14 +2956,14 @@ "analysisargs" : "Analysis --args-json /opt/ion/config/args_520_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "calibrateargs" : "Calibration --num-calibration-regions 1,1", - "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "alignmentargs" : "tmap mapall ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_520_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_520_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", - "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "thumbnailalignmentargs" : "tmap mapall ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } @@ -2980,14 +2986,14 @@ "analysisargs" : "Analysis --args-json /opt/ion/config/args_530_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "calibrateargs" : "Calibration --num-calibration-regions 1,1", - "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --num-unfiltered 1000 --barcode-filter-postpone 1 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "alignmentargs" : "tmap mapall -q 50000 ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_530_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_530_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", - "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16", + "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --qual-filter true --qual-filter-slope 0.040 --qual-filter-offset 1.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "thumbnailalignmentargs" : "tmap mapall -q 50000 ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } @@ -3010,14 +3016,14 @@ "analysisargs" : "Analysis --args-json /opt/ion/config/args_540_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --wells-normalization on", "calibrateargs" : "Calibration", - "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --num-unfiltered 1000 --barcode-filter-postpone 1 --wells-normalization on --extra-trim-left 16", + "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --num-unfiltered 1000 --barcode-filter-postpone 1 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "alignmentargs" : "tmap mapall -q 50000 ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_540_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_540_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on", "thumbnailcalibrateargs" : "Calibration", - "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on --extra-trim-left 16", + "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --wells-normalization on --extra-trim-left 16 --min-read-length 8", "thumbnailalignmentargs" : "tmap mapall -q 50000 ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } @@ -3038,14 +3044,14 @@ "analysisargs" : "Analysis --args-json /opt/ion/config/args_550_analysis.json", "prebasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2", "calibrateargs" : "Calibration", - "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --num-unfiltered 1000 --barcode-filter-postpone 1 --extra-trim-left 16", + "basecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --max-phasing-levels 2 --num-unfiltered 1000 --barcode-filter-postpone 1 --extra-trim-left 16 --min-read-length 8", "alignmentargs" : "tmap mapall ... stage1 map4", "ionstatsargs" : "ionstats alignment", "thumbnailbeadfindargs" : "justBeadFind --args-json /opt/ion/config/args_550_beadfind.json --thumbnail true", "thumbnailanalysisargs" : "Analysis --args-json /opt/ion/config/args_550_analysis.json --thumbnail true", "prethumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0", "thumbnailcalibrateargs" : "Calibration", - "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --extra-trim-left 16", + "thumbnailbasecallerargs" : "BaseCaller --trim-qual-cutoff 15 --barcode-filter-minreads 10 --phasing-residual-filter=2.0 --extra-trim-left 16 --min-read-length 8", "thumbnailalignmentargs" : "tmap mapall ... stage1 map4", "thumbnailionstatsargs" : "ionstats alignment" } diff --git a/dbReports/iondb/rundb/fixtures/ts_dbData_chips_kits.json b/dbReports/iondb/rundb/fixtures/ts_dbData_chips_kits.json index 778c1f58..dea031fb 100644 --- a/dbReports/iondb/rundb/fixtures/ts_dbData_chips_kits.json +++ b/dbReports/iondb/rundb/fixtures/ts_dbData_chips_kits.json @@ -2197,7 +2197,7 @@ "samplePrep_instrumentType" : "IC", "isActive": true, "description": "Ion 550 Kit-Chef", - "categories" : "s5v1Kit;", + "categories" : "s5v1Kit;samplePrepProtocol;cerebro_550_cycling", "defaultCartridgeUsageCount" : 2, "cartridgeExpirationDayLimit" : 8, "cartridgeBetweenUsageAbsoluteMaxDayLimit" : 30, diff --git a/dbReports/iondb/rundb/forms.py b/dbReports/iondb/rundb/forms.py index 5500621b..e1e2a6bf 100644 --- a/dbReports/iondb/rundb/forms.py +++ b/dbReports/iondb/rundb/forms.py @@ -10,6 +10,8 @@ from django.forms.widgets import PasswordInput from django import shortcuts from iondb.rundb.login.forms import UserRegistrationForm +from iondb.rundb.login.password_validator import PasswordValidator +from django.contrib.auth.hashers import check_password from iondb.rundb import models, labels import datetime @@ -554,7 +556,9 @@ def save(self, *args, **kw): password = self.cleaned_data.get("password", "") if password: self.instance.user.set_password(password) - + self.instance.is_password_valid = True + self.instance.last_password_changed_on = datetime.datetime.utcnow() + self.instance.save() self.instance.user.save() def clean_password_confirm(self): @@ -563,10 +567,29 @@ def clean_password_confirm(self): password2 = str(self.cleaned_data.get("password_confirm")) if password1: + passwordValidator = PasswordValidator(password1) + exec_validation_methods = PasswordValidator.validation_methods + error_list = {} + for method in exec_validation_methods: + if 'username' in method: + username = str(self.instance.user.username) + message = getattr(passwordValidator, method)(username) + else: + message = getattr(passwordValidator, method)() + if isinstance(message, list): + error_list[method] = str(''.join(message)) + elif message is not None: + error_list[method] = message + if error_list: + raise forms.ValidationError(',
          '.join( + map(str, error_list.values()))) if not password2: raise forms.ValidationError("You must confirm your password") if password1 != password2: raise forms.ValidationError("Your passwords do not match") + if check_password(password2, self.instance.user.password): + raise forms.ValidationError('That password has already been used') + return password2 class Meta: @@ -746,10 +769,13 @@ def static_ip(address, subnet, gateway, nameserver=None, search=None): cmd += ["--nameserver", nameserver] if search: cmd += ["--search", search] - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = proc.communicate() - if stderr: - logger.warning("Network error: %s" % stderr) + try: + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = proc.communicate() + if stderr: + logger.warning("Network error: %s" % stderr) + except Exception as Err: + logger.error(Err) network_settings = self.get_network_settings() host_config = ["mode", "address", "subnet", "gateway"] diff --git a/dbReports/iondb/rundb/home/views.py b/dbReports/iondb/rundb/home/views.py index c85f3749..2f2689a5 100644 --- a/dbReports/iondb/rundb/home/views.py +++ b/dbReports/iondb/rundb/home/views.py @@ -29,7 +29,7 @@ Cruncher, DMFileStat, NewsPost, - GlobalConfig, + GlobalConfig, UserProfile, ) from iondb.utils import devices from iondb.utils.files import get_disk_attributes_gb, is_mounted @@ -149,6 +149,18 @@ def format_date(date): else: return date +def showPasswordWarningMsg(request): + username = request.user.username + user_profile = UserProfile.objects.filter(user__username__in=[username]) + last_updated = user_profile[0].last_password_changed_on + pwd_max_age = GlobalConfig.objects.get().password_max_age + duration = datetime.datetime.utcnow().date() - last_updated.date() + + if duration.days > pwd_max_age or not user_profile[0].is_password_valid: + return "Strongly recommended to change your password" + + return None + def showDeprecationMsg(): try: majorPlatform = GlobalConfig.get().majorPlatform @@ -256,6 +268,7 @@ def dashboard_fragments(request, skip_runs=False): "ts_version": TS_version, "update_status": update_status, "showDeprecationMsg": showDeprecationMsg(), + "showPasswordWarningMsg": showPasswordWarningMsg(request), "instruments": { "connected": instr_connected, "offline": instr_offline, diff --git a/dbReports/iondb/rundb/login/forms.py b/dbReports/iondb/rundb/login/forms.py index 345fe334..2bd15575 100644 --- a/dbReports/iondb/rundb/login/forms.py +++ b/dbReports/iondb/rundb/login/forms.py @@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User as AuthUser from iondb.rundb import labels +from iondb.rundb.login.password_validator import PasswordValidator class UserRegistrationForm( @@ -17,7 +18,9 @@ class UserRegistrationForm( requires the password to be entered twice to catch typos. """ - + password1 = forms.CharField(label=_("Password"), + widget=forms.PasswordInput, + help_text=_("The password must contain at least a uppercase letter, a digit, special chars(.,@#$%^&*()_-+!;) and minimum 10 characters.")) email = forms.EmailField( widget=forms.TextInput(attrs={"maxlength": 75}), label=labels.User.email.verbose_name, @@ -32,11 +35,32 @@ def __init__(self, *args, **kwargs): def save(self, commit=True): user = super(UserRegistrationForm, self).save(commit=False) - user.set_email(self.cleaned_data["email"]) + user.email = self.cleaned_data["email"] if commit: user.save() return user + def clean_password2(self): + password2 = str(self.cleaned_data.get("password2")) + if password2: + passwordValidator = PasswordValidator(password2) + exec_validation_methods = PasswordValidator.validation_methods + error_list = {} + for method in exec_validation_methods: + if 'username' in method: + username = str(self.cleaned_data.get("username")) + message = getattr(passwordValidator, method)(username) + else: + message = getattr(passwordValidator, method)() + + if isinstance(message, list): + error_list[method] = str(''.join(message)) + elif message is not None: + error_list[method] = message + if error_list: + raise forms.ValidationError(map(str, error_list.values())) + + return password2 class AuthenticationRememberMeForm(AuthenticationForm): @@ -48,4 +72,4 @@ class AuthenticationRememberMeForm(AuthenticationForm): remember_me = forms.BooleanField( label=_("Remember Me"), initial=False, required=False - ) + ) \ No newline at end of file diff --git a/dbReports/iondb/rundb/login/password_validator.py b/dbReports/iondb/rundb/login/password_validator.py new file mode 100644 index 00000000..4771a75e --- /dev/null +++ b/dbReports/iondb/rundb/login/password_validator.py @@ -0,0 +1,91 @@ +import re +from django.forms import ValidationError +from django.utils.translation import ugettext_lazy as _ +from iondb.rundb.models import Rig +from iondb.utils.utils import get_instrument_info + +class PasswordValidator: + validation_methods = ["symbol", "number", "uppercase", "lowercase", "minLength", "blank", + "username", "checkInstrumentName", "sameCharacters", "instrumentSupportedSymbol"] + def __init__(self, password, min_length=10): + self.min_length = min_length + self.password = password + + def minLength(self): + if len(self.password) < self.min_length: + return ValidationError( + _("This password must contain at least %(min_length)d characters."), + code='password_too_short', + params={'min_length': self.min_length}, + ).messages + + def number(self): + if not re.findall('\d', self.password): + return ValidationError( + _("The password must contain at least 1 digit, 0-9."), + code='password_no_number', + ).messages + + def checkInstrumentName(self): + rigs = Rig.objects.exclude(host_address="") + + if len(rigs) > 0: + instruments = [get_instrument_info(rig) for rig in rigs] + for inst in instruments: + if inst['name'].lower() in self.password.lower() or inst['serial'] in self.password.lower(): + return ValidationError( + _("The password must not contain the instrument name or serial no."), + code='password_no_rig_name_serial', + ).messages + + def sameCharacters(self): + regex = "([a-zA-Z0-9.,@#$%^&*()_\-+!;])\\1\\1+" + p = re.compile(regex) + if (re.search(p, self.password)): + return ValidationError( + _("The password should not contain repeated characters, Ex:aaa,###. Choose different password"), + code='password_no_sameChars', + ).messages + + def uppercase(self): + if not re.findall('[A-Z]', self.password): + return ValidationError( + _("The password must contain at least 1 uppercase letter, A-Z."), + code='password_no_upper', + ).messages + + def lowercase(self): + if not re.findall('[a-z]', self.password): + return ValidationError( + _("The password must contain at least 1 lowercase letter, a-z."), + code='password_no_lower', + ).messages + + def symbol(self): + if not re.findall('[.,@#$%^&*()_\-+!;]', self.password): + return ValidationError( + _("The password must contain at least 1 symbol: .,@#$%^&*()_-+!;"), + code='password_no_symbol', + ).messages + + def blank(self): + if re.search('\s', self.password): + return ValidationError( + _("The password must not contain blank space"), + code='password_no_blank', + ).messages + + def username(self, username): + if username.lower() in self.password.lower(): + return ValidationError( + _("The password must not contain the username"), + code='password_no_username', + ).messages + + def instrumentSupportedSymbol(self): + supported_symbols = ".,@#$%^&*()_-+!;" + if [e for e in self.password if not e.isalnum() and e not in supported_symbols]: + return ValidationError( + _("The password must contain only these symbols supported by the Instruments: .,@#$%^&*()_-+!;"), + code='password_invalid_symbol', + ).messages \ No newline at end of file diff --git a/dbReports/iondb/rundb/login/views.py b/dbReports/iondb/rundb/login/views.py index 2d3b569a..083a6ea8 100644 --- a/dbReports/iondb/rundb/login/views.py +++ b/dbReports/iondb/rundb/login/views.py @@ -2,6 +2,7 @@ import json import urlparse +import datetime from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login from django.contrib.sites.models import get_current_site from django import shortcuts, template @@ -15,7 +16,6 @@ from iondb.rundb.login.forms import UserRegistrationForm, AuthenticationRememberMeForm from iondb.rundb.models import Message - from iondb.rundb.plan.views import reset_page_plan_session from iondb.rundb.sample.views import clear_samplesetitem_session @@ -164,6 +164,8 @@ def registration(request): # update UserProfile to indicate this account needs activation new_user.userprofile.needs_activation = True + new_user.userprofile.is_password_valid = True + new_user.userprofile.last_password_changed_on = datetime.datetime.utcnow() new_user.userprofile.save() # Send global message notifying of pending registration diff --git a/dbReports/iondb/rundb/migrations/0368_auto__add_field_experiment_chipTecDfltAmbient__add_field_experiment_ch.py b/dbReports/iondb/rundb/migrations/0368_auto__add_field_experiment_chipTecDfltAmbient__add_field_experiment_ch.py new file mode 100644 index 00000000..73f4e9d5 --- /dev/null +++ b/dbReports/iondb/rundb/migrations/0368_auto__add_field_experiment_chipTecDfltAmbient__add_field_experiment_ch.py @@ -0,0 +1,1241 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Experiment.chipTecDfltAmbient' + db.add_column(u'rundb_experiment', 'chipTecDfltAmbient', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + # Adding field 'Experiment.chipTecSlope' + db.add_column(u'rundb_experiment', 'chipTecSlope', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + # Adding field 'Experiment.chipTecMinThreshold' + db.add_column(u'rundb_experiment', 'chipTecMinThreshold', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + # Adding field 'Experiment.manTecDfltAmbient' + db.add_column(u'rundb_experiment', 'manTecDfltAmbient', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + # Adding field 'Experiment.manTecSlope' + db.add_column(u'rundb_experiment', 'manTecSlope', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + # Adding field 'Experiment.manTecMinThreshold' + db.add_column(u'rundb_experiment', 'manTecMinThreshold', + self.gf('django.db.models.fields.FloatField')(default=None, null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Experiment.chipTecDfltAmbient' + db.delete_column(u'rundb_experiment', 'chipTecDfltAmbient') + + # Deleting field 'Experiment.chipTecSlope' + db.delete_column(u'rundb_experiment', 'chipTecSlope') + + # Deleting field 'Experiment.chipTecMinThreshold' + db.delete_column(u'rundb_experiment', 'chipTecMinThreshold') + + # Deleting field 'Experiment.manTecDfltAmbient' + db.delete_column(u'rundb_experiment', 'manTecDfltAmbient') + + # Deleting field 'Experiment.manTecSlope' + db.delete_column(u'rundb_experiment', 'manTecSlope') + + # Deleting field 'Experiment.manTecMinThreshold' + db.delete_column(u'rundb_experiment', 'manTecMinThreshold') + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'rundb.analysisargs': { + 'Meta': {'object_name': 'AnalysisArgs'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'applCategory': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'applGroup': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applGroup_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applType_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.RunType']"}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'chip_default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'created_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'lastModified_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'sequenceKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'templateKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.analysismetrics': { + 'Meta': {'object_name': 'AnalysisMetrics'}, + 'adjusted_addressable': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'amb': ('django.db.models.fields.IntegerField', [], {}), + 'bead': ('django.db.models.fields.IntegerField', [], {}), + 'dud': ('django.db.models.fields.IntegerField', [], {}), + 'empty': ('django.db.models.fields.IntegerField', [], {}), + 'excluded': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ignored': ('django.db.models.fields.IntegerField', [], {}), + 'keypass_all_beads': ('django.db.models.fields.IntegerField', [], {}), + 'lib': ('django.db.models.fields.IntegerField', [], {}), + 'libFinal': ('django.db.models.fields.IntegerField', [], {}), + 'libKp': ('django.db.models.fields.IntegerField', [], {}), + 'libLive': ('django.db.models.fields.IntegerField', [], {}), + 'libMix': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_basecaller': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_cafie': ('django.db.models.fields.IntegerField', [], {}), + 'live': ('django.db.models.fields.IntegerField', [], {}), + 'loading': ('django.db.models.fields.FloatField', [], {'default': '0.0'}), + 'pinned': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'analysismetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysCF': ('django.db.models.fields.FloatField', [], {}), + 'sysDR': ('django.db.models.fields.FloatField', [], {}), + 'sysIE': ('django.db.models.fields.FloatField', [], {}), + 'tf': ('django.db.models.fields.IntegerField', [], {}), + 'tfFinal': ('django.db.models.fields.IntegerField', [], {}), + 'tfKp': ('django.db.models.fields.IntegerField', [], {}), + 'tfLive': ('django.db.models.fields.IntegerField', [], {}), + 'tfMix': ('django.db.models.fields.IntegerField', [], {}), + 'total': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'washout': ('django.db.models.fields.IntegerField', [], {}), + 'washout_ambiguous': ('django.db.models.fields.IntegerField', [], {}), + 'washout_dud': ('django.db.models.fields.IntegerField', [], {}), + 'washout_library': ('django.db.models.fields.IntegerField', [], {}), + 'washout_live': ('django.db.models.fields.IntegerField', [], {}), + 'washout_test_fragment': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.applicationgroup': { + 'Meta': {'object_name': 'ApplicationGroup'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.applproduct': { + 'Meta': {'object_name': 'ApplProduct'}, + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RunType']"}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True', 'blank': 'True'}), + 'barcodeKitSelectableType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'defaultBarcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultChipType': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultControlSeqKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'controlSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultFlowCount': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'flowOrder_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.FlowOrder']"}), + 'defaultGenomeRefName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultHotSpotRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultIonChefPrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefPrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultIonChefSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultLibraryKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'libKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'samplePrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepProtocol': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'common_CV_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.common_CV']"}), + 'defaultSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'seqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultTargetRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultTemplateKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'templateKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'dualBarcodingRule': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isBarcodeKitSelectionRequired': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isControlSeqTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultBarcoded': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultForInstrumentType': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualBarcodingBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualNucleotideTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotSpotBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotspotRegionBEDFileSuppported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isReferenceBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReferenceSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isSamplePrepKitSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetRegionBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSelectionRequiredForRefSelection': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetTechniqueSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'productCode': ('django.db.models.fields.CharField', [], {'default': "'any'", 'unique': 'True', 'max_length': '64'}), + 'productName': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + }, + u'rundb.backup': { + 'Meta': {'object_name': 'Backup'}, + 'backupDate': ('django.db.models.fields.DateTimeField', [], {}), + 'backupName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'backupPath': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Experiment']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isBackedUp': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.chefpcrplateconfig': { + 'Meta': {'object_name': 'ChefPcrPlateconfig'}, + 'confg': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']", 'null': 'True', 'blank': 'True'}) + }, + u'rundb.chip': { + 'Meta': {'object_name': 'Chip'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'earlyDatFileDeletion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'slots': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.common_cv': { + 'Meta': {'unique_together': "(('cv_type', 'value'),)", 'object_name': 'common_CV'}, + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'cv_type': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedValue': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'sequencing_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127'}) + }, + u'rundb.content': { + 'Meta': {'object_name': 'Content'}, + 'application_tags': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'contentupload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.ContentUpload']"}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'extra': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'file': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.Publisher']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.contentupload': { + 'Meta': {'object_name': 'ContentUpload'}, + 'file_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Publisher']", 'null': 'True'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'upload_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'upload_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.cruncher': { + 'Meta': {'object_name': 'Cruncher'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'info': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '8'}) + }, + u'rundb.dmfileset': { + 'Meta': {'object_name': 'DMFileSet'}, + 'auto_action': ('django.db.models.fields.CharField', [], {'default': "'OFF'", 'max_length': '8'}), + 'auto_trigger_age': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'auto_trigger_usage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'backup_directory': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'bandwidth_limit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'del_empty_dir': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'exclude': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'include': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + 'keepwith': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '48'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '8'}) + }, + u'rundb.dmfilestat': { + 'Meta': {'object_name': 'DMFileStat'}, + 'action_state': ('django.db.models.fields.CharField', [], {'default': "'L'", 'max_length': '8'}), + 'archivepath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'diskspace': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), + 'dmfileset': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.DMFileSet']", 'null': 'True', 'blank': 'True'}), + 'files_in_use': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'preserve_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'user_comment': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.dnabarcode': { + 'Meta': {'object_name': 'dnaBarcode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'annotation': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'end_adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'end_sequence': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_str': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'index': ('django.db.models.fields.IntegerField', [], {}), + 'is_end_barcode': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'length': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'score_cutoff': ('django.db.models.fields.FloatField', [], {'default': '0'}), + 'score_mode': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'system': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'type': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.emailaddress': { + 'Meta': {'object_name': 'EmailAddress'}, + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.eventlog': { + 'Meta': {'object_name': 'EventLog'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_eventlog'", 'to': u"orm['contenttypes.ContentType']"}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_pk': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'text': ('django.db.models.fields.TextField', [], {'max_length': '3000'}), + 'username': ('django.db.models.fields.CharField', [], {'default': "'ION'", 'max_length': '32', 'blank': 'True'}) + }, + u'rundb.experiment': { + 'Meta': {'object_name': 'Experiment'}, + 'autoAnalyze': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'baselineRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'chefChipExpiration1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipExpiration2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefEndTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefExtraInfo_1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefExtraInfo_2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefFlexibleWorkflow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefInstrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'chefKitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefLastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefLogPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'chefLotNumber': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefManufactureDate': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefMessage': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'chefOperationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefPackageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefProgress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'chefProtocolDeviationName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'chefReagentID': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefRemainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'chefSamplePos': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefScriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefStartTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'chefTipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chipBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'chipTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {}), + 'date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'displayName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'expCompInfo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expDir': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'flows': ('django.db.models.fields.IntegerField', [], {}), + 'flowsInOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + 'ftpStatus': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'log': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'manTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'pgmName': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'pinnedRepResult': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'plan': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'experiment'", 'unique': 'True', 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'platform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'rawdatastyle': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'reagentBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'repResult': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']", 'blank': 'True', 'unique': 'True'}), + 'resultDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'sequencekitbarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'sequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'star': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'unique': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'user_ack': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '24'}) + }, + u'rundb.experimentanalysissettings': { + 'Meta': {'object_name': 'ExperimentAnalysisSettings'}, + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'barcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'barcodedSamples': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'custom_args': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'endBarcodeKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'eas_set'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isDuplicateReads': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isEditable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isOneTimeOverride': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'libraryKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'libraryKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'selectedPlugins': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'sseBedFile': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'tfKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'threePrimeAdapter': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.filemonitor': { + 'Meta': {'object_name': 'FileMonitor'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_dir': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512'}), + 'md5sum': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '32', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}), + 'progress': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': 'None', 'null': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60'}), + 'tags': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.CharField', [], {'max_length': '2000'}) + }, + u'rundb.fileserver': { + 'Meta': {'object_name': 'FileServer'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'filesPrefix': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'percentfull': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.floworder': { + 'Meta': {'object_name': 'FlowOrder'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'flowOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}) + }, + u'rundb.globalconfig': { + 'Meta': {'object_name': 'GlobalConfig'}, + 'auto_archive_ack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'auto_archive_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'check_news_posts': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'cluster_auto_disable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'default_flow_order': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'default_library_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'default_storage_options': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '500', 'blank': 'True'}), + 'default_test_fragment_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'enable_auto_pkg_dl': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_auto_security': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_compendia_OCP': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_nightly_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_support_upload': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_version_lock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorPlatform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'mark_duplicates': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'plugin_output_folder': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'records_to_display': ('django.db.models.fields.IntegerField', [], {'default': '20', 'blank': 'True'}), + 'sec_update_status': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}), + 'site_name': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'telemetry_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'ts_update_status': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), + 'web_root': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}) + }, + u'rundb.ionmeshnode': { + 'Meta': {'object_name': 'IonMeshNode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'apikey_local': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'apikey_remote': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'system_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '37'}) + }, + u'rundb.kitinfo': { + 'Meta': {'unique_together': "(('kitType', 'name'),)", 'object_name': 'KitInfo'}, + 'applicationType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'cartridgeBetweenUsageAbsoluteMaxDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'cartridgeExpirationDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'chipTypes': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'blank': 'True'}), + 'defaultCartridgeUsageCount': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.FlowOrder']", 'null': 'True', 'blank': 'True'}), + 'defaultThreePrimeAdapter': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.ThreePrimeadapter']", 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '3024', 'blank': 'True'}), + 'flowCount': ('django.db.models.fields.PositiveIntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}) + }, + u'rundb.kitpart': { + 'Meta': {'unique_together': "(('barcode',),)", 'object_name': 'KitPart'}, + 'barcode': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']"}) + }, + u'rundb.libmetrics': { + 'Genome_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Index_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Meta': {'object_name': 'LibMetrics'}, + 'align_sample': ('django.db.models.fields.IntegerField', [], {}), + 'aveKeyCounts': ('django.db.models.fields.FloatField', [], {}), + 'cf': ('django.db.models.fields.FloatField', [], {}), + 'dr': ('django.db.models.fields.FloatField', [], {}), + 'duplicate_reads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'genome': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'genomesize': ('django.db.models.fields.BigIntegerField', [], {}), + 'i100Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ie': ('django.db.models.fields.FloatField', [], {}), + 'q10_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q10_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q10_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q10_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q17_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q20_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q20_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q47_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q47_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q47_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q47_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q7_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q7_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q7_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q7_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'raw_accuracy': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysSNR': ('django.db.models.fields.FloatField', [], {}), + 'totalNumReads': ('django.db.models.fields.IntegerField', [], {}), + 'total_mapped_reads': ('django.db.models.fields.BigIntegerField', [], {}), + 'total_mapped_target_bases': ('django.db.models.fields.BigIntegerField', [], {}) + }, + u'rundb.librarykey': { + 'Meta': {'object_name': 'LibraryKey'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.location': { + 'Meta': {'object_name': 'Location'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'defaultlocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.message': { + 'Meta': {'object_name': 'Message'}, + 'body': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'expires': ('django.db.models.fields.TextField', [], {'default': "'read'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'level': ('django.db.models.fields.IntegerField', [], {'default': '20'}), + 'route': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "'unread'", 'blank': 'True'}), + 'tags': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) + }, + u'rundb.monitordata': { + 'Meta': {'object_name': 'MonitorData'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'treeDat': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.newspost': { + 'Meta': {'object_name': 'NewsPost'}, + 'guid': ('django.db.models.fields.CharField', [], {'max_length': '2083', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'link': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2083', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) + }, + u'rundb.plannedexperiment': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PlannedExperiment'}, + 'adapter': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True'}), + 'autoName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'controlSequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'irworkflow': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'isCustom_kitSettings': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isFavorite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isPlanGroup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReusable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystemDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'latestEAS': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.ExperimentAnalysisSettings']", 'blank': 'True', 'unique': 'True'}), + 'libkit': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPool': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '12', 'null': 'True', 'blank': 'True'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'origin': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pairedEndLibraryAdapterName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'parentPlan': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childPlan_set'", 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'planDisplayedName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planExecuted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'planExecutedDate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'planGUID': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planPGM': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'planShortID': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'planStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'db_index': 'True', 'blank': 'True'}), + 'preAnalysis': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'plans'", 'blank': 'True', 'to': u"orm['rundb.Project']"}), + 'qcValues': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['rundb.QCType']", 'null': 'True', 'through': u"orm['rundb.PlannedExperimentQC']", 'symmetrical': 'False'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'default': "'GENS'", 'max_length': '512', 'db_index': 'True'}), + 'runname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'sampleGrouping': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.SampleGroupType_CV']", 'null': 'True', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'samplePrepProtocol': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'sampleSets': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'plans'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['rundb.SampleSet']"}), + 'sampleTubeLabel': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'templatingKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'templatingKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'usePostBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.plannedexperimentqc': { + 'Meta': {'unique_together': "(('plannedExperiment', 'qcType'),)", 'object_name': 'PlannedExperimentQC'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plannedExperiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.PlannedExperiment']"}), + 'qcType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.QCType']"}), + 'threshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) + }, + u'rundb.plansession': { + 'Meta': {'object_name': 'PlanSession'}, + '_session_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expire_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plan_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.plugin': { + 'Meta': {'unique_together': "(('name', 'version'),)", 'object_name': 'Plugin'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'defaultSelected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorBlock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}), + 'packageName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'db_column': "'packagename'", 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'pluginsettings': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'requires_configuration': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'script': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'userinputfields': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.pluginresult': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PluginResult'}, + 'apikey': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inodes': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + 'plugin': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Plugin']"}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pluginresult_set'", 'to': u"orm['rundb.Results']"}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'store': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'validation_errors': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.pluginresultjob': { + 'Meta': {'object_name': 'PluginResultJob'}, + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'grid_engine_jobid': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plugin_result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'plugin_result_jobs'", 'to': u"orm['rundb.PluginResult']"}), + 'run_level': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '20'}) + }, + u'rundb.project': { + 'Meta': {'object_name': 'Project'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.publisher': { + 'Meta': {'object_name': 'Publisher'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'global_meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.qctype': { + 'Meta': {'object_name': 'QCType'}, + 'defaultThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'maxThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '100'}), + 'minThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'qcName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.qualitymetrics': { + 'Meta': {'object_name': 'QualityMetrics'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'q0_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_150bp_reads': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q0_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q0_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q0_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q17_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_max_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q20_mean_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'qualitymetrics_set'", 'to': u"orm['rundb.Results']"}) + }, + u'rundb.referencegenome': { + 'Meta': {'ordering': "['short_name']", 'object_name': 'ReferenceGenome'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'file_monitor': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identity_hash': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'index_version': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'reference_path': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'short_name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'species': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'verbose_error': ('django.db.models.fields.CharField', [], {'max_length': '3000', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}) + }, + u'rundb.remoteaccount': { + 'Meta': {'object_name': 'RemoteAccount'}, + 'access_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'account_label': ('django.db.models.fields.CharField', [], {'default': "'Unnamed Account'", 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'refresh_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'remote_resource': ('django.db.models.fields.CharField', [], {'max_length': '2048'}), + 'token_expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'user_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}) + }, + u'rundb.reportstorage': { + 'Meta': {'object_name': 'ReportStorage'}, + 'default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'dirPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'webServerPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.results': { + 'Meta': {'object_name': 'Results'}, + 'analysisVersion': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'analysismetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.AnalysisMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'autoExempt': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'eas': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results_set'", 'null': 'True', 'to': u"orm['rundb.ExperimentAnalysisSettings']"}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'results_set'", 'to': u"orm['rundb.Experiment']"}), + 'framesProcessed': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'libmetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.LibMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'log': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'parentIDs': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'parentResult': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childResults_set'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']"}), + 'processedCycles': ('django.db.models.fields.IntegerField', [], {}), + 'processedflows': ('django.db.models.fields.IntegerField', [], {}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'results'", 'symmetrical': 'False', 'to': u"orm['rundb.Project']"}), + 'qualitymetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.QualityMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'reportLink': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'reportStatus': ('django.db.models.fields.CharField', [], {'default': "'Nothing'", 'max_length': '64', 'null': 'True'}), + 'reportstorage': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'storage'", 'null': 'True', 'to': u"orm['rundb.ReportStorage']"}), + 'representative': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'resultsName': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'resultsType': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'runid': ('django.db.models.fields.CharField', [], {'max_length': '10', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'timeToComplete': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.rig': { + 'Meta': {'object_name': 'Rig'}, + 'alarms': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'display_state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'ftppassword': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'ftprootdir': ('django.db.models.fields.CharField', [], {'default': "'results'", 'max_length': '64'}), + 'ftpserver': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '128'}), + 'ftpusername': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'host_address': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'last_clean_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_experiment': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_init_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}), + 'serial': ('django.db.models.fields.CharField', [], {'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'updateCommand': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'updateflag': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'updatehome': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '256'}), + 'version': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.runtype': { + 'Meta': {'object_name': 'RunType'}, + 'alternate_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'applicationGroups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'applications'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'barcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "'dna'", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.sample': { + 'Meta': {'unique_together': "(('name', 'externalId'),)", 'object_name': 'Sample'}, + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'experiments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'samples'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'externalId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.sampleannotation_cv': { + 'Meta': {'object_name': 'SampleAnnotation_CV'}, + 'annotationType': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'sampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'sampleAnnotation_set'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127', 'blank': 'True'}) + }, + u'rundb.sampleattribute': { + 'Meta': {'object_name': 'SampleAttribute'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'dataType': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributes'", 'to': u"orm['rundb.SampleAttributeDataType']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isMandatory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}) + }, + u'rundb.sampleattributedatatype': { + 'Meta': {'object_name': 'SampleAttributeDataType'}, + 'dataType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.sampleattributevalue': { + 'Meta': {'object_name': 'SampleAttributeValue'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributeValues'", 'to': u"orm['rundb.Sample']"}), + 'sampleAttribute': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleAttribute']"}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.samplegrouptype_cv': { + 'Meta': {'object_name': 'SampleGroupType_CV'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.sampleprepdata': { + 'Meta': {'object_name': 'SamplePrepData'}, + 'endTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'instrumentStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'lastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'logPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'operationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'packageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'progress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'reagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'remainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'samplePrepDataType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'scriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'startTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'tipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.sampleset': { + 'Meta': {'object_name': 'SampleSet'}, + 'SampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'additionalCycles': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'combinedLibraryTubeLabel': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'libraryPrepInstrument': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepInstrumentData': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libraryPrepData_sampleSet'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.SamplePrepData']"}), + 'libraryPrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPrepPlateType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepProtocol': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'libraryPrepType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'pcrPlateSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.samplesetitem': { + 'Meta': {'object_name': 'SampleSetItem'}, + 'assayGroup': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'biopsyDays': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}), + 'cancerType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellularityPct': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'controlType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'coupleId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'dnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'startBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'embryoId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'endDnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'endBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'gender': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'mouseStrains': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'panelPoolType': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pcrPlateColumn': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'pcrPlateRow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'population': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'relationshipGroup': ('django.db.models.fields.IntegerField', [], {}), + 'relationshipRole': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'to': u"orm['rundb.Sample']"}), + 'sampleCollectionDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleReceiptDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleSet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleSet']"}), + 'sampleSource': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'tubePosition': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.supportupload': { + 'Meta': {'object_name': 'SupportUpload'}, + 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RemoteAccount']"}), + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''"}), + 'file': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'local_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'ticket_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'ticket_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'ticket_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}) + }, + u'rundb.template': { + 'Meta': {'object_name': 'Template'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isofficial': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'sequence': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'rundb.tfmetrics': { + 'HPAccuracy': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Meta': {'object_name': 'TFMetrics'}, + 'Q10Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q10Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q10ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'Q17Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q17Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q17ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'SysSNR': ('django.db.models.fields.FloatField', [], {}), + 'aveKeyCount': ('django.db.models.fields.FloatField', [], {}), + 'corrHPSNR': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keypass': ('django.db.models.fields.FloatField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'number': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tfmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}) + }, + u'rundb.threeprimeadapter': { + 'Meta': {'object_name': 'ThreePrimeadapter'}, + 'chemistryType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.usereventlog': { + 'Meta': {'object_name': 'UserEventLog'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'upload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['rundb.ContentUpload']"}) + }, + u'rundb.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_read_news_post': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1984, 11, 5, 0, 0)'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '93'}), + 'needs_activation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'note': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'phone_number': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "'user'", 'max_length': '256'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}) + } + } + + complete_apps = ['rundb'] \ No newline at end of file diff --git a/dbReports/iondb/rundb/migrations/0369_auto__add_field_globalconfig_password_max_age__add_field_userprofile_i.py b/dbReports/iondb/rundb/migrations/0369_auto__add_field_globalconfig_password_max_age__add_field_userprofile_i.py new file mode 100644 index 00000000..9c813749 --- /dev/null +++ b/dbReports/iondb/rundb/migrations/0369_auto__add_field_globalconfig_password_max_age__add_field_userprofile_i.py @@ -0,0 +1,1220 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'GlobalConfig.password_max_age' + db.add_column(u'rundb_globalconfig', 'password_max_age', + self.gf('django.db.models.fields.IntegerField')(default=90, blank=True), + keep_default=False) + + # Adding field 'UserProfile.is_password_valid' + db.add_column(u'rundb_userprofile', 'is_password_valid', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding field 'UserProfile.last_password_changed_on' + db.add_column(u'rundb_userprofile', 'last_password_changed_on', + self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(1984, 11, 5, 0, 0)), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'GlobalConfig.password_max_age' + db.delete_column(u'rundb_globalconfig', 'password_max_age') + + # Deleting field 'UserProfile.is_password_valid' + db.delete_column(u'rundb_userprofile', 'is_password_valid') + + # Deleting field 'UserProfile.last_password_changed_on' + db.delete_column(u'rundb_userprofile', 'last_password_changed_on') + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'rundb.analysisargs': { + 'Meta': {'object_name': 'AnalysisArgs'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'applCategory': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'applGroup': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applGroup_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applType_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.RunType']"}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'chip_default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'created_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'lastModified_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'sequenceKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'templateKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.analysismetrics': { + 'Meta': {'object_name': 'AnalysisMetrics'}, + 'adjusted_addressable': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'amb': ('django.db.models.fields.IntegerField', [], {}), + 'bead': ('django.db.models.fields.IntegerField', [], {}), + 'dud': ('django.db.models.fields.IntegerField', [], {}), + 'empty': ('django.db.models.fields.IntegerField', [], {}), + 'excluded': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ignored': ('django.db.models.fields.IntegerField', [], {}), + 'keypass_all_beads': ('django.db.models.fields.IntegerField', [], {}), + 'lib': ('django.db.models.fields.IntegerField', [], {}), + 'libFinal': ('django.db.models.fields.IntegerField', [], {}), + 'libKp': ('django.db.models.fields.IntegerField', [], {}), + 'libLive': ('django.db.models.fields.IntegerField', [], {}), + 'libMix': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_basecaller': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_cafie': ('django.db.models.fields.IntegerField', [], {}), + 'live': ('django.db.models.fields.IntegerField', [], {}), + 'loading': ('django.db.models.fields.FloatField', [], {'default': '0.0'}), + 'pinned': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'analysismetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysCF': ('django.db.models.fields.FloatField', [], {}), + 'sysDR': ('django.db.models.fields.FloatField', [], {}), + 'sysIE': ('django.db.models.fields.FloatField', [], {}), + 'tf': ('django.db.models.fields.IntegerField', [], {}), + 'tfFinal': ('django.db.models.fields.IntegerField', [], {}), + 'tfKp': ('django.db.models.fields.IntegerField', [], {}), + 'tfLive': ('django.db.models.fields.IntegerField', [], {}), + 'tfMix': ('django.db.models.fields.IntegerField', [], {}), + 'total': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'washout': ('django.db.models.fields.IntegerField', [], {}), + 'washout_ambiguous': ('django.db.models.fields.IntegerField', [], {}), + 'washout_dud': ('django.db.models.fields.IntegerField', [], {}), + 'washout_library': ('django.db.models.fields.IntegerField', [], {}), + 'washout_live': ('django.db.models.fields.IntegerField', [], {}), + 'washout_test_fragment': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.applicationgroup': { + 'Meta': {'object_name': 'ApplicationGroup'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.applproduct': { + 'Meta': {'object_name': 'ApplProduct'}, + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RunType']"}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True', 'blank': 'True'}), + 'barcodeKitSelectableType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'defaultBarcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultChipType': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultControlSeqKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'controlSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultFlowCount': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'flowOrder_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.FlowOrder']"}), + 'defaultGenomeRefName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultHotSpotRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultIonChefPrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefPrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultIonChefSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultLibraryKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'libKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'samplePrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepProtocol': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'common_CV_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.common_CV']"}), + 'defaultSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'seqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultTargetRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultTemplateKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'templateKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'dualBarcodingRule': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isBarcodeKitSelectionRequired': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isControlSeqTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultBarcoded': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultForInstrumentType': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualBarcodingBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualNucleotideTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotSpotBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotspotRegionBEDFileSuppported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isReferenceBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReferenceSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isSamplePrepKitSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetRegionBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSelectionRequiredForRefSelection': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetTechniqueSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'productCode': ('django.db.models.fields.CharField', [], {'default': "'any'", 'unique': 'True', 'max_length': '64'}), + 'productName': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + }, + u'rundb.backup': { + 'Meta': {'object_name': 'Backup'}, + 'backupDate': ('django.db.models.fields.DateTimeField', [], {}), + 'backupName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'backupPath': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Experiment']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isBackedUp': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.chefpcrplateconfig': { + 'Meta': {'object_name': 'ChefPcrPlateconfig'}, + 'confg': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']", 'null': 'True', 'blank': 'True'}) + }, + u'rundb.chip': { + 'Meta': {'object_name': 'Chip'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'earlyDatFileDeletion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'slots': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.common_cv': { + 'Meta': {'unique_together': "(('cv_type', 'value'),)", 'object_name': 'common_CV'}, + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'cv_type': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedValue': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'sequencing_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127'}) + }, + u'rundb.content': { + 'Meta': {'object_name': 'Content'}, + 'application_tags': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'contentupload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.ContentUpload']"}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'extra': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'file': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.Publisher']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.contentupload': { + 'Meta': {'object_name': 'ContentUpload'}, + 'file_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Publisher']", 'null': 'True'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'upload_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'upload_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.cruncher': { + 'Meta': {'object_name': 'Cruncher'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'info': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '8'}) + }, + u'rundb.dmfileset': { + 'Meta': {'object_name': 'DMFileSet'}, + 'auto_action': ('django.db.models.fields.CharField', [], {'default': "'OFF'", 'max_length': '8'}), + 'auto_trigger_age': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'auto_trigger_usage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'backup_directory': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'bandwidth_limit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'del_empty_dir': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'exclude': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'include': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + 'keepwith': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '48'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '8'}) + }, + u'rundb.dmfilestat': { + 'Meta': {'object_name': 'DMFileStat'}, + 'action_state': ('django.db.models.fields.CharField', [], {'default': "'L'", 'max_length': '8'}), + 'archivepath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'diskspace': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), + 'dmfileset': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.DMFileSet']", 'null': 'True', 'blank': 'True'}), + 'files_in_use': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'preserve_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'user_comment': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.dnabarcode': { + 'Meta': {'object_name': 'dnaBarcode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'annotation': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'end_adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'end_sequence': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_str': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'index': ('django.db.models.fields.IntegerField', [], {}), + 'is_end_barcode': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'length': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'score_cutoff': ('django.db.models.fields.FloatField', [], {'default': '0'}), + 'score_mode': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'system': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'type': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.emailaddress': { + 'Meta': {'object_name': 'EmailAddress'}, + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.eventlog': { + 'Meta': {'object_name': 'EventLog'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_eventlog'", 'to': u"orm['contenttypes.ContentType']"}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_pk': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'text': ('django.db.models.fields.TextField', [], {'max_length': '3000'}), + 'username': ('django.db.models.fields.CharField', [], {'default': "'ION'", 'max_length': '32', 'blank': 'True'}) + }, + u'rundb.experiment': { + 'Meta': {'object_name': 'Experiment'}, + 'autoAnalyze': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'baselineRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'chefChipExpiration1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipExpiration2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefEndTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefExtraInfo_1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefExtraInfo_2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefFlexibleWorkflow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefInstrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'chefKitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefLastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefLogPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'chefLotNumber': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefManufactureDate': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefMessage': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'chefOperationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefPackageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefProgress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'chefProtocolDeviationName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'chefReagentID': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefRemainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'chefSamplePos': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefScriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefStartTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'chefTipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chipBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'chipTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {}), + 'date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'displayName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'expCompInfo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expDir': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'flows': ('django.db.models.fields.IntegerField', [], {}), + 'flowsInOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + 'ftpStatus': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'log': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'manTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'pgmName': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'pinnedRepResult': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'plan': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'experiment'", 'unique': 'True', 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'platform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'rawdatastyle': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'reagentBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'repResult': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']", 'blank': 'True', 'unique': 'True'}), + 'resultDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'sequencekitbarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'sequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'star': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'unique': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'user_ack': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '24'}) + }, + u'rundb.experimentanalysissettings': { + 'Meta': {'object_name': 'ExperimentAnalysisSettings'}, + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'barcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'barcodedSamples': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'custom_args': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'endBarcodeKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'eas_set'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isDuplicateReads': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isEditable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isOneTimeOverride': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'libraryKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'libraryKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'selectedPlugins': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'sseBedFile': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'tfKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'threePrimeAdapter': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.filemonitor': { + 'Meta': {'object_name': 'FileMonitor'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_dir': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512'}), + 'md5sum': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '32', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}), + 'progress': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': 'None', 'null': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60'}), + 'tags': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.CharField', [], {'max_length': '2000'}) + }, + u'rundb.fileserver': { + 'Meta': {'object_name': 'FileServer'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'filesPrefix': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'percentfull': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.floworder': { + 'Meta': {'object_name': 'FlowOrder'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'flowOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}) + }, + u'rundb.globalconfig': { + 'Meta': {'object_name': 'GlobalConfig'}, + 'auto_archive_ack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'auto_archive_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'check_news_posts': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'cluster_auto_disable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'default_flow_order': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'default_library_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'default_storage_options': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '500', 'blank': 'True'}), + 'default_test_fragment_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'enable_auto_pkg_dl': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_auto_security': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_compendia_OCP': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_nightly_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_support_upload': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_version_lock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorPlatform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'mark_duplicates': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'password_max_age': ('django.db.models.fields.IntegerField', [], {'default': '90', 'blank': 'True'}), + 'plugin_output_folder': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'records_to_display': ('django.db.models.fields.IntegerField', [], {'default': '20', 'blank': 'True'}), + 'sec_update_status': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}), + 'site_name': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'telemetry_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'ts_update_status': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), + 'web_root': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}) + }, + u'rundb.ionmeshnode': { + 'Meta': {'object_name': 'IonMeshNode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'apikey_local': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'apikey_remote': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'system_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '37'}) + }, + u'rundb.kitinfo': { + 'Meta': {'unique_together': "(('kitType', 'name'),)", 'object_name': 'KitInfo'}, + 'applicationType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'cartridgeBetweenUsageAbsoluteMaxDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'cartridgeExpirationDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'chipTypes': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'blank': 'True'}), + 'defaultCartridgeUsageCount': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.FlowOrder']", 'null': 'True', 'blank': 'True'}), + 'defaultThreePrimeAdapter': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.ThreePrimeadapter']", 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '3024', 'blank': 'True'}), + 'flowCount': ('django.db.models.fields.PositiveIntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}) + }, + u'rundb.kitpart': { + 'Meta': {'unique_together': "(('barcode',),)", 'object_name': 'KitPart'}, + 'barcode': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']"}) + }, + u'rundb.libmetrics': { + 'Genome_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Index_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Meta': {'object_name': 'LibMetrics'}, + 'align_sample': ('django.db.models.fields.IntegerField', [], {}), + 'aveKeyCounts': ('django.db.models.fields.FloatField', [], {}), + 'cf': ('django.db.models.fields.FloatField', [], {}), + 'dr': ('django.db.models.fields.FloatField', [], {}), + 'duplicate_reads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'genome': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'genomesize': ('django.db.models.fields.BigIntegerField', [], {}), + 'i100Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ie': ('django.db.models.fields.FloatField', [], {}), + 'q10_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q10_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q10_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q10_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q17_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q20_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q20_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q47_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q47_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q47_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q47_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q7_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q7_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q7_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q7_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'raw_accuracy': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysSNR': ('django.db.models.fields.FloatField', [], {}), + 'totalNumReads': ('django.db.models.fields.IntegerField', [], {}), + 'total_mapped_reads': ('django.db.models.fields.BigIntegerField', [], {}), + 'total_mapped_target_bases': ('django.db.models.fields.BigIntegerField', [], {}) + }, + u'rundb.librarykey': { + 'Meta': {'object_name': 'LibraryKey'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.location': { + 'Meta': {'object_name': 'Location'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'defaultlocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.message': { + 'Meta': {'object_name': 'Message'}, + 'body': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'expires': ('django.db.models.fields.TextField', [], {'default': "'read'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'level': ('django.db.models.fields.IntegerField', [], {'default': '20'}), + 'route': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "'unread'", 'blank': 'True'}), + 'tags': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) + }, + u'rundb.monitordata': { + 'Meta': {'object_name': 'MonitorData'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'treeDat': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.newspost': { + 'Meta': {'object_name': 'NewsPost'}, + 'guid': ('django.db.models.fields.CharField', [], {'max_length': '2083', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'link': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2083', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) + }, + u'rundb.plannedexperiment': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PlannedExperiment'}, + 'adapter': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True'}), + 'autoName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'controlSequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'irworkflow': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'isCustom_kitSettings': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isFavorite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isPlanGroup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReusable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystemDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'latestEAS': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.ExperimentAnalysisSettings']", 'blank': 'True', 'unique': 'True'}), + 'libkit': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPool': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '12', 'null': 'True', 'blank': 'True'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'origin': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pairedEndLibraryAdapterName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'parentPlan': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childPlan_set'", 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'planDisplayedName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planExecuted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'planExecutedDate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'planGUID': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planPGM': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'planShortID': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'planStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'db_index': 'True', 'blank': 'True'}), + 'preAnalysis': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'plans'", 'blank': 'True', 'to': u"orm['rundb.Project']"}), + 'qcValues': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['rundb.QCType']", 'null': 'True', 'through': u"orm['rundb.PlannedExperimentQC']", 'symmetrical': 'False'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'default': "'GENS'", 'max_length': '512', 'db_index': 'True'}), + 'runname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'sampleGrouping': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.SampleGroupType_CV']", 'null': 'True', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'samplePrepProtocol': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'sampleSets': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'plans'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['rundb.SampleSet']"}), + 'sampleTubeLabel': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'templatingKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'templatingKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'usePostBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.plannedexperimentqc': { + 'Meta': {'unique_together': "(('plannedExperiment', 'qcType'),)", 'object_name': 'PlannedExperimentQC'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plannedExperiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.PlannedExperiment']"}), + 'qcType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.QCType']"}), + 'threshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) + }, + u'rundb.plansession': { + 'Meta': {'object_name': 'PlanSession'}, + '_session_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expire_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plan_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.plugin': { + 'Meta': {'unique_together': "(('name', 'version'),)", 'object_name': 'Plugin'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'defaultSelected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorBlock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}), + 'packageName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'db_column': "'packagename'", 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'pluginsettings': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'requires_configuration': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'script': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'userinputfields': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.pluginresult': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PluginResult'}, + 'apikey': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inodes': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + 'plugin': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Plugin']"}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pluginresult_set'", 'to': u"orm['rundb.Results']"}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'store': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'validation_errors': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.pluginresultjob': { + 'Meta': {'object_name': 'PluginResultJob'}, + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'grid_engine_jobid': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plugin_result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'plugin_result_jobs'", 'to': u"orm['rundb.PluginResult']"}), + 'run_level': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '20'}) + }, + u'rundb.project': { + 'Meta': {'object_name': 'Project'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.publisher': { + 'Meta': {'object_name': 'Publisher'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'global_meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.qctype': { + 'Meta': {'object_name': 'QCType'}, + 'defaultThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'maxThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '100'}), + 'minThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'qcName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.qualitymetrics': { + 'Meta': {'object_name': 'QualityMetrics'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'q0_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_150bp_reads': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q0_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q0_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q0_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q17_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_max_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q20_mean_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'qualitymetrics_set'", 'to': u"orm['rundb.Results']"}) + }, + u'rundb.referencegenome': { + 'Meta': {'ordering': "['short_name']", 'object_name': 'ReferenceGenome'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'file_monitor': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identity_hash': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'index_version': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'reference_path': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'short_name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'species': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'verbose_error': ('django.db.models.fields.CharField', [], {'max_length': '3000', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}) + }, + u'rundb.remoteaccount': { + 'Meta': {'object_name': 'RemoteAccount'}, + 'access_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'account_label': ('django.db.models.fields.CharField', [], {'default': "'Unnamed Account'", 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'refresh_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'remote_resource': ('django.db.models.fields.CharField', [], {'max_length': '2048'}), + 'token_expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'user_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}) + }, + u'rundb.reportstorage': { + 'Meta': {'object_name': 'ReportStorage'}, + 'default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'dirPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'webServerPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.results': { + 'Meta': {'object_name': 'Results'}, + 'analysisVersion': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'analysismetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.AnalysisMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'autoExempt': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'eas': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results_set'", 'null': 'True', 'to': u"orm['rundb.ExperimentAnalysisSettings']"}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'results_set'", 'to': u"orm['rundb.Experiment']"}), + 'framesProcessed': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'libmetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.LibMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'log': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'parentIDs': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'parentResult': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childResults_set'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']"}), + 'processedCycles': ('django.db.models.fields.IntegerField', [], {}), + 'processedflows': ('django.db.models.fields.IntegerField', [], {}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'results'", 'symmetrical': 'False', 'to': u"orm['rundb.Project']"}), + 'qualitymetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.QualityMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'reportLink': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'reportStatus': ('django.db.models.fields.CharField', [], {'default': "'Nothing'", 'max_length': '64', 'null': 'True'}), + 'reportstorage': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'storage'", 'null': 'True', 'to': u"orm['rundb.ReportStorage']"}), + 'representative': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'resultsName': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'resultsType': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'runid': ('django.db.models.fields.CharField', [], {'max_length': '10', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'timeToComplete': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.rig': { + 'Meta': {'object_name': 'Rig'}, + 'alarms': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'display_state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'ftppassword': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'ftprootdir': ('django.db.models.fields.CharField', [], {'default': "'results'", 'max_length': '64'}), + 'ftpserver': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '128'}), + 'ftpusername': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'host_address': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'last_clean_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_experiment': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_init_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}), + 'serial': ('django.db.models.fields.CharField', [], {'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'updateCommand': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'updateflag': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'updatehome': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '256'}), + 'version': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.runtype': { + 'Meta': {'object_name': 'RunType'}, + 'alternate_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'applicationGroups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'applications'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'barcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "'dna'", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.sample': { + 'Meta': {'unique_together': "(('name', 'externalId'),)", 'object_name': 'Sample'}, + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'experiments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'samples'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'externalId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.sampleannotation_cv': { + 'Meta': {'object_name': 'SampleAnnotation_CV'}, + 'annotationType': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'sampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'sampleAnnotation_set'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127', 'blank': 'True'}) + }, + u'rundb.sampleattribute': { + 'Meta': {'object_name': 'SampleAttribute'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'dataType': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributes'", 'to': u"orm['rundb.SampleAttributeDataType']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isMandatory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}) + }, + u'rundb.sampleattributedatatype': { + 'Meta': {'object_name': 'SampleAttributeDataType'}, + 'dataType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.sampleattributevalue': { + 'Meta': {'object_name': 'SampleAttributeValue'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributeValues'", 'to': u"orm['rundb.Sample']"}), + 'sampleAttribute': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleAttribute']"}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.samplegrouptype_cv': { + 'Meta': {'object_name': 'SampleGroupType_CV'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.sampleprepdata': { + 'Meta': {'object_name': 'SamplePrepData'}, + 'endTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'instrumentStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'lastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'logPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'operationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'packageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'progress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'reagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'remainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'samplePrepDataType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'scriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'startTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'tipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.sampleset': { + 'Meta': {'object_name': 'SampleSet'}, + 'SampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'additionalCycles': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'combinedLibraryTubeLabel': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'libraryPrepInstrument': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepInstrumentData': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libraryPrepData_sampleSet'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.SamplePrepData']"}), + 'libraryPrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPrepPlateType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepProtocol': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'libraryPrepType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'pcrPlateSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.samplesetitem': { + 'Meta': {'object_name': 'SampleSetItem'}, + 'assayGroup': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'biopsyDays': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}), + 'cancerType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellularityPct': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'controlType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'coupleId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'dnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'startBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'embryoId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'endDnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'endBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'gender': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'mouseStrains': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'panelPoolType': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pcrPlateColumn': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'pcrPlateRow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'population': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'relationshipGroup': ('django.db.models.fields.IntegerField', [], {}), + 'relationshipRole': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'to': u"orm['rundb.Sample']"}), + 'sampleCollectionDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleReceiptDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleSet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleSet']"}), + 'sampleSource': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'tubePosition': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.supportupload': { + 'Meta': {'object_name': 'SupportUpload'}, + 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RemoteAccount']"}), + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''"}), + 'file': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'local_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'ticket_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'ticket_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'ticket_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}) + }, + u'rundb.template': { + 'Meta': {'object_name': 'Template'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isofficial': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'sequence': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'rundb.tfmetrics': { + 'HPAccuracy': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Meta': {'object_name': 'TFMetrics'}, + 'Q10Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q10Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q10ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'Q17Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q17Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q17ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'SysSNR': ('django.db.models.fields.FloatField', [], {}), + 'aveKeyCount': ('django.db.models.fields.FloatField', [], {}), + 'corrHPSNR': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keypass': ('django.db.models.fields.FloatField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'number': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tfmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}) + }, + u'rundb.threeprimeadapter': { + 'Meta': {'object_name': 'ThreePrimeadapter'}, + 'chemistryType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.usereventlog': { + 'Meta': {'object_name': 'UserEventLog'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'upload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['rundb.ContentUpload']"}) + }, + u'rundb.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_password_valid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_password_changed_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1984, 11, 5, 0, 0)'}), + 'last_read_news_post': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1984, 11, 5, 0, 0)'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '93'}), + 'needs_activation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'note': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'phone_number': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "'user'", 'max_length': '256'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}) + } + } + + complete_apps = ['rundb'] \ No newline at end of file diff --git a/dbReports/iondb/rundb/migrations/0369_auto__chg_field_plannedexperiment_categories.py b/dbReports/iondb/rundb/migrations/0369_auto__chg_field_plannedexperiment_categories.py new file mode 100644 index 00000000..4b5467ff --- /dev/null +++ b/dbReports/iondb/rundb/migrations/0369_auto__chg_field_plannedexperiment_categories.py @@ -0,0 +1,1199 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'PlannedExperiment.categories' + db.alter_column(u'rundb_plannedexperiment', 'categories', self.gf('django.db.models.fields.CharField')(max_length=256, null=True)) + + def backwards(self, orm): + + # Changing field 'PlannedExperiment.categories' + db.alter_column(u'rundb_plannedexperiment', 'categories', self.gf('django.db.models.fields.CharField')(max_length=64, null=True)) + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'rundb.analysisargs': { + 'Meta': {'object_name': 'AnalysisArgs'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'applCategory': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'applGroup': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applGroup_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'applType_analysisArgs'", 'null': 'True', 'to': u"orm['rundb.RunType']"}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'chip_default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'created_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'lastModified_analysisArgs'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'sequenceKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'templateKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.analysismetrics': { + 'Meta': {'object_name': 'AnalysisMetrics'}, + 'adjusted_addressable': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'amb': ('django.db.models.fields.IntegerField', [], {}), + 'bead': ('django.db.models.fields.IntegerField', [], {}), + 'dud': ('django.db.models.fields.IntegerField', [], {}), + 'empty': ('django.db.models.fields.IntegerField', [], {}), + 'excluded': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ignored': ('django.db.models.fields.IntegerField', [], {}), + 'keypass_all_beads': ('django.db.models.fields.IntegerField', [], {}), + 'lib': ('django.db.models.fields.IntegerField', [], {}), + 'libFinal': ('django.db.models.fields.IntegerField', [], {}), + 'libKp': ('django.db.models.fields.IntegerField', [], {}), + 'libLive': ('django.db.models.fields.IntegerField', [], {}), + 'libMix': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_basecaller': ('django.db.models.fields.IntegerField', [], {}), + 'lib_pass_cafie': ('django.db.models.fields.IntegerField', [], {}), + 'live': ('django.db.models.fields.IntegerField', [], {}), + 'loading': ('django.db.models.fields.FloatField', [], {'default': '0.0'}), + 'pinned': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'analysismetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysCF': ('django.db.models.fields.FloatField', [], {}), + 'sysDR': ('django.db.models.fields.FloatField', [], {}), + 'sysIE': ('django.db.models.fields.FloatField', [], {}), + 'tf': ('django.db.models.fields.IntegerField', [], {}), + 'tfFinal': ('django.db.models.fields.IntegerField', [], {}), + 'tfKp': ('django.db.models.fields.IntegerField', [], {}), + 'tfLive': ('django.db.models.fields.IntegerField', [], {}), + 'tfMix': ('django.db.models.fields.IntegerField', [], {}), + 'total': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'washout': ('django.db.models.fields.IntegerField', [], {}), + 'washout_ambiguous': ('django.db.models.fields.IntegerField', [], {}), + 'washout_dud': ('django.db.models.fields.IntegerField', [], {}), + 'washout_library': ('django.db.models.fields.IntegerField', [], {}), + 'washout_live': ('django.db.models.fields.IntegerField', [], {}), + 'washout_test_fragment': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.applicationgroup': { + 'Meta': {'object_name': 'ApplicationGroup'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.applproduct': { + 'Meta': {'object_name': 'ApplProduct'}, + 'applType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RunType']"}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True', 'blank': 'True'}), + 'barcodeKitSelectableType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'defaultBarcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultChipType': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'defaultControlSeqKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'controlSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultFlowCount': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'flowOrder_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.FlowOrder']"}), + 'defaultGenomeRefName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultHotSpotRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultIonChefPrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefPrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultIonChefSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'ionChefSeqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultLibraryKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'libKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'samplePrepKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultSamplePrepProtocol': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'common_CV_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.common_CV']"}), + 'defaultSequencingKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'seqKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'defaultTargetRegionBedFileName': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'defaultTemplateKit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'templateKit_applProduct_set'", 'null': 'True', 'to': u"orm['rundb.KitInfo']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'dualBarcodingRule': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isBarcodeKitSelectionRequired': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isControlSeqTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultBarcoded': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDefaultForInstrumentType': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualBarcodingBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isDualNucleotideTypeBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotSpotBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isHotspotRegionBEDFileSuppported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isReferenceBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReferenceSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isSamplePrepKitSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetRegionBEDFileBySampleSupported': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSelectionRequiredForRefSelection': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isTargetRegionBEDFileSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isTargetTechniqueSelectionSupported': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'productCode': ('django.db.models.fields.CharField', [], {'default': "'any'", 'unique': 'True', 'max_length': '64'}), + 'productName': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + }, + u'rundb.backup': { + 'Meta': {'object_name': 'Backup'}, + 'backupDate': ('django.db.models.fields.DateTimeField', [], {}), + 'backupName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'backupPath': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Experiment']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isBackedUp': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.chefpcrplateconfig': { + 'Meta': {'object_name': 'ChefPcrPlateconfig'}, + 'confg': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']", 'null': 'True', 'blank': 'True'}) + }, + u'rundb.chip': { + 'Meta': {'object_name': 'Chip'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'earlyDatFileDeletion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'slots': ('django.db.models.fields.IntegerField', [], {}) + }, + u'rundb.common_cv': { + 'Meta': {'unique_together': "(('cv_type', 'value'),)", 'object_name': 'common_CV'}, + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'cv_type': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedValue': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isVisible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'sequencing_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127'}) + }, + u'rundb.content': { + 'Meta': {'object_name': 'Content'}, + 'application_tags': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'contentupload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.ContentUpload']"}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'extra': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'file': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'contents'", 'to': u"orm['rundb.Publisher']"}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.contentupload': { + 'Meta': {'object_name': 'ContentUpload'}, + 'file_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'publisher': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Publisher']", 'null': 'True'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'upload_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'upload_type': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}) + }, + u'rundb.cruncher': { + 'Meta': {'object_name': 'Cruncher'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'info': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '8'}) + }, + u'rundb.dmfileset': { + 'Meta': {'object_name': 'DMFileSet'}, + 'auto_action': ('django.db.models.fields.CharField', [], {'default': "'OFF'", 'max_length': '8'}), + 'auto_trigger_age': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'auto_trigger_usage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'backup_directory': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'bandwidth_limit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'del_empty_dir': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'exclude': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'include': ('iondb.rundb.separatedValuesField.SeparatedValuesField', [], {'null': 'True', 'blank': 'True'}), + 'keepwith': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '48'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '8'}) + }, + u'rundb.dmfilestat': { + 'Meta': {'object_name': 'DMFileStat'}, + 'action_state': ('django.db.models.fields.CharField', [], {'default': "'L'", 'max_length': '8'}), + 'archivepath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'diskspace': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), + 'dmfileset': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.DMFileSet']", 'null': 'True', 'blank': 'True'}), + 'files_in_use': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'preserve_data': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'user_comment': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.dnabarcode': { + 'Meta': {'object_name': 'dnaBarcode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'annotation': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'end_adapter': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'end_sequence': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'id_str': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'index': ('django.db.models.fields.IntegerField', [], {}), + 'is_end_barcode': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'length': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'score_cutoff': ('django.db.models.fields.FloatField', [], {'default': '0'}), + 'score_mode': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'system': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'type': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.emailaddress': { + 'Meta': {'object_name': 'EmailAddress'}, + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}) + }, + u'rundb.eventlog': { + 'Meta': {'object_name': 'EventLog'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_eventlog'", 'to': u"orm['contenttypes.ContentType']"}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_pk': ('django.db.models.fields.PositiveIntegerField', [], {}), + 'text': ('django.db.models.fields.TextField', [], {'max_length': '3000'}), + 'username': ('django.db.models.fields.CharField', [], {'default': "'ION'", 'max_length': '32', 'blank': 'True'}) + }, + u'rundb.experiment': { + 'Meta': {'object_name': 'Experiment'}, + 'autoAnalyze': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'baselineRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'chefChipExpiration1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipExpiration2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefChipType2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefEndTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefExtraInfo_1': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefExtraInfo_2': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'chefFlexibleWorkflow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefInstrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'chefKitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefLastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefLogPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'chefLotNumber': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefManufactureDate': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefMessage': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'chefOperationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefPackageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefProgress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'chefProtocolDeviationName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'chefReagentID': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefReagentsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefRemainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'chefSamplePos': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefScriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chefSolutionsSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}), + 'chefStartTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'chefStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'chefTipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'chipBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'chipTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'chipType': ('django.db.models.fields.CharField', [], {'max_length': '32'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {}), + 'date': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'displayName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'expCompInfo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expDir': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'flows': ('django.db.models.fields.IntegerField', [], {}), + 'flowsInOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + 'ftpStatus': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'log': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'manTecDfltAmbient': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecMinThreshold': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'manTecSlope': ('django.db.models.fields.FloatField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'notes': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'pgmName': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'pinnedRepResult': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'plan': ('django.db.models.fields.related.OneToOneField', [], {'blank': 'True', 'related_name': "'experiment'", 'unique': 'True', 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'platform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'rawdatastyle': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'reagentBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'repResult': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']", 'blank': 'True', 'unique': 'True'}), + 'resultDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'sequencekitbarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'sequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'star': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'unique': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'user_ack': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '24'}) + }, + u'rundb.experimentanalysissettings': { + 'Meta': {'object_name': 'ExperimentAnalysisSettings'}, + 'alignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'analysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'barcodeKitName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'barcodedSamples': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'basecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'beadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'calibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'custom_args': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'endBarcodeKitName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'eas_set'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'isDuplicateReads': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isEditable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isOneTimeOverride': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'libraryKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'libraryKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_hotSpotRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'mixedTypeRNA_targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'prebasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'prethumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'selectedPlugins': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'sseBedFile': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'targetRegionBedFile': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'tfKey': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'threePrimeAdapter': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'thumbnailalignmentargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailanalysisargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbasecallerargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailbeadfindargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailcalibrateargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}), + 'thumbnailionstatsargs': ('django.db.models.fields.CharField', [], {'max_length': '5000', 'blank': 'True'}) + }, + u'rundb.filemonitor': { + 'Meta': {'object_name': 'FileMonitor'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_dir': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512'}), + 'md5sum': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '32', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}), + 'progress': ('django.db.models.fields.BigIntegerField', [], {'default': '0'}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': 'None', 'null': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60'}), + 'tags': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.CharField', [], {'max_length': '2000'}) + }, + u'rundb.fileserver': { + 'Meta': {'object_name': 'FileServer'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'filesPrefix': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'percentfull': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.floworder': { + 'Meta': {'object_name': 'FlowOrder'}, + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128', 'blank': 'True'}), + 'flowOrder': ('django.db.models.fields.CharField', [], {'max_length': '1200', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}) + }, + u'rundb.globalconfig': { + 'Meta': {'object_name': 'GlobalConfig'}, + 'auto_archive_ack': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'auto_archive_enable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_recalibration_mode': ('django.db.models.fields.CharField', [], {'default': "'standard_recal'", 'max_length': '64'}), + 'check_news_posts': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'cluster_auto_disable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'default_flow_order': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), + 'default_library_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'default_storage_options': ('django.db.models.fields.CharField', [], {'default': "'D'", 'max_length': '500', 'blank': 'True'}), + 'default_test_fragment_key': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'enable_auto_pkg_dl': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_auto_security': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_compendia_OCP': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_nightly_email': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'enable_support_upload': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_version_lock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorPlatform': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'mark_duplicates': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'plugin_output_folder': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'realign': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'records_to_display': ('django.db.models.fields.IntegerField', [], {'default': '20', 'blank': 'True'}), + 'sec_update_status': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {}), + 'site_name': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}), + 'telemetry_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'ts_update_status': ('django.db.models.fields.CharField', [], {'max_length': '256', 'blank': 'True'}), + 'web_root': ('django.db.models.fields.CharField', [], {'max_length': '500', 'blank': 'True'}) + }, + u'rundb.ionmeshnode': { + 'Meta': {'object_name': 'IonMeshNode'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'apikey_local': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'apikey_remote': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'system_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '37'}) + }, + u'rundb.kitinfo': { + 'Meta': {'unique_together': "(('kitType', 'name'),)", 'object_name': 'KitInfo'}, + 'applicationType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'cartridgeBetweenUsageAbsoluteMaxDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'cartridgeExpirationDayLimit': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'chipTypes': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'blank': 'True'}), + 'defaultCartridgeUsageCount': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'defaultFlowOrder': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.FlowOrder']", 'null': 'True', 'blank': 'True'}), + 'defaultThreePrimeAdapter': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.ThreePrimeadapter']", 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '3024', 'blank': 'True'}), + 'flowCount': ('django.db.models.fields.PositiveIntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'samplePrep_instrumentType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}) + }, + u'rundb.kitpart': { + 'Meta': {'unique_together': "(('barcode',),)", 'object_name': 'KitPart'}, + 'barcode': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kit': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.KitInfo']"}) + }, + u'rundb.libmetrics': { + 'Genome_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Index_Version': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'Meta': {'object_name': 'LibMetrics'}, + 'align_sample': ('django.db.models.fields.IntegerField', [], {}), + 'aveKeyCounts': ('django.db.models.fields.FloatField', [], {}), + 'cf': ('django.db.models.fields.FloatField', [], {}), + 'dr': ('django.db.models.fields.FloatField', [], {}), + 'duplicate_reads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'genome': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'genomesize': ('django.db.models.fields.BigIntegerField', [], {}), + 'i100Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i100Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i150Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i200Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i250Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i300Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i350Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i400Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i450Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i500Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i50Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i550Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q10_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q47_reads': ('django.db.models.fields.IntegerField', [], {}), + 'i600Q7_reads': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ie': ('django.db.models.fields.FloatField', [], {}), + 'q10_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q10_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q10_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q10_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q17_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q20_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q20_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q47_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q47_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q47_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q47_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'q7_alignments': ('django.db.models.fields.IntegerField', [], {}), + 'q7_longest_alignment': ('django.db.models.fields.IntegerField', [], {}), + 'q7_mapped_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q7_mean_alignment_length': ('django.db.models.fields.IntegerField', [], {}), + 'raw_accuracy': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sysSNR': ('django.db.models.fields.FloatField', [], {}), + 'totalNumReads': ('django.db.models.fields.IntegerField', [], {}), + 'total_mapped_reads': ('django.db.models.fields.BigIntegerField', [], {}), + 'total_mapped_target_bases': ('django.db.models.fields.BigIntegerField', [], {}) + }, + u'rundb.librarykey': { + 'Meta': {'object_name': 'LibraryKey'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.location': { + 'Meta': {'object_name': 'Location'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'defaultlocation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.message': { + 'Meta': {'object_name': 'Message'}, + 'body': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'expires': ('django.db.models.fields.TextField', [], {'default': "'read'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'level': ('django.db.models.fields.IntegerField', [], {'default': '20'}), + 'route': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "'unread'", 'blank': 'True'}), + 'tags': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}) + }, + u'rundb.monitordata': { + 'Meta': {'object_name': 'MonitorData'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '128'}), + 'treeDat': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.newspost': { + 'Meta': {'object_name': 'NewsPost'}, + 'guid': ('django.db.models.fields.CharField', [], {'max_length': '2083', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'link': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2083', 'blank': 'True'}), + 'summary': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}) + }, + u'rundb.plannedexperiment': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PlannedExperiment'}, + 'adapter': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'applicationGroup': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.ApplicationGroup']", 'null': 'True'}), + 'autoName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'controlSequencekitname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'cycles': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'expName': ('django.db.models.fields.CharField', [], {'max_length': '128', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'irworkflow': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'isCustom_kitSettings': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isFavorite': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isPlanGroup': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isReusable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}), + 'isReverseRun': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystem': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'isSystemDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'latestEAS': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.ExperimentAnalysisSettings']", 'blank': 'True', 'unique': 'True'}), + 'libkit': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPool': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '12', 'null': 'True', 'blank': 'True'}), + 'libraryReadLength': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'origin': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pairedEndLibraryAdapterName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'parentPlan': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childPlan_set'", 'null': 'True', 'to': u"orm['rundb.PlannedExperiment']"}), + 'planDisplayedName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planExecuted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'planExecutedDate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'planGUID': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'planPGM': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'planShortID': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'planStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'db_index': 'True', 'blank': 'True'}), + 'preAnalysis': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'plans'", 'blank': 'True', 'to': u"orm['rundb.Project']"}), + 'qcValues': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['rundb.QCType']", 'null': 'True', 'through': u"orm['rundb.PlannedExperimentQC']", 'symmetrical': 'False'}), + 'reverse_primer': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'default': "'GENS'", 'max_length': '512', 'db_index': 'True'}), + 'runname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'sampleGrouping': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['rundb.SampleGroupType_CV']", 'null': 'True', 'blank': 'True'}), + 'samplePrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'samplePrepProtocol': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'sampleSets': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'plans'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['rundb.SampleSet']"}), + 'sampleTubeLabel': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'seqKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'storageHost': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'storage_options': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '200'}), + 'templatingKitBarcode': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'templatingKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'usePostBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'usePreBeadfind': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.plannedexperimentqc': { + 'Meta': {'unique_together': "(('plannedExperiment', 'qcType'),)", 'object_name': 'PlannedExperimentQC'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plannedExperiment': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.PlannedExperiment']"}), + 'qcType': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.QCType']"}), + 'threshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}) + }, + u'rundb.plansession': { + 'Meta': {'object_name': 'PlanSession'}, + '_session_data': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'expire_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plan_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.plugin': { + 'Meta': {'unique_together': "(('name', 'version'),)", 'object_name': 'Plugin'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'defaultSelected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'majorBlock': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}), + 'packageName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'db_column': "'packagename'", 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}), + 'pluginsettings': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'requires_configuration': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'script': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'selected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'status': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'userinputfields': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'null': 'True', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.pluginresult': { + 'Meta': {'ordering': "['-id']", 'object_name': 'PluginResult'}, + 'apikey': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'inodes': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + 'plugin': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Plugin']"}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pluginresult_set'", 'to': u"orm['rundb.Results']"}), + 'size': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'store': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'validation_errors': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.pluginresultjob': { + 'Meta': {'object_name': 'PluginResultJob'}, + 'config': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'endtime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'grid_engine_jobid': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'plugin_result': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'plugin_result_jobs'", 'to': u"orm['rundb.PluginResult']"}), + 'run_level': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'starttime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '20'}) + }, + u'rundb.project': { + 'Meta': {'object_name': 'Project'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.publisher': { + 'Meta': {'object_name': 'Publisher'}, + 'date': ('django.db.models.fields.DateTimeField', [], {}), + 'global_meta': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'rundb.qctype': { + 'Meta': {'object_name': 'QCType'}, + 'defaultThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'maxThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '100'}), + 'minThreshold': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'qcName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.qualitymetrics': { + 'Meta': {'object_name': 'QualityMetrics'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'q0_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_150bp_reads': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q0_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q0_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q0_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q0_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q0_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q17_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q17_max_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q17_mean_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q17_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q17_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_100bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_150bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_50bp_reads': ('django.db.models.fields.IntegerField', [], {}), + 'q20_bases': ('django.db.models.fields.BigIntegerField', [], {}), + 'q20_max_read_length': ('django.db.models.fields.FloatField', [], {}), + 'q20_mean_read_length': ('django.db.models.fields.IntegerField', [], {}), + 'q20_median_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_mode_read_length': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'q20_reads': ('django.db.models.fields.IntegerField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'qualitymetrics_set'", 'to': u"orm['rundb.Results']"}) + }, + u'rundb.referencegenome': { + 'Meta': {'ordering': "['short_name']", 'object_name': 'ReferenceGenome'}, + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'file_monitor': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identity_hash': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '40', 'null': 'True', 'blank': 'True'}), + 'index_version': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'notes': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'reference_path': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'short_name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'source': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'species': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'verbose_error': ('django.db.models.fields.CharField', [], {'max_length': '3000', 'blank': 'True'}), + 'version': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}) + }, + u'rundb.remoteaccount': { + 'Meta': {'object_name': 'RemoteAccount'}, + 'access_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'account_label': ('django.db.models.fields.CharField', [], {'default': "'Unnamed Account'", 'max_length': '64'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'refresh_token': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'remote_resource': ('django.db.models.fields.CharField', [], {'max_length': '2048'}), + 'token_expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'user_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}) + }, + u'rundb.reportstorage': { + 'Meta': {'object_name': 'ReportStorage'}, + 'default': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'dirPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'webServerPath': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + u'rundb.results': { + 'Meta': {'object_name': 'Results'}, + 'analysisVersion': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'analysismetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.AnalysisMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'autoExempt': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'diskusage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'eas': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'results_set'", 'null': 'True', 'to': u"orm['rundb.ExperimentAnalysisSettings']"}), + 'experiment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'results_set'", 'to': u"orm['rundb.Experiment']"}), + 'framesProcessed': ('django.db.models.fields.IntegerField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'libmetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.LibMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'log': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'metaData': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'parentIDs': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'parentResult': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'childResults_set'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.Results']"}), + 'processedCycles': ('django.db.models.fields.IntegerField', [], {}), + 'processedflows': ('django.db.models.fields.IntegerField', [], {}), + 'projects': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'results'", 'symmetrical': 'False', 'to': u"orm['rundb.Project']"}), + 'qualitymetrics': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.QualityMetrics']", 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'reference': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'reportLink': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'reportStatus': ('django.db.models.fields.CharField', [], {'default': "'Nothing'", 'max_length': '64', 'null': 'True'}), + 'reportstorage': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'storage'", 'null': 'True', 'to': u"orm['rundb.ReportStorage']"}), + 'representative': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'resultsName': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'resultsType': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'runid': ('django.db.models.fields.CharField', [], {'max_length': '10', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), + 'timeToComplete': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + }, + u'rundb.rig': { + 'Meta': {'object_name': 'Rig'}, + 'alarms': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'display_state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'ftppassword': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'ftprootdir': ('django.db.models.fields.CharField', [], {'default': "'results'", 'max_length': '64'}), + 'ftpserver': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '128'}), + 'ftpusername': ('django.db.models.fields.CharField', [], {'default': "'ionguest'", 'max_length': '64'}), + 'host_address': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'last_clean_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_experiment': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'last_init_date': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Location']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}), + 'serial': ('django.db.models.fields.CharField', [], {'max_length': '24', 'null': 'True', 'blank': 'True'}), + 'state': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'updateCommand': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}), + 'updateflag': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'updatehome': ('django.db.models.fields.CharField', [], {'default': "'192.168.201.1'", 'max_length': '256'}), + 'version': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}) + }, + u'rundb.runtype': { + 'Meta': {'object_name': 'RunType'}, + 'alternate_name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'applicationGroups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'applications'", 'null': 'True', 'to': u"orm['rundb.ApplicationGroup']"}), + 'barcode': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'meta': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "'dna'", 'max_length': '64', 'blank': 'True'}), + 'runType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '512'}) + }, + u'rundb.sample': { + 'Meta': {'unique_together': "(('name', 'externalId'),)", 'object_name': 'Sample'}, + 'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'experiments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'samples'", 'null': 'True', 'to': u"orm['rundb.Experiment']"}), + 'externalId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.sampleannotation_cv': { + 'Meta': {'object_name': 'SampleAnnotation_CV'}, + 'annotationType': ('django.db.models.fields.CharField', [], {'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'sampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'sampleAnnotation_set'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '127', 'blank': 'True'}) + }, + u'rundb.sampleattribute': { + 'Meta': {'object_name': 'SampleAttribute'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'dataType': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributes'", 'to': u"orm['rundb.SampleAttributeDataType']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isMandatory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttribute'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}) + }, + u'rundb.sampleattributedatatype': { + 'Meta': {'object_name': 'SampleAttributeDataType'}, + 'dataType': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'rundb.sampleattributevalue': { + 'Meta': {'object_name': 'SampleAttributeValue'}, + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleAttributeValue'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleAttributeValues'", 'to': u"orm['rundb.Sample']"}), + 'sampleAttribute': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleAttribute']"}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.samplegrouptype_cv': { + 'Meta': {'object_name': 'SampleGroupType_CV'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + 'iRAnnotationType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'iRValue': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isIRCompatible': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.sampleprepdata': { + 'Meta': {'object_name': 'SamplePrepData'}, + 'endTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'instrumentName': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200', 'blank': 'True'}), + 'instrumentStatus': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'kitType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'lastUpdate': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'logPath': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'message': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'operationMode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'packageVer': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'progress': ('django.db.models.fields.FloatField', [], {'default': '0.0', 'blank': 'True'}), + 'reagentsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'reagentsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'remainingSeconds': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'samplePrepDataType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'scriptVersion': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsExpiration': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsLot': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'solutionsPart': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'startTime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'tipRackBarcode': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}) + }, + u'rundb.sampleset': { + 'Meta': {'object_name': 'SampleSet'}, + 'SampleGroupType_CV': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'null': 'True', 'to': u"orm['rundb.SampleGroupType_CV']"}), + 'additionalCycles': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'combinedLibraryTubeLabel': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'displayedName': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSet'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'libraryPrepInstrument': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepInstrumentData': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'libraryPrepData_sampleSet'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['rundb.SamplePrepData']"}), + 'libraryPrepKitName': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}), + 'libraryPrepPlateType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'libraryPrepProtocol': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'libraryPrepType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'pcrPlateSerialNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '512', 'blank': 'True'}) + }, + u'rundb.samplesetitem': { + 'Meta': {'object_name': 'SampleSetItem'}, + 'assayGroup': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'biopsyDays': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}), + 'cancerType': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellNum': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'cellularityPct': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'controlType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'coupleId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'creationDate': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'creator': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '1024', 'null': 'True', 'blank': 'True'}), + 'dnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'startBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'embryoId': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'endDnabarcode': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'endBarcode'", 'null': 'True', 'to': u"orm['rundb.dnaBarcode']"}), + 'gender': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastModifiedDate': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'lastModifiedUser': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lastModified_sampleSetItem'", 'on_delete': 'models.SET_DEFAULT', 'to': u"orm['auth.User']"}), + 'mouseStrains': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'nucleotideType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'panelPoolType': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'pcrPlateColumn': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'pcrPlateRow': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'population': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'relationshipGroup': ('django.db.models.fields.IntegerField', [], {}), + 'relationshipRole': ('django.db.models.fields.CharField', [], {'max_length': '127', 'null': 'True', 'blank': 'True'}), + 'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'sampleSets'", 'to': u"orm['rundb.Sample']"}), + 'sampleCollectionDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleReceiptDate': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), + 'sampleSet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'samples'", 'to': u"orm['rundb.SampleSet']"}), + 'sampleSource': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'tubePosition': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '10', 'null': 'True', 'blank': 'True'}) + }, + u'rundb.supportupload': { + 'Meta': {'object_name': 'SupportUpload'}, + 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.RemoteAccount']"}), + 'celery_task_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '60', 'blank': 'True'}), + 'contact_email': ('django.db.models.fields.EmailField', [], {'default': "''", 'max_length': '75'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'default': "''"}), + 'file': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['rundb.FileMonitor']", 'unique': 'True', 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'local_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'local_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'result': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['rundb.Results']", 'null': 'True', 'blank': 'True'}), + 'ticket_id': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'ticket_message': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048', 'blank': 'True'}), + 'ticket_status': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}), + 'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'on_delete': 'models.SET_DEFAULT'}) + }, + u'rundb.template': { + 'Meta': {'object_name': 'Template'}, + 'comments': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isofficial': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'sequence': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'rundb.tfmetrics': { + 'HPAccuracy': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Meta': {'object_name': 'TFMetrics'}, + 'Q10Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q10Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q10ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'Q17Histo': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'Q17Mean': ('django.db.models.fields.FloatField', [], {}), + 'Q17ReadCount': ('django.db.models.fields.FloatField', [], {}), + 'SysSNR': ('django.db.models.fields.FloatField', [], {}), + 'aveKeyCount': ('django.db.models.fields.FloatField', [], {}), + 'corrHPSNR': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keypass': ('django.db.models.fields.FloatField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'number': ('django.db.models.fields.FloatField', [], {}), + 'report': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tfmetrics_set'", 'to': u"orm['rundb.Results']"}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}) + }, + u'rundb.threeprimeadapter': { + 'Meta': {'object_name': 'ThreePrimeadapter'}, + 'chemistryType': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}), + 'direction': ('django.db.models.fields.CharField', [], {'default': "'Forward'", 'max_length': '20'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isActive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'isDefault': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'runMode': ('django.db.models.fields.CharField', [], {'default': "'single'", 'max_length': '64', 'blank': 'True'}), + 'sequence': ('django.db.models.fields.CharField', [], {'max_length': '512'}), + 'uid': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}) + }, + u'rundb.usereventlog': { + 'Meta': {'object_name': 'UserEventLog'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'timeStamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'upload': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'logs'", 'to': u"orm['rundb.ContentUpload']"}) + }, + u'rundb.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_read_news_post': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(1984, 11, 5, 0, 0)'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '93'}), + 'needs_activation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'note': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), + 'phone_number': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '256', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'default': "'user'", 'max_length': '256'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}) + } + } + + complete_apps = ['rundb'] \ No newline at end of file diff --git a/dbReports/iondb/rundb/models.py b/dbReports/iondb/rundb/models.py index 3c022f94..96a4c777 100755 --- a/dbReports/iondb/rundb/models.py +++ b/dbReports/iondb/rundb/models.py @@ -348,6 +348,7 @@ class KitInfo(models.Model): # ("readLengthDerivableFromFlows;flowsDerivableFromReadLength;", "Non-Hi-Q sequencing kit categories"), ("readLengthDerivableFromFlows;", "Non-Hi-Q sequencing kit categories"), ("s5v1Kit", "S5 v1 kit categories"), + ("s5v1Kit;samplePrepProtocol;cerebro_550_cycling", "S5 v1 and Cerebro kit categories"), ( "s5v1Kit;flowOverridable;", "S5 v1 kit categories with special flow count handling", @@ -626,6 +627,7 @@ class common_CV(models.Model): ("AMPS_RNA", "AmpliSeq RNA products"), ("WGNM", "Whole genome products"), ("TARS_16S", "16S products"), + ("EXOME", "Ampliseq Exome products"), ) categories = models.CharField( max_length=256, choices=ALLOWED_CATEGORIES, default="", blank=True, null=True @@ -916,6 +918,12 @@ def _extract_extra_kwargs(self, **kwargs): extra_kwargs["platform"] = kwargs.pop("x_platform", "") extra_kwargs["x_isSaveBySample"] = kwargs.pop("x_isSaveBySample", False) extra_kwargs["flowsInOrder"] = kwargs.pop("x_flowsInOrder", "") + extra_kwargs["chipTecDfltAmbient"] = kwargs.pop("x_chipTecDfltAmbient", None) + extra_kwargs["chipTecSlope"] = kwargs.pop("x_chipTecSlope", None) + extra_kwargs["chipTecMinThreshold"] = kwargs.pop("x_chipTecMinThreshold", None) + extra_kwargs["manTecDfltAmbient"] = kwargs.pop("x_manTecDfltAmbient", None) + extra_kwargs["manTecSlope"] = kwargs.pop("x_manTecSlope", None) + extra_kwargs["manTecMinThreshold"] = kwargs.pop("x_manTecMinThreshold", None) # EAS extra_kwargs["barcodedSamples"] = kwargs.pop("x_barcodedSamples", {}) @@ -946,6 +954,9 @@ def _extract_extra_kwargs(self, **kwargs): extra_kwargs["mixedTypeRNA_hotSpotRegionBedFile"] = kwargs.pop( "x_mixedTypeRNA_regionfile", "" ) + extra_kwargs["metaData"] = kwargs.pop( + "x_metaData", {} + ) # EAS - analysis args extra_kwargs["beadfindargs"] = kwargs.pop("x_beadfindargs", "") @@ -1282,10 +1293,11 @@ class PlannedExperiment(models.Model): ("onco_liquidBiopsy", "Liquid Biopsy"), ("onco_solidTumor;onco_heme", "AmpliSeq HD for Tumor"), ("carrierSeq", "Carrier Seq"), + ("exome", "Ampliseq Exome"), ) categories = models.CharField( - max_length=64, + max_length=256, choices=ALLOWED_CATEGORIES, default="", blank=True, @@ -1598,6 +1610,48 @@ def get_sequencekitname(self): else: return "" + def get_chipTecDfltAmbient(self): + experiment = self.experiment + if experiment and experiment.chipTecDfltAmbient: + return round(experiment.chipTecDfltAmbient, 4) + else: + return None + + def get_chipTecSlope(self): + experiment = self.experiment + if experiment and experiment.chipTecSlope: + return round(experiment.chipTecSlope, 4) + else: + return None + + def get_chipTecMinThreshold(self): + experiment = self.experiment + if experiment and experiment.chipTecMinThreshold: + return round(experiment.chipTecMinThreshold, 4) + else: + return None + + def get_manTecDfltAmbient(self): + experiment = self.experiment + if experiment and experiment.manTecDfltAmbient: + return round(experiment.manTecDfltAmbient, 4) + else: + return None + + def get_manTecSlope(self): + experiment = self.experiment + if experiment and experiment.manTecSlope: + return round(experiment.manTecSlope, 4) + else: + return None + + def get_manTecMinThreshold(self): + experiment = self.experiment + if experiment and experiment.manTecMinThreshold: + return round(experiment.manTecMinThreshold, 4) + else: + return None + def get_variantfrequency(self): return "" @@ -1897,6 +1951,13 @@ def save_plannedExperiment_association(self, isPlanCreated, **kwargs): "platform", "chipBarcode", "flowsInOrder", + "chipTecDfltAmbient", + "chipTecSlope", + "chipTecMinThreshold", + "manTecDfltAmbient", + "manTecSlope", + "manTecMinThreshold", + "metaData" ] for key in exp_keys: if key in kwargs: @@ -2521,6 +2582,13 @@ class Experiment(models.Model): chefProtocolDeviationName = models.CharField(max_length=127, blank=True, null=True) chefEndTime = models.DateTimeField(null=True, blank=True) + chipTecDfltAmbient = models.FloatField(default=None, blank=True, null=True) + chipTecSlope = models.FloatField(default=None, blank=True, null=True) + chipTecMinThreshold = models.FloatField(default=None, blank=True, null=True) + manTecDfltAmbient = models.FloatField(default=None, blank=True, null=True) + manTecSlope = models.FloatField(default=None, blank=True, null=True) + manTecMinThreshold = models.FloatField(default=None, blank=True, null=True) + def __unicode__(self): return self.expName @@ -5295,6 +5363,7 @@ class GlobalConfig(models.Model): ) majorPlatform = models.CharField(max_length=24, blank=True, null=True, default="") + password_max_age = models.IntegerField(default=90, blank=True) def set_TS_update_status(self, inputstr): self.ts_update_status = inputstr @@ -7143,6 +7212,8 @@ class UserProfile(models.Model): ) # needs_activation will be used to request user activation by admin needs_activation = models.BooleanField(default=False) + is_password_valid = models.BooleanField(default=False) + last_password_changed_on = models.DateTimeField(default=datetime.datetime(1984, 11, 6, tzinfo=timezone.utc)) def save(self, *args, **kwargs): if self.user and not self.name: diff --git a/dbReports/iondb/rundb/plan/ampliseq_to_TS_plan_convertor.py b/dbReports/iondb/rundb/plan/ampliseq_to_TS_plan_convertor.py index 422fbd59..70fb1bec 100644 --- a/dbReports/iondb/rundb/plan/ampliseq_to_TS_plan_convertor.py +++ b/dbReports/iondb/rundb/plan/ampliseq_to_TS_plan_convertor.py @@ -49,6 +49,13 @@ def __init__(self): self.libkit = None self.library = "" self.libraryKey = "TCAG" + self.chipTecDfltAmbient = None + self.chipTecSlope = None + self.chipTecMinThreshold = None + self.manTecDfltAmbient = None + self.manTecSlope = None + self.manTecMinThreshold = None + self.categories = None # Kit self.librarykitname = "" self.metaData = {} @@ -246,22 +253,33 @@ def get_applicationGroupDisplayedName(self): def update_chip_inst_type(self, app=None): # Parse the meta data and set the default chip type and instrument type for the Panel which is being imported metaData = self.ampliSeq_plan_metaData - run_type = metaData["run_type"] - plan_name = metaData["plan_name"] + # The plan.json has PGM, Proton (legacy), and S5 chip type as choice instrument_type = metaData["choice"] + chip_type = "540" # "choice": "None" will be in the JSON from 3.6 schema imports decoratedInstType = None if instrument_type == "None": instrument_type = "s5" if instrument_type in self.get_s5_chips(): - decoratedInstType = self.decorate_S5_instruments(instrument_type) chip_type = instrument_type - instrument_type = "s5" - else: - chip_type = "540" + elif app and app.applicationGroup: # TS-18344 + if app.defaultChipType in self.get_s5_chips(): + chip_type = app.defaultChipType + self.chipType = chip_type + + return chip_type + def set_decorated_inst_type(self): + # Parse the meta data and set the default chip type and instrument type for the Panel which is being imported + metaData = self.ampliSeq_plan_metaData + instrument_type = metaData["choice"] + decoratedInstType = None + if instrument_type == "None": + instrument_type = "s5" + if instrument_type in self.get_s5_chips(): + decoratedInstType = self.decorate_S5_instruments(instrument_type) + instrument_type = "s5" self.platform = instrument_type - self.chipType = chip_type self.decoratedInstType = decoratedInstType def get_applProductObj(self): @@ -273,9 +291,8 @@ def get_applProductObj(self): app_group, app_group_name = self.get_applicationGroupDisplayedName() - self.update_chip_inst_type() + self.set_decorated_inst_type() instrument_type = self.platform - chip_type = self.chipType decoratedInstType = self.decoratedInstType print( @@ -335,7 +352,7 @@ def get_applProductObj(self): print(self.errMessage["E002"].format(available_choice)) sys.exit(1) - return app, app_group_name, instrument_type, chip_type + return app, app_group_name, instrument_type def get_defaultTemplateKit(self, app): defaultTemplateKit = app.defaultTemplateKit and app.defaultTemplateKit.name @@ -376,17 +393,30 @@ def plan_json( "choice", "None" ), # "None" this is default choice for legacy 3.6 "design_name": meta["design"].get("design_name", None), + "categories": meta["design"]["plan"].get("categories", None), "plugin_details": meta["design"]["plan"].get("selectedPlugins", {}), "upload_id": upload_id, + "templatingKitName": meta["design"]["plan"].get("templatingKitName", None), + "samplePrepKitName": meta["design"]["plan"].get("samplePrepKitName", None), + "sequencekitname": meta["design"]["plan"].get("sequencekitname", None), + "barcodeId": meta["design"]["plan"].get("barcodeId", None), + "flows": meta["design"]["plan"].get("flows", None), + "chipTecDfltAmbient": meta["design"]["plan"].get("chipTecDfltAmbient", None), + "chipTecSlope": meta["design"]["plan"].get("chipTecSlope", None), + "chipTecMinThreshold": meta["design"]["plan"].get("chipTecMinThreshold", None), + "manTecDfltAmbient": meta["design"]["plan"].get("manTecDfltAmbient", None), + "manTecSlope": meta["design"]["plan"].get("manTecSlope", None), + "manTecMinThreshold": meta["design"]["plan"].get("manTecMinThreshold", None), + "metaData": meta["design"]["plan"].get("metaData", {}) } ampliSeqTemplate = processAmpliSeqPanel() ampliSeqTemplate.ampliSeq_plan_metaData = ampliSeq_plan_metaData - app, app_group_name, instrument_type, chip_type = ( + app, app_group_name, instrument_type = ( ampliSeqTemplate.get_applProductObj() ) - ampliSeqTemplate.update_chip_inst_type(app=app) + chip_type = ampliSeqTemplate.update_chip_inst_type(app=app) plugin_details, alignmentargs_override = ampliSeqTemplate.get_pluginDetails() @@ -401,20 +431,38 @@ def plan_json( "runType": ampliSeq_plan_metaData["run_type"], "chipType": chip_type, "applicationGroupDisplayedName": app_group_name, - "barcodeId": app.defaultBarcodeKitName, + "categories": ampliSeq_plan_metaData.get("categories", None), + "barcodeId": ampliSeq_plan_metaData.get("barcodeId") or app.defaultBarcodeKitName, "bedfile": target_regions_bed_path, "regionfile": hotspots_bed_path, "sseBedFile": sse_bed_path, - "flows": app.defaultFlowCount, + "flows": ampliSeq_plan_metaData.get("flows") or app.defaultFlowCount, "flowsInOrder": ampliSeqTemplate.get_flowOrder(app), "platform": instrument_type, "library": meta["reference"], - "librarykitname": app.defaultLibraryKit and app.defaultLibraryKit.name, - "samplePrepKitName": app.defaultSamplePrepKit and app.defaultSamplePrepKit.name, + "librarykitname": ampliSeq_plan_metaData.get("librarykitname") or app.defaultLibraryKit and app.defaultLibraryKit.name, + "samplePrepKitName": ampliSeq_plan_metaData.get("samplePrepKitName") or app.defaultSamplePrepKit and app.defaultSamplePrepKit.name, "selectedPlugins": plugin_details, - "sequencekitname": app.defaultSequencingKit and app.defaultSequencingKit.name, - "templatingKitName": ampliSeqTemplate.get_defaultTemplateKit(app), + "sequencekitname": ampliSeq_plan_metaData.get("sequencekitname") or app.defaultSequencingKit and app.defaultSequencingKit.name, + "templatingKitName": ampliSeq_plan_metaData.get("templatingKitName") or ampliSeqTemplate.get_defaultTemplateKit(app), + "chipTecDfltAmbient": ampliSeq_plan_metaData.get("chipTecDfltAmbient", None), + "chipTecSlope": ampliSeq_plan_metaData.get("chipTecSlope", None), + "chipTecMinThreshold": ampliSeq_plan_metaData.get("chipTecMinThreshold", None), + "manTecDfltAmbient": ampliSeq_plan_metaData.get("manTecDfltAmbient", None), + "manTecSlope": ampliSeq_plan_metaData.get("manTecSlope", None), + "manTecMinThreshold": ampliSeq_plan_metaData.get("manTecMinThreshold", None), + "metaData": ampliSeq_plan_metaData.get("metaData", {}) } + # Update source template meta for Dynamic Tec Params + templateMetadata = { + "fromTemplate": plan_stub.get("planName"), + "isAmpliseqTecParamEnabled": True if plan_stub.get("manTecDfltAmbient") or plan_stub.get("chipTecDfltAmbient") else False, + "fromTemplateChipType": plan_stub.get("chipType"), + "fromTemplateSequenceKitname": plan_stub.get("sequencekitname"), + "fromAmpliseqTemplateSource": True + } + plan_stub.get("metaData").update(templateMetadata) + ampliSeqTemplate.update(plan_stub) plan_stub = ampliSeqTemplate.get_plan_stub() diff --git a/dbReports/iondb/rundb/plan/ampliseq_validator.py b/dbReports/iondb/rundb/plan/ampliseq_validator.py index 72c54ccf..88d0dacc 100644 --- a/dbReports/iondb/rundb/plan/ampliseq_validator.py +++ b/dbReports/iondb/rundb/plan/ampliseq_validator.py @@ -42,8 +42,9 @@ def validate_reference(meta, args, reference): # The identity_hash matching the files_md5sum.fasta hash determines whether # or not the genome is installed - print("Checking reference " + ref_hash) - if not models.ReferenceGenome.objects.filter(identity_hash=ref_hash).exists(): + print("Checking reference with Identity Hash %s and Short Name %s " % (ref_hash, short_name)) + if not models.ReferenceGenome.objects.filter(identity_hash=ref_hash).exists() \ + and not models.ReferenceGenome.objects.filter(short_name=short_name).exists(): reference_args = { "identity_hash": ref_hash, "name": name, diff --git a/dbReports/iondb/rundb/plan/page_plan/kits_step_data.py b/dbReports/iondb/rundb/plan/page_plan/kits_step_data.py index 13735752..9074cb45 100644 --- a/dbReports/iondb/rundb/plan/page_plan/kits_step_data.py +++ b/dbReports/iondb/rundb/plan/page_plan/kits_step_data.py @@ -81,6 +81,7 @@ class KitsFieldNames: PLAN_CATEGORIES = "planCategories" ADVANCED_SETTINGS_CHOICE = "advancedSettingsChoice" ADVANCED_SETTINGS = "advancedSettings" + META_DATA = "metaData" class KitsStepData(AbstractStepData): @@ -256,6 +257,7 @@ def __init__(self, sh_type): self.savedFields[KitsFieldNames.FLOWS] = 0 self.savedFields[KitsFieldNames.LIBRARY_READ_LENGTH] = 0 self.savedFields[KitsFieldNames.READ_LENGTH] = 0 + self.savedFields[KitsFieldNames.META_DATA] = {} self.prepopulatedFields[ KitsFieldNames.IS_BARCODE_KIT_SELECTION_REQUIRED diff --git a/dbReports/iondb/rundb/plan/page_plan/step_helper_db_loader.py b/dbReports/iondb/rundb/plan/page_plan/step_helper_db_loader.py index 1f7f87ef..e62c7dca 100644 --- a/dbReports/iondb/rundb/plan/page_plan/step_helper_db_loader.py +++ b/dbReports/iondb/rundb/plan/page_plan/step_helper_db_loader.py @@ -183,12 +183,16 @@ def _updateSaveStepData(self, runTypeObj, step_helper, save_plan_step_data): ] = num_samples def _metaDataFromPlan(self, step_helper, planned_experiment): - metaData = planned_experiment.metaData or {} + metaData = planned_experiment.metaData or planned_experiment.experiment.metaData or {} if ( step_helper.isCreate() or step_helper.sh_type == StepHelperType.COPY_TEMPLATE ): metaData["fromTemplate"] = planned_experiment.planName + metaData["fromTemplateId"] = planned_experiment.id + metaData["fromTemplateChipType"] = planned_experiment.get_chipType() + metaData["fromTemplateSequenceKitname"] = planned_experiment.get_sequencekitname() + metaData["fromTemplateCategories"] = planned_experiment.get_categories_display() metaData["fromTemplateSource"] = ( "ION" if planned_experiment.isSystem else planned_experiment.username ) @@ -294,6 +298,8 @@ def updateTemplateSpecificStepHelper(self, step_helper, planned_experiment): else: save_template_step_data = step_helper.steps[StepNames.SAVE_TEMPLATE] + kits_plan_step_data = step_helper.steps[StepNames.KITS] + planDisplayedName = getPlanDisplayedName(planned_experiment) if step_helper.sh_type == StepHelperType.COPY_TEMPLATE: @@ -331,6 +337,10 @@ def updateTemplateSpecificStepHelper(self, step_helper, planned_experiment): SaveTemplateStepDataFieldNames.META ] = self._metaDataFromPlan(step_helper, planned_experiment) + kits_plan_step_data.savedObjects[ + SavePlanFieldNames.META + ] = self._metaDataFromPlan(step_helper, planned_experiment) + def updatePlanSpecificStepHelper( self, step_helper, planned_experiment, set_template_name=False ): @@ -355,6 +365,7 @@ def updatePlanSpecificStepHelper( ] = planDisplayedName save_plan_step_data = step_helper.steps[StepNames.SAVE_PLAN] + kits_plan_step_data = step_helper.steps[StepNames.KITS] # Add a "copy of" if we're copying. if step_helper.isCopy(): @@ -386,6 +397,10 @@ def updatePlanSpecificStepHelper( SavePlanFieldNames.META ] = self._metaDataFromPlan(step_helper, planned_experiment) + kits_plan_step_data.savedObjects[ + SavePlanFieldNames.META + ] = self._metaDataFromPlan(step_helper, planned_experiment) + barcodeSet = planned_experiment.get_barcodeId() endBarcodeSet = planned_experiment.get_endBarcodeKitName() self._update_barcode_sets_for_edit( @@ -853,6 +868,10 @@ def _updateUniversalStep_kitData( KitsFieldNames.SAMPLE_PREP_PROTOCOL ] = planned_experiment.samplePrepProtocol + kits_step_data.savedFields[ + KitsFieldNames.META_DATA + ] = planned_experiment.experiment.metaData or {} + kits_step_data.prepopulatedFields[KitsFieldNames.PLAN_CATEGORIES] = ( planned_experiment.categories or "" ) @@ -867,6 +886,7 @@ def _updateUniversalStep_kitData( KitsFieldNames.ADVANCED_SETTINGS ] = json.dumps(self.get_kit_advanced_settings(step_helper, planned_experiment)) + def _updateUniversalStep_kitData_for_edit( self, step_helper, @@ -2434,7 +2454,7 @@ def get_kit_advanced_settings(self, step_helper, planned_experiment=None): KitsFieldNames.FORWARD_3_PRIME_ADAPTER: system_template.get_forward3primeadapter(), KitsFieldNames.LIBRARY_KEY: system_template.get_libraryKey(), KitsFieldNames.SAMPLE_PREP_PROTOCOL: system_template.samplePrepProtocol, - KitsFieldNames.TF_KEY: system_template.get_tfKey(), + KitsFieldNames.TF_KEY: system_template.get_tfKey() } else: kits_step_data = step_helper.steps[StepNames.KITS] diff --git a/dbReports/iondb/rundb/plan/page_plan/step_helper_db_saver.py b/dbReports/iondb/rundb/plan/page_plan/step_helper_db_saver.py index 9be6e22f..45ac8ca5 100644 --- a/dbReports/iondb/rundb/plan/page_plan/step_helper_db_saver.py +++ b/dbReports/iondb/rundb/plan/page_plan/step_helper_db_saver.py @@ -91,6 +91,7 @@ def __get_universal_params(self, step_helper, username): save_plan_step_data = step_helper.steps.get(StepNames.SAVE_PLAN, "") isFavorite = False + enableTecParam = False categories = application_step_data.prepopulatedFields.get( ApplicationFieldNames.CATEGORIES, "" @@ -222,6 +223,35 @@ def __get_universal_params(self, step_helper, username): x_mixedTypeRNA_regionfile = reference_step_data.savedFields[ ReferenceFieldNames.MIXED_TYPE_RNA_HOT_SPOT_BED_FILE ] + try: + # Dynamic Manifold Params + fromTemplteMeta = {} + + # Handle dynamic tec params for plan, template and plan by sample + if save_plan_step_data: + fromTemplteMeta.update(save_plan_step_data.savedObjects.get('meta')) + elif step_helper.steps.get("Save_plan_by_sample"): + fromTemplteMeta.update(step_helper.steps["Save_plan_by_sample"].getCurrentSavedObjectDict().get('meta')) + elif save_template_step_data: + fromTemplteMeta.update(save_template_step_data.savedObjects.get('meta')) + + if "tecParam" in fromTemplteMeta.get("fromTemplateCategories", None) or fromTemplteMeta.get("isAmpliseqTecParamEnabled"): + if x_chipType == fromTemplteMeta.get("fromTemplateChipType") \ + and x_sequencekitname == fromTemplteMeta.get("fromTemplateSequenceKitname"): + enableTecParam = True + templateObj = PlannedExperiment.objects.get(pk=fromTemplteMeta["fromTemplateId"]) + x_chipTecDfltAmbient = templateObj.get_chipTecDfltAmbient() + x_chipTecSlope = templateObj.get_chipTecSlope() + x_chipTecMinThreshold = templateObj.get_chipTecMinThreshold() + x_manTecDfltAmbient = templateObj.get_manTecDfltAmbient() + x_manTecSlope = templateObj.get_manTecSlope() + x_manTecMinThreshold = templateObj.get_manTecMinThreshold() + else: + logger.debug( + "step_helper_db_saver.__get_universal_params() save_step_data dynamic manifold tec param mismatch. Setting the default chip based tec param" + ) + except Exception as err: + logger.debug("step_helper_db_saver.__get_universal_params() save_step_data dynamic manifold tec param unknown errors %s" % str(err)) x_beadfindargs = analysisParams_step_data.savedFields[ AnalysisParamsFieldNames.AP_BEADFIND_SELECTED @@ -382,8 +412,19 @@ def __get_universal_params(self, step_helper, username): "x_thumbnailbasecallerargs": x_thumbnailbasecallerargs, "x_thumbnailalignmentargs": x_thumbnailalignmentargs, "x_thumbnailionstatsargs": x_thumbnailionstatsargs, - "x_custom_args": x_custom_args, + "x_custom_args": x_custom_args } + if fromTemplteMeta: + retval["x_metaData"] = fromTemplteMeta + if enableTecParam: + retval.update({ + "x_chipTecDfltAmbient": x_chipTecDfltAmbient, + "x_chipTecSlope": x_chipTecSlope, + "x_chipTecMinThreshold": x_chipTecMinThreshold, + "x_manTecDfltAmbient": x_manTecDfltAmbient, + "x_manTecSlope": x_manTecSlope, + "x_manTecMinThreshold": x_manTecMinThreshold + }) return retval def __get_specific_params_by_sample( @@ -550,7 +591,7 @@ def __get_specific_params( # 'sampleTubeLabel' : sampleTubeLabel.strip().lstrip("0") if sampleTubeLabel else "", "sampleTubeLabel": sampleTubeLabel.strip() if sampleTubeLabel else "", "chipBarcode": chipBarcode.strip() if chipBarcode else "", - "metaData": self.__update_metaData_for_LIMS(existing_meta, LIMS_meta), + "x_metaData": self.__update_metaData_for_LIMS(existing_meta, LIMS_meta), "isReusable": isReusable, "x_notes": note, "x_sample": sample, diff --git a/dbReports/iondb/rundb/plan/plan_csv_writer.py b/dbReports/iondb/rundb/plan/plan_csv_writer.py index 44ef31af..83dcc02e 100644 --- a/dbReports/iondb/rundb/plan/plan_csv_writer.py +++ b/dbReports/iondb/rundb/plan/plan_csv_writer.py @@ -114,6 +114,14 @@ class PlanCSVcolumns: REALIGN = "Enable Realignment" CATEGORIES = "Categories" CUSTOM_ARGS = "Custom Args" + # Dynamic tec manifold : TS-18354 + # Show only when exported template has these settings + CHIPTEC_DFLT_AMBIENT = "Chip Heater (Do not change)" + CHIPTEC_SLOPE = "Chip Slope (Do not change)" + CHIPTEC_MIN_THRESHOLD = "Chip Min Threshold (Do not change)" + MANTEC_DFLT_AMBIENT = "Manifold Heater (Do not change)" + MANTEC_SLOPE = "Manifold Slope (Do not change)" + MANTEC_MIN_THRESHOLD = "Manifold Min Threshold (Do not change)" FUSIONS_REF = "Fusions Reference library" FUSIONS_TARGET_BED = "Fusions Target regions BED file" @@ -259,6 +267,41 @@ def _get_fusions_target_regions_bed_file(template): filePath = _get_bed_file_path(template.get_mixedType_rna_bedfile()) return filePath +def _get_chipTecDfltAmbient(template): + ct = None + if template: + ct = template.get_chipTecDfltAmbient() + return ct + +def _get_chipTecSlope(template): + cts = None + if template: + cts = template.get_chipTecSlope() + return cts + +def _get_chipTecMinThreshold(template): + ctmt = None + if template: + ctmt = template.get_chipTecMinThreshold() + return ctmt + +def _get_manTecDfltAmbient(template): + mt = None + if template: + mt = template.get_manTecDfltAmbient() + return mt + +def _get_manTecSlope(template): + mts = None + if template: + mts = template.get_manTecSlope() + return mts + +def _get_manTecMinThreshold(template): + mtmt = None + if template: + mtmt = template.get_manTecMinThreshold() + return mtmt def _get_plugins(template, delimiter): plugins = "" @@ -605,6 +648,26 @@ def get_template_data_for_batch_planning(templateId, single_samples_file): logger.exception(format_exc()) return [], [], [] +def get_dynamicTecParams(template): + dynamicTecParams = [] + chipTecDfltAmbient = _get_chipTecDfltAmbient(template) + chipTecSlope = _get_chipTecSlope(template) + chipTecMinThreshold = _get_chipTecMinThreshold(template) + manTecDfltAmbient = _get_manTecDfltAmbient(template) + manTecSlope = _get_manTecSlope(template) + manTecMinThreshold = _get_manTecMinThreshold(template) + + + if chipTecDfltAmbient or manTecDfltAmbient: + dynamicTecParams = [ + (PlanCSVcolumns.CHIPTEC_DFLT_AMBIENT, chipTecDfltAmbient), + (PlanCSVcolumns.CHIPTEC_SLOPE, chipTecSlope), + (PlanCSVcolumns.CHIPTEC_MIN_THRESHOLD, chipTecMinThreshold), + (PlanCSVcolumns.MANTEC_DFLT_AMBIENT, manTecDfltAmbient), + (PlanCSVcolumns.MANTEC_SLOPE, manTecSlope), + (PlanCSVcolumns.MANTEC_MIN_THRESHOLD, manTecMinThreshold), + ] + return dynamicTecParams def get_sampleAnnotations(template): annotations = [] @@ -745,6 +808,12 @@ def export_template_keys(custom_args): "custom_args": PlanCSVcolumns.CUSTOM_ARGS, "mixedTypeRNA_reference": PlanCSVcolumns.FUSIONS_REF, "mixedTypeRNA_targetRegionBedFile": PlanCSVcolumns.FUSIONS_TARGET_BED, + "chipTecDfltAmbient": PlanCSVcolumns.CHIPTEC_DFLT_AMBIENT, + "chipTecSlope": PlanCSVcolumns.CHIPTEC_SLOPE, + "chipTecMinThreshold": PlanCSVcolumns.CHIPTEC_MIN_THRESHOLD, + "manTecDfltAmbient": PlanCSVcolumns.MANTEC_DFLT_AMBIENT, + "manTecSlope": PlanCSVcolumns.MANTEC_SLOPE, + "manTecMinThreshold": PlanCSVcolumns.MANTEC_MIN_THRESHOLD, } # QC values keys.update( @@ -809,6 +878,11 @@ def get_template_data_for_export(templateId): (PlanCSVcolumns.COLUMN_HOTSPOT_BED, _get_hotspot_regions_bed_file(template)), ] + # Add dynamic Tec params only if exists in the template + dynamicTecParams = get_dynamicTecParams(template) + if dynamicTecParams: + data.extend(dynamicTecParams) + # add fusions reference for DNA/Fusions application if RunType.is_dna_rna(runType): data.extend( diff --git a/dbReports/iondb/rundb/plan/plan_validator.py b/dbReports/iondb/rundb/plan/plan_validator.py index 416eb6a2..ec33a524 100644 --- a/dbReports/iondb/rundb/plan/plan_validator.py +++ b/dbReports/iondb/rundb/plan/plan_validator.py @@ -616,6 +616,21 @@ def validate_plan_templating_kit_name(value, field_label, isNewPlan=None): return errors, warnings +def get_dynamicTecParams(templateObj, data): + chipTecDfltAmbient = templateObj.experiment.chipTecDfltAmbient + chipTecSlope = templateObj.experiment.chipTecSlope + chipTecMinThreshold = templateObj.experiment.chipTecMinThreshold + manTecDfltAmbient = templateObj.experiment.manTecDfltAmbient + manTecSlope = templateObj.experiment.manTecSlope + manTecMinThreshold = templateObj.experiment.manTecMinThreshold + changed = False + errMsg = None + if {'chipTecDfltAmbient', 'chipTecSlope', 'chipTecMinThreshold', 'manTecDfltAmbient', 'manTecSlope', 'manTecMinThreshold'} <= set(data): + errMsg = "Use System default for Manifold temperatures. Do not provide any inputs.Default template configuration:" \ + "(chipTecDfltAmbient: %.4f, chipTecSlope: %.4f, chipTecMinThreshold: %.4f, manTecDfltAmbient: %.4f, manTecSlope: %.4f, manTecMinThreshold: %.4f)" % \ + (chipTecDfltAmbient, chipTecSlope, chipTecMinThreshold, manTecDfltAmbient, manTecSlope, manTecMinThreshold) + changed = True + return changed, errMsg def validate_runType(runType, field_label): errors = [] diff --git a/dbReports/iondb/rundb/plan/views.py b/dbReports/iondb/rundb/plan/views.py index cceae282..ee83d720 100644 --- a/dbReports/iondb/rundb/plan/views.py +++ b/dbReports/iondb/rundb/plan/views.py @@ -2204,6 +2204,44 @@ def plan_template_export(request, templateId): return response +def parse_tec_params(dtp): + try: + return float(dtp) + except ValueError: + return None + +def get_template_meta(row): + return { + "fromTemplate": row.get("Template name (required)"), + "fromTemplateCategories": row.get("Categories"), + "fromTemplateChipType": row.get("Chip type (required)"), + "fromTemplateSequenceKitname": row.get("Sequence kit name"), + "fromTemplateSource": "ION" + } + +def convert_tec_params_to_float(row): + ct = 'Chip Heater (Do not change)' + cts = 'Chip Slope (Do not change)' + ctmt = 'Chip Min Threshold (Do not change)' + + mt = 'Manifold Heater (Do not change)' + mts = 'Manifold Slope (Do not change)' + mtmt = 'Manifold Min Threshold (Do not change)' + if ct in row or mt in row: + if ct in row: + row[ct] = parse_tec_params(row[ct]) + if cts in row: + row[cts] = parse_tec_params(row[cts]) + if ctmt in row: + row[ctmt] = parse_tec_params(row[ctmt]) + if mt in row: + row[mt] = parse_tec_params(row[mt]) + if mts in row: + row[mts] = parse_tec_params(row[mts]) + if mtmt in row: + row[mtmt] = parse_tec_params(row[mtmt]) + + return row def plan_template_import(request): def _get_kit_name(value, kitTypes): @@ -2265,7 +2303,7 @@ def _get_kit_name(value, kitTypes): # skip blank rows if not any(v.strip() for v in list(row.values())): continue - + row = convert_tec_params_to_float(row) planDict = {} planDict["isNewPlan"] = True # this will trigger validation planDict["isReusable"] = True @@ -2276,7 +2314,10 @@ def _get_kit_name(value, kitTypes): planCsvKeys = export_template_keys(custom_args) for field, csvKey in list(planCsvKeys.items()): if csvKey in row: - value = row[csvKey].strip() if row[csvKey] else "" + if isinstance(row[csvKey], str): + value = row[csvKey].strip() if row[csvKey] else "" + else: + value = row[csvKey] if csvKey == PlanCSVcolumns.TEMPLATE_NAME: planDict["planName"] = value.replace(" ", "_") elif csvKey == PlanCSVcolumns.RUNTYPE: @@ -2353,6 +2394,7 @@ def _get_kit_name(value, kitTypes): value = value.split(";") elif csvKey == PlanCSVcolumns.COLUMN_LIMS_DATA: value = {"LIMS": [value]} + value.update(get_template_meta(row)) elif csvKey == PlanCSVcolumns.CUSTOM_ARGS: value = custom_args diff --git a/dbReports/iondb/rundb/report/views.py b/dbReports/iondb/rundb/report/views.py index b8c55128..cf40c335 100644 --- a/dbReports/iondb/rundb/report/views.py +++ b/dbReports/iondb/rundb/report/views.py @@ -27,6 +27,7 @@ HttpResponseRedirect, HttpResponse, HttpResponseServerError, + StreamingHttpResponse, ) from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext @@ -2347,6 +2348,15 @@ def plain_text(request, full_path): return HttpResponse(FileWrapper(open(full_path, "rb")), mimetype="text/plain") +def download_file(request, full_path): + response = StreamingHttpResponse(open(full_path, "rb")) + response["Content-Type"] = "application/octet-stream" + response["Content-Disposition"] = 'attachment; filename="%s"' % os.path.basename( + full_path + ) + return response + + # These handlers are in strict priority order, i.e. as soon as one matches # the search for a match halts. More specific patterns must preceed more # general patterns that might incorrectly match them. @@ -2361,12 +2371,12 @@ def plain_text(request, full_path): (r"basecaller_results/.*\.txt$", show_whitespace_csv), (r"sigproc_results/.*\.txt$", show_whitespace_csv), (r"\.dat$", show_whitespace_csv), - (r"\.bin$", show_binary), - (r"\.bam$", show_binary), - (r"\.bai$", show_binary), - (r"\.h5$", show_binary), + (r"\.bin$", download_file), + (r"\.bam$", download_file), + (r"\.bai$", download_file), + (r"\.h5$", download_file), (r"\.sff$", show_binary), - (r"\.wells$", show_binary), + (r"\.wells$", download_file), (r"\.stats$", show_config), (r"\.summary$", show_config), (r"\.png$", show_png_image), diff --git a/dbReports/iondb/settings.py b/dbReports/iondb/settings.py index 9fca1b90..67012c4d 100644 --- a/dbReports/iondb/settings.py +++ b/dbReports/iondb/settings.py @@ -370,8 +370,8 @@ EULA_TEXT_URL = "products/" -PLAN_CSV_VERSION = "2.2" -SUPPORTED_PLAN_CSV_VERSION = ["1.0", "2.0", "2.1", "2.2"] +PLAN_CSV_VERSION = "2.3" +SUPPORTED_PLAN_CSV_VERSION = ["1.0", "2.0", "2.1", "2.2", "2.3"] SAMPLE_CSV_VERSION = "2.0" SUPPORTED_SAMPLE_CSV_VERSION = ["1.0", "2.0"] diff --git a/dbReports/iondb/templates/admin/updateOneTouch.html b/dbReports/iondb/templates/admin/updateOneTouch.html index eb59d3c3..91ca0f23 100644 --- a/dbReports/iondb/templates/admin/updateOneTouch.html +++ b/dbReports/iondb/templates/admin/updateOneTouch.html @@ -58,7 +58,6 @@

The OneTouch devices are being updated , the log messages will be Optional: Download the OneTouch update file manually, to place on a USB Drive diff --git a/dbReports/iondb/templates/rundb/configure/account.html b/dbReports/iondb/templates/rundb/configure/account.html index c76b8560..69059b56 100644 --- a/dbReports/iondb/templates/rundb/configure/account.html +++ b/dbReports/iondb/templates/rundb/configure/account.html @@ -32,6 +32,7 @@ console.log("Approved/Activated user " + userId); btn.parents(".pending-user").remove(); $('#modal_confirm_approve').modal('hide'); + window.location.reload(true); }).fail(function (data) { $('#modal_confirm_approve .modal-body #modal-error-messages').empty().append('

{% trans "global.messages.error.label" %}:

' + data.responseText + '

').show(); }); @@ -60,6 +61,7 @@ console.log("Rejected user " + userId); btn.parents(".pending-user").remove(); $('#modal_confirm_reject').modal('hide'); + window.location.reload(true); }).fail(function (data) { $('#modal_confirm_reject .modal-body #modal-error-messages').empty().append('

{% trans "global.messages.error.label" %}:

' + data.responseText + '

').show(); }); @@ -91,11 +93,8 @@ {% endblock extra_head_js %} - - {% block content %} - -
+

{% trans "configure_account.title" %} {% trans "configure_account.subtitle" %}

{% csrf_token %} @@ -103,7 +102,7 @@

{% trans "configure_account.title" %} {% trans "configure_account. {% for field in form %} {% for error in field.errors %}
- {{ field.label }} - {{ error|escape }} + {{ field.label }} - {{ error|escape|safe }}
{% endfor %} {% endfor %} @@ -113,6 +112,11 @@

{% trans "configure_account.title" %} {% trans "configure_account.

{% endfor %} {% endif %} + {% if updated or form.is_valid %} +
+ User Information updated successfully +
+ {% endif %}
@@ -174,6 +178,7 @@

{% trans "configure_account.title" %} {% trans "configure_account.
{{form.password}} +

diff --git a/dbReports/iondb/templates/rundb/home/fragments/summary.html b/dbReports/iondb/templates/rundb/home/fragments/summary.html index 8b61cff5..cbfb127e 100644 --- a/dbReports/iondb/templates/rundb/home/fragments/summary.html +++ b/dbReports/iondb/templates/rundb/home/fragments/summary.html @@ -8,6 +8,10 @@ {% if summary.showDeprecationMsg %}
  • {{ summary.showDeprecationMsg }}
  • {% endif %} + {% if summary.showPasswordWarningMsg %} +
  • {{ summary.showPasswordWarningMsg|safe }} + here
  • + {% endif %} {% if summary.update_status.lower == "available" or "ready" in summary.update_status.lower %}
  • Update available
  • {% elif "fail" in summary.update_status.lower %} diff --git a/dbReports/iondb/templates/rundb/plan/modal_plannedexperiment_detail.html b/dbReports/iondb/templates/rundb/plan/modal_plannedexperiment_detail.html index 16c52fd6..b6ad55fa 100644 --- a/dbReports/iondb/templates/rundb/plan/modal_plannedexperiment_detail.html +++ b/dbReports/iondb/templates/rundb/plan/modal_plannedexperiment_detail.html @@ -152,6 +152,18 @@

    {% trans "reviewplan.fields.eas.realign.label" %}: {{ eas.realign }} + {% if plan.experiment.chipTecDfltAmbient %} + + Chip Heater: + Dynamic + + {% endif %} + + Manifold Heater: + + {% if plan.experiment.manTecDfltAmbient %} Dynamic {% else %} Default {% endif %} + +

    diff --git a/dbReports/iondb/templates/rundb/plan/page_plan/base.html b/dbReports/iondb/templates/rundb/plan/page_plan/base.html index c21b24c0..0088648f 100644 --- a/dbReports/iondb/templates/rundb/plan/page_plan/base.html +++ b/dbReports/iondb/templates/rundb/plan/page_plan/base.html @@ -56,6 +56,7 @@ {% endblock sub-nav %} {%block extra-main-class%}clearbg{%endblock extra-main-class%} {% block content %} +
    @@ -339,6 +340,19 @@

    {% trans "workflow.step.saveplan.bysample.fields.sampleSets.label" %}: {{hel $("#showSummary").hide(); }); + function check_lock_assay_params() { + var lockAssayParams = $('input[name = "lockAssayParams"]').val().split(","); + if(lockAssayParams) { + $.each(lockAssayParams, function (i, val) { + if ($("#" + val).is("select")) { + $("select[id=" + val + "]").prop('disabled', false); + } else if ($("#" + val).is("input")) { + $("input[id=" + val + "]").prop('disabled', false); + } + }); + } + } + $(".submitStepForm").click(function(){ var url = $(this).attr('href'); var $form = $('#step_form').attr('action', url); @@ -346,7 +360,7 @@

    {% trans "workflow.step.saveplan.bysample.fields.sampleSets.label" %}: {{hel .attr("name","plan_session_key") .val("{{plan_session_key}}") .appendTo($form); - + check_lock_assay_params(); $form.submit(); return false; }); diff --git a/dbReports/iondb/templates/rundb/plan/page_plan/page_plan_application.html b/dbReports/iondb/templates/rundb/plan/page_plan/page_plan_application.html index f784042b..2f0c5b2a 100644 --- a/dbReports/iondb/templates/rundb/plan/page_plan/page_plan_application.html +++ b/dbReports/iondb/templates/rundb/plan/page_plan/page_plan_application.html @@ -4,6 +4,8 @@ {% block main-title %}{% trans "workflow.step.application.subtitle" %}{% endblock main-title %} {% block page-plan-content %} +{% with lockAssayParams=helper.getStepDict.Kits.savedObjects.meta.lockAssayParams %} +

    {% trans "workflow.step.application.fields.applicationGroup.label" %}

    @@ -12,12 +14,12 @@

    {% trans "workflow.step.application.fields.applicationGroup.label" %}

    {% for application in step.prepopulatedFields.applicationGroups %} {% if application.name == step.savedFields.applicationGroupName %} {% else %} {% endif %} @@ -73,7 +75,8 @@

    Template Preparation Instrument

    {% for key, value in step.validationErrors.items %}

    {{value}}

    {% endfor %} -
    +
    +{% endwith %} {% endblock page-plan-content %} {% block summary-table %} @@ -87,6 +90,11 @@

    {{value}}

    updateRuntypeFromApplication = function(applicationId, selectedRuntypeId) { var runTypeIds = applicationToRuntype[applicationId]; $('.runTypeOptionsContent').empty(); + var lockAssayParams = $('input[name = "lockAssayParams"]').val(); + if (lockAssayParams){ + lockAssayParams = $('input[name = "lockAssayParams"]').val().split(","); + } + $.each(runTypeIds, function(indexInArray, valueOfElement){ var inputHolder = $('